@@ -25,15 +25,15 @@ jest.mock('../common/generated', () => {
2525
2626import { VoidSigner } from '@ethersproject/abstract-signer'
2727import { AppDataInfo , LimitOrderParameters } from './types'
28- import { SupportedChainId } from '../common'
28+ import { SupportedChainId , WRAPPED_NATIVE_CURRENCIES } from '../common'
2929import { OrderBookApi , OrderKind } from '../order-book'
3030import { postOnChainTrade } from './postOnChainTrade'
3131
3232const defaultOrderParams : LimitOrderParameters = {
3333 chainId : SupportedChainId . GNOSIS_CHAIN ,
3434 signer : '1bb337bafb276f779c3035874b8914e4b851bb989dbb34e776397076576f3804' ,
3535 appCode : '0x007' ,
36- sellToken : '0xfff9976782d46cc05630d1f6ebab18b2324d6b14 ' ,
36+ sellToken : '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE ' ,
3737 sellTokenDecimals : 18 ,
3838 buyToken : '0x0625afb445c3b6b7b929342a04a22599fd5dbb59' ,
3939 buyTokenDecimals : 18 ,
@@ -47,8 +47,12 @@ const defaultOrderParams: LimitOrderParameters = {
4747
4848const account = '0x21c3de23d98caddc406e3d31b25e807addf33333'
4949const signer = new VoidSigner ( account )
50+
51+ const sendTransactionMock = jest . fn ( ) . mockResolvedValue ( { txHash : '0xccdd11' , orderId : '0xabc22' } )
5052signer . getChainId = jest . fn ( ) . mockResolvedValue ( SupportedChainId . GNOSIS_CHAIN )
53+ signer . sendTransaction = sendTransactionMock
5154
55+ const callData = '0x123456'
5256const currentTimestamp = 1487076708000
5357
5458const uploadAppDataMock = jest . fn ( )
@@ -65,6 +69,9 @@ const ethFlowContractMock = {
6569 createOrder : jest . fn ( ) ,
6670 } ,
6771 createOrder : jest . fn ( ) ,
72+ interface : {
73+ encodeFunctionData : jest . fn ( ) . mockReturnValue ( callData ) ,
74+ } ,
6875}
6976
7077describe ( 'postOnChainTrade' , ( ) => {
@@ -76,7 +83,6 @@ describe('postOnChainTrade', () => {
7683 ethFlowContractFactoryMock . mockReturnValue ( ethFlowContractMock )
7784 uploadAppDataMock . mockResolvedValue ( undefined )
7885 ethFlowContractMock . estimateGas . createOrder . mockResolvedValue ( { toHexString : ( ) => '0x1' } )
79- ethFlowContractMock . createOrder . mockResolvedValue ( { hash : '0x000cc' } )
8086
8187 Date . now = jest . fn ( ( ) => currentTimestamp )
8288 } )
@@ -85,7 +91,8 @@ describe('postOnChainTrade', () => {
8591 uploadAppDataMock . mockReset ( )
8692 ethFlowContractFactoryMock . mockReset ( )
8793 ethFlowContractMock . estimateGas . createOrder . mockReset ( )
88- ethFlowContractMock . createOrder . mockReset ( )
94+ ethFlowContractMock . interface . encodeFunctionData . mockReset ( )
95+ sendTransactionMock . mockReset ( )
8996 } )
9097
9198 it ( 'Should call checkEthFlowOrderExists if it is set' , async ( ) => {
@@ -107,19 +114,19 @@ describe('postOnChainTrade', () => {
107114
108115 await postOnChainTrade ( orderBookApiMock , signer , appDataMock , defaultOrderParams )
109116
110- const call = ethFlowContractMock . createOrder . mock . calls [ 0 ] [ 1 ]
117+ const call = sendTransactionMock . mock . calls [ 0 ] [ 0 ]
111118
112- expect ( call . gasLimit ) . toBe ( BigInt ( 180000 ) ) // 150000 by default + 20%
119+ expect ( call . gasLimit ) . toBe ( BigInt ( 180000 ) . toString ( ) ) // 150000 by default + 20%
113120 } )
114121
115122 it ( 'Should create an on-chain transaction with all specified parameters' , async ( ) => {
116123 await postOnChainTrade ( orderBookApiMock , signer , appDataMock , defaultOrderParams )
117124
118- expect ( ethFlowContractMock . createOrder ) . toHaveBeenCalledTimes ( 1 )
119- expect ( ethFlowContractMock . createOrder ) . toHaveBeenCalledWith (
125+ expect ( ethFlowContractMock . interface . encodeFunctionData ) . toHaveBeenCalledTimes ( 1 )
126+ expect ( ethFlowContractMock . interface . encodeFunctionData ) . toHaveBeenCalledWith ( 'createOrder' , [
120127 {
121128 appData : appDataMock . appDataKeccak256 ,
122- sellToken : defaultOrderParams . sellToken ,
129+ sellToken : WRAPPED_NATIVE_CURRENCIES [ defaultOrderParams . chainId ] ,
123130 sellAmount : defaultOrderParams . sellAmount ,
124131 sellTokenBalance : 'erc20' ,
125132 buyAmount : '1990000000000000000' , // defaultOrderParams.buyAmount - slippage
@@ -132,7 +139,6 @@ describe('postOnChainTrade', () => {
132139 receiver : account ,
133140 validTo : defaultOrderParams . validTo ! . toString ( ) ,
134141 } ,
135- { value : defaultOrderParams . sellAmount , gasLimit : BigInt ( 1 ) }
136- )
142+ ] )
137143 } )
138144} )
0 commit comments