diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-10-12 22:01:55 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-10-12 22:01:55 +0800 |
commit | d114613384599f69c6fe10bb3172ad9be7d086f3 (patch) | |
tree | b77e9197c336b818bc785f1f377b5f91f0f8114a /test | |
parent | c23ea1e688f68f7aeaf24e562d44a0761ab35f7d (diff) | |
download | dexon-0x-contracts-d114613384599f69c6fe10bb3172ad9be7d086f3.tar.gz dexon-0x-contracts-d114613384599f69c6fe10bb3172ad9be7d086f3.tar.zst dexon-0x-contracts-d114613384599f69c6fe10bb3172ad9be7d086f3.zip |
Add a regression test
Diffstat (limited to 'test')
-rw-r--r-- | test/order_validation_test.ts | 36 | ||||
-rw-r--r-- | test/utils/fill_scenarios.ts | 2 |
2 files changed, 37 insertions, 1 deletions
diff --git a/test/order_validation_test.ts b/test/order_validation_test.ts index 6f9388a69..742739aaa 100644 --- a/test/order_validation_test.ts +++ b/test/order_validation_test.ts @@ -257,5 +257,41 @@ describe('OrderValidation', () => { ), ).to.be.true(); }); + it('should call exchangeTransferSimulator.transferFrom with correct values for an open order', async () => { + const makerFee = new BigNumber(2); + const takerFee = new BigNumber(2); + const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync( + makerTokenAddress, takerTokenAddress, makerFee, takerFee, + makerAddress, ZeroEx.NULL_ADDRESS, fillableAmount, feeRecipient, + ); + await orderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync( + exchangeTransferSimulator, signedOrder, fillableAmount, takerAddress, zrxTokenAddress, + ); + expect(transferFromAsync.callCount).to.be.equal(4); + expect( + transferFromAsync.getCall(0).calledWith( + makerTokenAddress, makerAddress, takerAddress, bigNumberMatch(fillableAmount), + TradeSide.Maker, TransferType.Trade, + ), + ).to.be.true(); + expect( + transferFromAsync.getCall(1).calledWith( + takerTokenAddress, takerAddress, makerAddress, bigNumberMatch(fillableAmount), + TradeSide.Taker, TransferType.Trade, + ), + ).to.be.true(); + expect( + transferFromAsync.getCall(2).calledWith( + zrxTokenAddress, makerAddress, feeRecipient, bigNumberMatch(makerFee), + TradeSide.Maker, TransferType.Fee, + ), + ).to.be.true(); + expect( + transferFromAsync.getCall(3).calledWith( + zrxTokenAddress, takerAddress, feeRecipient, bigNumberMatch(takerFee), + TradeSide.Taker, TransferType.Fee, + ), + ).to.be.true(); + }); }); }); diff --git a/test/utils/fill_scenarios.ts b/test/utils/fill_scenarios.ts index e305759f6..c399c7bf4 100644 --- a/test/utils/fill_scenarios.ts +++ b/test/utils/fill_scenarios.ts @@ -91,7 +91,7 @@ export class FillScenarios { } private async increaseBalanceAndAllowanceAsync( tokenAddress: string, address: string, amount: BigNumber.BigNumber): Promise<void> { - if (amount.isZero()) { + if (amount.isZero() || address === ZeroEx.NULL_ADDRESS) { return; // noop } await Promise.all([ |