Add fake gas estimate suprovider for tests
This commit is contained in:
@@ -58,7 +58,7 @@ export class Contract implements Web3.ContractInstance {
|
||||
const promise = new Promise(async (resolve, reject) => {
|
||||
const lastArg = args[args.length - 1];
|
||||
let txData: Partial<Web3.TxData> = {};
|
||||
if (this.isTxData(lastArg)) {
|
||||
if (!_.isUndefined(lastArg) && this.isTxData(lastArg)) {
|
||||
txData = args.pop();
|
||||
}
|
||||
// Gas amount sourced with the following priorities:
|
||||
|
||||
@@ -8,4 +8,5 @@ export const constants = {
|
||||
KOVAN_RPC_URL: 'https://kovan.infura.io',
|
||||
ROPSTEN_RPC_URL: 'https://ropsten.infura.io',
|
||||
ZRX_DECIMALS: 18,
|
||||
GAS_ESTIMATE: 500000,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {JSONRPCPayload} from '../types';
|
||||
import {JSONRPCPayload} from '../../../src/types';
|
||||
|
||||
/*
|
||||
* This class implements the web3-provider-engine subprovider interface and returns
|
||||
@@ -0,0 +1,31 @@
|
||||
import {JSONRPCPayload} from '../../../src/types';
|
||||
|
||||
/*
|
||||
* This class implements the web3-provider-engine subprovider interface and returns
|
||||
* the constant gas estimate when queried.
|
||||
* Source: https://github.com/MetaMask/provider-engine/blob/master/subproviders/subprovider.js
|
||||
*/
|
||||
export class FakeGasEstimateProvider {
|
||||
private constantGasAmount: number;
|
||||
constructor(constantGasAmount: number) {
|
||||
this.constantGasAmount = constantGasAmount;
|
||||
}
|
||||
// This method needs to be here to satisfy the interface but linter wants it to be static.
|
||||
// tslint:disable-next-line:prefer-function-over-method
|
||||
public handleRequest(payload: JSONRPCPayload, next: () => void, end: (err: Error|null, result: any) => void) {
|
||||
switch (payload.method) {
|
||||
case 'eth_estimateGas':
|
||||
end(null, this.constantGasAmount);
|
||||
return;
|
||||
|
||||
default:
|
||||
next();
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Required to implement this method despite not needing it for this subprovider
|
||||
// tslint:disable-next-line:prefer-function-over-method
|
||||
public setEngine(engine: any) {
|
||||
// noop
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,8 @@ import * as Web3 from 'web3';
|
||||
import ProviderEngine = require('web3-provider-engine');
|
||||
import RpcSubprovider = require('web3-provider-engine/subproviders/rpc');
|
||||
|
||||
import {EmptyWalletSubProvider} from '../../src/subproviders/empty_wallet_subprovider';
|
||||
import {EmptyWalletSubProvider} from './subproviders/empty_wallet_subprovider';
|
||||
import {FakeGasEstimateProvider} from './subproviders/fake_gas_estimate_subprovider';
|
||||
|
||||
import {constants} from './constants';
|
||||
|
||||
@@ -24,6 +25,7 @@ export const web3Factory = {
|
||||
if (!hasAddresses) {
|
||||
provider.addProvider(new EmptyWalletSubProvider());
|
||||
}
|
||||
provider.addProvider(new FakeGasEstimateProvider(constants.GAS_ESTIMATE));
|
||||
provider.addProvider(new RpcSubprovider({
|
||||
rpcUrl,
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user