Refactor event subscription tests

This commit is contained in:
Leonid Logvinov
2018-06-27 11:48:39 +03:00
parent 4089ad7b4b
commit 1a1ab5af54

View File

@@ -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);
}); });