diff options
author | Fabio Berger <me@fabioberger.com> | 2017-11-14 01:52:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-14 01:52:08 +0800 |
commit | 58a318b754c3d3d854e36f4b56b37f7de8c0913a (patch) | |
tree | d8e3e52fe55e1c3c4e90299708fa8197f9b2002e /packages/0x.js/test/subscription_test.ts | |
parent | a74ec0effa818a86233fe64cb0dad2c61bbb4bb6 (diff) | |
parent | ff07f490025447ff11bbdb68ef46304e981f5696 (diff) | |
download | dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar.gz dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar.bz2 dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar.lz dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar.xz dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.tar.zst dexon-sol-tools-58a318b754c3d3d854e36f4b56b37f7de8c0913a.zip |
Merge pull request #214 from 0xProject/monoRepo
Switch over to Lerna + Yarn Workspaces setup for a mono-repo approach
Diffstat (limited to 'packages/0x.js/test/subscription_test.ts')
-rw-r--r-- | packages/0x.js/test/subscription_test.ts | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/0x.js/test/subscription_test.ts b/packages/0x.js/test/subscription_test.ts new file mode 100644 index 000000000..f69ae0b13 --- /dev/null +++ b/packages/0x.js/test/subscription_test.ts @@ -0,0 +1,95 @@ +import 'mocha'; +import * as _ from 'lodash'; +import * as chai from 'chai'; +import * as Sinon from 'sinon'; +import {chaiSetup} from './utils/chai_setup'; +import * as Web3 from 'web3'; +import BigNumber from 'bignumber.js'; +import promisify = require('es6-promisify'); +import {web3Factory} from './utils/web3_factory'; +import { + ZeroEx, + ZeroExError, + Token, + ApprovalContractEventArgs, + TokenEvents, + DecodedLogEvent, +} from '../src'; +import {BlockchainLifecycle} from './utils/blockchain_lifecycle'; +import {TokenUtils} from './utils/token_utils'; +import {DoneCallback, BlockParamLiteral} from '../src/types'; + +chaiSetup.configure(); +const expect = chai.expect; +const blockchainLifecycle = new BlockchainLifecycle(); + +describe('SubscriptionTest', () => { + let web3: Web3; + let zeroEx: ZeroEx; + let userAddresses: string[]; + let tokens: Token[]; + let tokenUtils: TokenUtils; + let coinbase: string; + let addressWithoutFunds: string; + before(async () => { + web3 = web3Factory.create(); + zeroEx = new ZeroEx(web3.currentProvider); + userAddresses = await zeroEx.getAvailableAddressesAsync(); + tokens = await zeroEx.tokenRegistry.getTokensAsync(); + tokenUtils = new TokenUtils(tokens); + coinbase = userAddresses[0]; + addressWithoutFunds = userAddresses[1]; + }); + beforeEach(async () => { + await blockchainLifecycle.startAsync(); + }); + afterEach(async () => { + await blockchainLifecycle.revertAsync(); + }); + describe('#subscribe', () => { + const indexFilterValues = {}; + const shouldThrowOnInsufficientBalanceOrAllowance = true; + let tokenAddress: string; + const transferAmount = new BigNumber(42); + const allowanceAmount = new BigNumber(42); + let stubs: Sinon.SinonStub[] = []; + before(() => { + const token = tokens[0]; + tokenAddress = token.address; + }); + afterEach(() => { + zeroEx.token.unsubscribeAll(); + _.each(stubs, s => s.restore()); + stubs = []; + }); + it('Should receive the Error when an error occurs', (done: DoneCallback) => { + (async () => { + const callback = (err: Error, logEvent: DecodedLogEvent<ApprovalContractEventArgs>) => { + expect(err).to.not.be.null(); + expect(logEvent).to.be.undefined(); + done(); + }; + stubs = [ + Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync') + .throws('JSON RPC error'), + ]; + zeroEx.token.subscribe( + tokenAddress, TokenEvents.Approval, indexFilterValues, callback); + await zeroEx.token.setAllowanceAsync(tokenAddress, coinbase, addressWithoutFunds, allowanceAmount); + })().catch(done); + }); + it('Should allow unsubscribeAll to be called successfully after an error', (done: DoneCallback) => { + (async () => { + const callback = (err: Error, logEvent: DecodedLogEvent<ApprovalContractEventArgs>) => _.noop; + zeroEx.token.subscribe( + tokenAddress, TokenEvents.Approval, indexFilterValues, callback); + stubs = [ + Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync') + .throws('JSON RPC error'), + ]; + zeroEx.token.unsubscribeAll(); + done(); + })().catch(done); + }); + }); +}); |