Refactor event subscription tests
This commit is contained in:
		@@ -5,10 +5,11 @@ import * as _ from 'lodash';
 | 
				
			|||||||
import 'mocha';
 | 
					import 'mocha';
 | 
				
			||||||
import * as Sinon from 'sinon';
 | 
					import * as Sinon from 'sinon';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { ApprovalContractEventArgs, ContractWrappers, DecodedLogEvent, Token, TokenEvents } from '../src';
 | 
					import { ContractWrappers, DecodedLogEvent, ERC20TokenApprovalEventArgs, ERC20TokenEvents, Token } from '../src';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { chaiSetup } from './utils/chai_setup';
 | 
					import { chaiSetup } from './utils/chai_setup';
 | 
				
			||||||
import { constants } from './utils/constants';
 | 
					import { constants } from './utils/constants';
 | 
				
			||||||
 | 
					import { tokenUtils } from './utils/token_utils';
 | 
				
			||||||
import { provider, web3Wrapper } from './utils/web3_wrapper';
 | 
					import { provider, web3Wrapper } from './utils/web3_wrapper';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chaiSetup.configure();
 | 
					chaiSetup.configure();
 | 
				
			||||||
@@ -17,7 +18,6 @@ const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
 | 
				
			|||||||
describe('SubscriptionTest', () => {
 | 
					describe('SubscriptionTest', () => {
 | 
				
			||||||
    let contractWrappers: ContractWrappers;
 | 
					    let contractWrappers: ContractWrappers;
 | 
				
			||||||
    let userAddresses: string[];
 | 
					    let userAddresses: string[];
 | 
				
			||||||
    let tokens: Token[];
 | 
					 | 
				
			||||||
    let coinbase: string;
 | 
					    let coinbase: string;
 | 
				
			||||||
    let addressWithoutFunds: string;
 | 
					    let addressWithoutFunds: string;
 | 
				
			||||||
    const config = {
 | 
					    const config = {
 | 
				
			||||||
@@ -26,7 +26,6 @@ describe('SubscriptionTest', () => {
 | 
				
			|||||||
    before(async () => {
 | 
					    before(async () => {
 | 
				
			||||||
        contractWrappers = new ContractWrappers(provider, config);
 | 
					        contractWrappers = new ContractWrappers(provider, config);
 | 
				
			||||||
        userAddresses = await web3Wrapper.getAvailableAddressesAsync();
 | 
					        userAddresses = await web3Wrapper.getAvailableAddressesAsync();
 | 
				
			||||||
        tokens = await contractWrappers.tokenRegistry.getTokensAsync();
 | 
					 | 
				
			||||||
        coinbase = userAddresses[0];
 | 
					        coinbase = userAddresses[0];
 | 
				
			||||||
        addressWithoutFunds = userAddresses[1];
 | 
					        addressWithoutFunds = userAddresses[1];
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
@@ -42,11 +41,11 @@ describe('SubscriptionTest', () => {
 | 
				
			|||||||
        const allowanceAmount = new BigNumber(42);
 | 
					        const allowanceAmount = new BigNumber(42);
 | 
				
			||||||
        let stubs: Sinon.SinonStub[] = [];
 | 
					        let stubs: Sinon.SinonStub[] = [];
 | 
				
			||||||
        before(() => {
 | 
					        before(() => {
 | 
				
			||||||
            const token = tokens[0];
 | 
					            const tokenAddresses = tokenUtils.getDummyERC20TokenAddresses();
 | 
				
			||||||
            tokenAddress = token.address;
 | 
					            tokenAddress = tokenAddresses[0];
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        afterEach(() => {
 | 
					        afterEach(() => {
 | 
				
			||||||
            contractWrappers.token.unsubscribeAll();
 | 
					            contractWrappers.erc20Token.unsubscribeAll();
 | 
				
			||||||
            _.each(stubs, s => s.restore());
 | 
					            _.each(stubs, s => s.restore());
 | 
				
			||||||
            stubs = [];
 | 
					            stubs = [];
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
@@ -55,8 +54,13 @@ describe('SubscriptionTest', () => {
 | 
				
			|||||||
                const errMsg = 'Error fetching block';
 | 
					                const errMsg = 'Error fetching block';
 | 
				
			||||||
                const callback = callbackErrorReporter.assertNodeCallbackError(done, errMsg);
 | 
					                const callback = callbackErrorReporter.assertNodeCallbackError(done, errMsg);
 | 
				
			||||||
                stubs = [Sinon.stub((contractWrappers as any)._web3Wrapper, 'getBlockAsync').throws(new Error(errMsg))];
 | 
					                stubs = [Sinon.stub((contractWrappers as any)._web3Wrapper, 'getBlockAsync').throws(new Error(errMsg))];
 | 
				
			||||||
                contractWrappers.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
 | 
					                contractWrappers.erc20Token.subscribe(
 | 
				
			||||||
                await contractWrappers.token.setAllowanceAsync(
 | 
					                    tokenAddress,
 | 
				
			||||||
 | 
					                    ERC20TokenEvents.Approval,
 | 
				
			||||||
 | 
					                    indexFilterValues,
 | 
				
			||||||
 | 
					                    callback,
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                await contractWrappers.erc20Token.setAllowanceAsync(
 | 
				
			||||||
                    tokenAddress,
 | 
					                    tokenAddress,
 | 
				
			||||||
                    coinbase,
 | 
					                    coinbase,
 | 
				
			||||||
                    addressWithoutFunds,
 | 
					                    addressWithoutFunds,
 | 
				
			||||||
@@ -69,8 +73,13 @@ describe('SubscriptionTest', () => {
 | 
				
			|||||||
                const errMsg = 'Error fetching logs';
 | 
					                const errMsg = 'Error fetching logs';
 | 
				
			||||||
                const callback = callbackErrorReporter.assertNodeCallbackError(done, errMsg);
 | 
					                const callback = callbackErrorReporter.assertNodeCallbackError(done, errMsg);
 | 
				
			||||||
                stubs = [Sinon.stub((contractWrappers as any)._web3Wrapper, 'getLogsAsync').throws(new Error(errMsg))];
 | 
					                stubs = [Sinon.stub((contractWrappers as any)._web3Wrapper, 'getLogsAsync').throws(new Error(errMsg))];
 | 
				
			||||||
                contractWrappers.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
 | 
					                contractWrappers.erc20Token.subscribe(
 | 
				
			||||||
                await contractWrappers.token.setAllowanceAsync(
 | 
					                    tokenAddress,
 | 
				
			||||||
 | 
					                    ERC20TokenEvents.Approval,
 | 
				
			||||||
 | 
					                    indexFilterValues,
 | 
				
			||||||
 | 
					                    callback,
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                await contractWrappers.erc20Token.setAllowanceAsync(
 | 
				
			||||||
                    tokenAddress,
 | 
					                    tokenAddress,
 | 
				
			||||||
                    coinbase,
 | 
					                    coinbase,
 | 
				
			||||||
                    addressWithoutFunds,
 | 
					                    addressWithoutFunds,
 | 
				
			||||||
@@ -80,14 +89,19 @@ describe('SubscriptionTest', () => {
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
        it('Should allow unsubscribeAll to be called successfully after an error', (done: DoneCallback) => {
 | 
					        it('Should allow unsubscribeAll to be called successfully after an error', (done: DoneCallback) => {
 | 
				
			||||||
            (async () => {
 | 
					            (async () => {
 | 
				
			||||||
                const callback = (err: Error | null, logEvent?: DecodedLogEvent<ApprovalContractEventArgs>) => _.noop;
 | 
					                const callback = (err: Error | null, logEvent?: DecodedLogEvent<ERC20TokenApprovalEventArgs>) => _.noop;
 | 
				
			||||||
                contractWrappers.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
 | 
					                contractWrappers.erc20Token.subscribe(
 | 
				
			||||||
 | 
					                    tokenAddress,
 | 
				
			||||||
 | 
					                    ERC20TokenEvents.Approval,
 | 
				
			||||||
 | 
					                    indexFilterValues,
 | 
				
			||||||
 | 
					                    callback,
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
                stubs = [
 | 
					                stubs = [
 | 
				
			||||||
                    Sinon.stub((contractWrappers as any)._web3Wrapper, 'getBlockAsync').throws(
 | 
					                    Sinon.stub((contractWrappers as any)._web3Wrapper, 'getBlockAsync').throws(
 | 
				
			||||||
                        new Error('JSON RPC error'),
 | 
					                        new Error('JSON RPC error'),
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                ];
 | 
					                ];
 | 
				
			||||||
                contractWrappers.token.unsubscribeAll();
 | 
					                contractWrappers.erc20Token.unsubscribeAll();
 | 
				
			||||||
                done();
 | 
					                done();
 | 
				
			||||||
            })().catch(done);
 | 
					            })().catch(done);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user