aboutsummaryrefslogtreecommitdiffstats
path: root/packages/0x.js
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-03-22 20:00:41 +0800
committerFabio Berger <me@fabioberger.com>2018-03-22 20:00:41 +0800
commitbeb483ea85ca0df707e81883d612125be1968389 (patch)
tree9b9a043b2225cb980fa04d0be8a8040147a8b5df /packages/0x.js
parent46b7fecafe283e814e2088373ec857747e4cf314 (diff)
parent8478dc8d6d05efcdeac6653872f35149f3c9589c (diff)
downloaddexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar.gz
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar.bz2
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar.lz
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar.xz
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.tar.zst
dexon-sol-tools-beb483ea85ca0df707e81883d612125be1968389.zip
Merge branch 'development' into addExtraDocs
* development: Change blockchain prop to not optional Other style changes Updated padding and colors Refactor TokenState type Fix a bug causing fillOrdersUpTo validation to fail because of some extra orders being passed Implement initial wallet interface # Conflicts: # packages/react-shared/CHANGELOG.md # packages/website/ts/types.ts
Diffstat (limited to 'packages/0x.js')
-rw-r--r--packages/0x.js/CHANGELOG.md1
-rw-r--r--packages/0x.js/src/contract_wrappers/exchange_wrapper.ts3
-rw-r--r--packages/0x.js/test/exchange_wrapper_test.ts13
3 files changed, 17 insertions, 0 deletions
diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md
index 7ce7126cb..fa3b3db91 100644
--- a/packages/0x.js/CHANGELOG.md
+++ b/packages/0x.js/CHANGELOG.md
@@ -3,6 +3,7 @@
## v0.34.0 - _TBD_
* Update Kovan EtherToken artifact address to match TokenRegistry.
+ * Fix the bug causing `zeroEx.exchange.fillOrdersUpToAsync` validation to fail if there were some extra orders passed (#470)
## v0.33.2 - _March 18, 2018_
diff --git a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts
index 6414985e6..124750d81 100644
--- a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts
+++ b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts
@@ -281,6 +281,9 @@ export class ExchangeWrapper extends ContractWrapper {
zrxTokenAddress,
);
filledTakerTokenAmount = filledTakerTokenAmount.plus(singleFilledTakerTokenAmount);
+ if (filledTakerTokenAmount.eq(fillTakerTokenAmount)) {
+ break;
+ }
}
}
diff --git a/packages/0x.js/test/exchange_wrapper_test.ts b/packages/0x.js/test/exchange_wrapper_test.ts
index 0a4ea608d..cfc390bae 100644
--- a/packages/0x.js/test/exchange_wrapper_test.ts
+++ b/packages/0x.js/test/exchange_wrapper_test.ts
@@ -596,6 +596,19 @@ describe('ExchangeWrapper', () => {
const remainingFillAmount = fillableAmount.minus(1);
expect(anotherFilledAmount).to.be.bignumber.equal(remainingFillAmount);
});
+ it('should successfully fill up to specified amount and leave the rest of the orders untouched', async () => {
+ const txHash = await zeroEx.exchange.fillOrdersUpToAsync(
+ signedOrders,
+ fillableAmount,
+ shouldThrowOnInsufficientBalanceOrAllowance,
+ takerAddress,
+ );
+ await zeroEx.awaitTransactionMinedAsync(txHash);
+ const filledAmount = await zeroEx.exchange.getFilledTakerAmountAsync(signedOrderHashHex);
+ const zeroAmount = await zeroEx.exchange.getFilledTakerAmountAsync(anotherOrderHashHex);
+ expect(filledAmount).to.be.bignumber.equal(fillableAmount);
+ expect(zeroAmount).to.be.bignumber.equal(0);
+ });
it('should successfully fill up to specified amount even if filling all orders would fail', async () => {
const missingBalance = new BigNumber(1); // User will still have enough balance to fill up to 9,
// but won't have 10 to fully fill all orders in a batch.