* Removes references to tslint in contract-wrappers which are obsoleted since https://github.com/0xProject/protocol/pull/584 * Remove tslint references in contracts/utils and test utils obsoleted by https://github.com/0xProject/protocol/pull/589 * Remove tslint references in contracts/zeroex and test utils obsoleted by https://github.com/0xProject/protocol/pull/587 * Remove other obsoleted tslint references * Update contributing guidelines with eslint * Fix prettier errors
103 lines
3.8 KiB
TypeScript
103 lines
3.8 KiB
TypeScript
import * as _ from 'lodash';
|
|
import * as process from 'process';
|
|
|
|
import { expect } from '../src/chai_setup';
|
|
import { constants } from '../src/constants';
|
|
import { blockchainTests, describe } from '../src/mocha_blockchain';
|
|
import { append } from './subtests/mocha_blockchain_1';
|
|
|
|
blockchainTests('mocha blockchain extensions', env => {
|
|
describe('blockchainTests()', () => {
|
|
it('passes a valid environment object', () => {
|
|
expect(env.blockchainLifecycle).to.exist('');
|
|
expect(env.provider).to.exist('');
|
|
expect(env.txDefaults).to.exist('');
|
|
expect(env.web3Wrapper).to.exist('');
|
|
expect(typeof env.getChainIdAsync).to.eq('function');
|
|
expect(typeof env.getAccountAddressesAsync).to.eq('function');
|
|
});
|
|
|
|
it('initializes the test environment', async () => {
|
|
expect(await env.getChainIdAsync()).to.eq(constants.TESTRPC_CHAIN_ID);
|
|
expect(await env.getAccountAddressesAsync()).to.be.not.empty('');
|
|
});
|
|
|
|
describe('modifiers', () => {
|
|
blockchainTests.skip('skip', () => {
|
|
it('does not execute this test', () => {
|
|
expect.fail();
|
|
});
|
|
});
|
|
|
|
blockchainTests('only', () => {
|
|
it.skip("can't test `only` :-(", () => {
|
|
// no-op.
|
|
});
|
|
});
|
|
|
|
blockchainTests.optional('optional', () => {
|
|
it('only runs this with `TEST_ALL` environment flag set', () => {
|
|
expect(process.env.TEST_ALL).to.be.ok('');
|
|
});
|
|
});
|
|
|
|
blockchainTests.resets('resets', () => {
|
|
const originalBlockhainLifecycle = env.blockchainLifecycle;
|
|
const blockchainLifecycleCalls = [] as string[];
|
|
|
|
before(() => {
|
|
// Replace `blockchainLifecycle` with a hooked version.
|
|
env.blockchainLifecycle = createHookedObject(
|
|
originalBlockhainLifecycle,
|
|
methodName => blockchainLifecycleCalls.push(methodName),
|
|
['startAsync', 'revertAsync'],
|
|
);
|
|
});
|
|
|
|
after(() => {
|
|
// Undo the hook.
|
|
env.blockchainLifecycle = originalBlockhainLifecycle;
|
|
});
|
|
|
|
it('calls `blockchainLifecycle.startAsync()` before this test', () => {
|
|
expect(blockchainLifecycleCalls).to.eql(['startAsync']);
|
|
});
|
|
|
|
it('calls `blockchainLifecycle.revertAsync()` after the last test', () => {
|
|
expect(blockchainLifecycleCalls).to.eql(['startAsync', 'revertAsync', 'startAsync']);
|
|
});
|
|
});
|
|
});
|
|
|
|
blockchainTests('nested tests', nestedEnv => {
|
|
it('shares the same environment object', () => {
|
|
expect(nestedEnv).to.eq(env);
|
|
});
|
|
});
|
|
|
|
describe('subtests', () => {
|
|
append(env);
|
|
});
|
|
});
|
|
|
|
describe('describe extensions', () => {
|
|
describe('modifiers', () => {
|
|
describe.optional('optional', () => {
|
|
it('only runs this with `TEST_ALL` environment flag set', () => {
|
|
expect(process.env.TEST_ALL).to.be.ok('');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
function createHookedObject(obj: any, handler: (name: string) => void, methods: string[]): any {
|
|
const hookedMethods = _.map(methods, methodName => {
|
|
return function (this: any, ...args: any[]): any {
|
|
handler(methodName);
|
|
return obj[methodName].call(this, ...args);
|
|
};
|
|
});
|
|
return _.assign(_.clone(obj), _.zipObject(methods, hookedMethods));
|
|
}
|