diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-04-16 22:21:02 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-04-18 19:45:04 +0800 |
commit | 25744056993878392b67796286b4b41fda3489f5 (patch) | |
tree | 3222ea03ddba85ee95b4f781ced470383660a37f /packages/0x.js/test/expiration_watcher_test.ts | |
parent | 3ba78553f01d79e26fb5c95040b64a86a7763b86 (diff) | |
download | dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar.gz dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar.bz2 dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar.lz dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar.xz dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.tar.zst dexon-sol-tools-25744056993878392b67796286b4b41fda3489f5.zip |
Fix expiration watcher comparator
Diffstat (limited to 'packages/0x.js/test/expiration_watcher_test.ts')
-rw-r--r-- | packages/0x.js/test/expiration_watcher_test.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/0x.js/test/expiration_watcher_test.ts b/packages/0x.js/test/expiration_watcher_test.ts index 29b111fa3..1b022539a 100644 --- a/packages/0x.js/test/expiration_watcher_test.ts +++ b/packages/0x.js/test/expiration_watcher_test.ts @@ -153,4 +153,43 @@ describe('ExpirationWatcher', () => { timer.tick(order2Lifetime * 1000); })().catch(done); }); + it('emits events in correct order when expirations are equal', (done: DoneCallback) => { + (async () => { + const order1Lifetime = 60; + const order2Lifetime = 60; + const order1ExpirationUnixTimestampSec = currentUnixTimestampSec.plus(order1Lifetime); + const order2ExpirationUnixTimestampSec = currentUnixTimestampSec.plus(order2Lifetime); + const signedOrder1 = await fillScenarios.createFillableSignedOrderAsync( + makerTokenAddress, + takerTokenAddress, + makerAddress, + takerAddress, + fillableAmount, + order1ExpirationUnixTimestampSec, + ); + const signedOrder2 = await fillScenarios.createFillableSignedOrderAsync( + makerTokenAddress, + takerTokenAddress, + makerAddress, + takerAddress, + fillableAmount, + order2ExpirationUnixTimestampSec, + ); + const orderHash1 = ZeroEx.getOrderHashHex(signedOrder1); + const orderHash2 = ZeroEx.getOrderHashHex(signedOrder2); + expirationWatcher.addOrder(orderHash1, signedOrder1.expirationUnixTimestampSec.times(1000)); + expirationWatcher.addOrder(orderHash2, signedOrder2.expirationUnixTimestampSec.times(1000)); + const expirationOrder = orderHash1 < orderHash2 ? [orderHash1, orderHash2] : [orderHash2, orderHash1]; + const expectToBeCalledOnce = false; + const callbackAsync = reportNoErrorCallbackErrors(done, expectToBeCalledOnce)((hash: string) => { + const orderHash = expirationOrder.shift(); + expect(hash).to.be.equal(orderHash); + if (_.isEmpty(expirationOrder)) { + done(); + } + }); + expirationWatcher.subscribe(callbackAsync); + timer.tick(order2Lifetime * 1000); + })().catch(done); + }); }); |