diff options
Diffstat (limited to 'packages/0x.js/test/subscription_test.ts')
-rw-r--r-- | packages/0x.js/test/subscription_test.ts | 73 |
1 files changed, 51 insertions, 22 deletions
diff --git a/packages/0x.js/test/subscription_test.ts b/packages/0x.js/test/subscription_test.ts index f69ae0b13..e3b15808b 100644 --- a/packages/0x.js/test/subscription_test.ts +++ b/packages/0x.js/test/subscription_test.ts @@ -1,23 +1,27 @@ -import 'mocha'; -import * as _ from 'lodash'; +import BigNumber from 'bignumber.js'; import * as chai from 'chai'; +import promisify = require('es6-promisify'); +import * as _ from 'lodash'; +import 'mocha'; 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, + Token, + TokenEvents, + ZeroEx, + ZeroExError, } from '../src'; +import {BlockParamLiteral, DoneCallback} from '../src/types'; + import {BlockchainLifecycle} from './utils/blockchain_lifecycle'; +import {chaiSetup} from './utils/chai_setup'; +import {constants} from './utils/constants'; +import {reportCallbackErrors} from './utils/report_callback_errors'; import {TokenUtils} from './utils/token_utils'; -import {DoneCallback, BlockParamLiteral} from '../src/types'; +import {web3Factory} from './utils/web3_factory'; chaiSetup.configure(); const expect = chai.expect; @@ -31,9 +35,12 @@ describe('SubscriptionTest', () => { let tokenUtils: TokenUtils; let coinbase: string; let addressWithoutFunds: string; + const config = { + networkId: constants.TESTRPC_NETWORK_ID, + }; before(async () => { web3 = web3Factory.create(); - zeroEx = new ZeroEx(web3.currentProvider); + zeroEx = new ZeroEx(web3.currentProvider, config); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); tokenUtils = new TokenUtils(tokens); @@ -62,22 +69,44 @@ describe('SubscriptionTest', () => { _.each(stubs, s => s.restore()); stubs = []; }); - it('Should receive the Error when an error occurs', (done: DoneCallback) => { + it('Should receive the Error when an error occurs while fetching the block', (done: DoneCallback) => { (async () => { - const callback = (err: Error, logEvent: DecodedLogEvent<ApprovalContractEventArgs>) => { - expect(err).to.not.be.null(); - expect(logEvent).to.be.undefined(); - done(); - }; + const errMsg = 'Error fetching block'; + const callback = reportCallbackErrors(done)( + (err: Error, logEvent: DecodedLogEvent<ApprovalContractEventArgs>) => { + expect(err.message).to.be.equal(errMsg); + expect(logEvent).to.be.undefined(); + done(); + }, + ); stubs = [ Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync') - .throws('JSON RPC error'), + .throws(new Error(errMsg)), + ]; + zeroEx.token.subscribe( + tokenAddress, TokenEvents.Approval, indexFilterValues, callback); + await zeroEx.token.setAllowanceAsync(tokenAddress, coinbase, addressWithoutFunds, allowanceAmount); + })().catch(done); + }); + it('Should receive the Error when an error occurs while reconciling the new block', (done: DoneCallback) => { + (async () => { + const errMsg = 'Error fetching logs'; + const callback = reportCallbackErrors(done)( + (err: Error, logEvent: DecodedLogEvent<ApprovalContractEventArgs>) => { + expect(err.message).to.be.equal(errMsg); + expect(logEvent).to.be.undefined(); + done(); + }, + ); + stubs = [ + Sinon.stub((zeroEx as any)._web3Wrapper, 'getLogsAsync') + .throws(new Error(errMsg)), ]; 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; @@ -85,11 +114,11 @@ describe('SubscriptionTest', () => { tokenAddress, TokenEvents.Approval, indexFilterValues, callback); stubs = [ Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync') - .throws('JSON RPC error'), + .throws(new Error('JSON RPC error')), ]; zeroEx.token.unsubscribeAll(); done(); })().catch(done); - }); + }); }); }); |