Implement zeroEx.awaitTransactionMined
This commit is contained in:
14
src/0x.ts
14
src/0x.ts
@@ -1,5 +1,6 @@
|
||||
import * as _ from 'lodash';
|
||||
import * as BigNumber from 'bignumber.js';
|
||||
import * as Web3 from 'web3';
|
||||
import {SchemaValidator, schemas} from '0x-json-schemas';
|
||||
import {bigNumberConfigs} from './bignumber_config';
|
||||
import * as ethUtil from 'ethereumjs-util';
|
||||
@@ -248,4 +249,17 @@ export class ZeroEx {
|
||||
|
||||
throw new Error(ZeroExError.InvalidSignature);
|
||||
}
|
||||
public async awaitTransactionMined(txHash: string,
|
||||
pollingIntervalMs: number = 500): Promise<Web3.TransactionReceipt> {
|
||||
const txReceiptPromise = new Promise((resolve: (receipt: Web3.TransactionReceipt) => void, reject) => {
|
||||
const intervalId = setInterval(async () => {
|
||||
const transactionReceipt = await this._web3Wrapper.getTransactionReceiptAsync(txHash);
|
||||
if (!_.isNull(transactionReceipt)) {
|
||||
clearInterval(intervalId);
|
||||
resolve(transactionReceipt);
|
||||
}
|
||||
}, pollingIntervalMs);
|
||||
});
|
||||
return txReceiptPromise;
|
||||
}
|
||||
}
|
||||
|
@@ -27,6 +27,10 @@ export class Web3Wrapper {
|
||||
const nodeVersion = await promisify(this.web3.version.getNode)();
|
||||
return nodeVersion;
|
||||
}
|
||||
public async getTransactionReceiptAsync(txHash: string): Promise<Web3.TransactionReceipt> {
|
||||
const transactionReceipt = await promisify(this.web3.eth.getTransactionReceipt)(txHash);
|
||||
return transactionReceipt;
|
||||
}
|
||||
public getCurrentProvider(): Web3.Provider {
|
||||
return this.web3.currentProvider;
|
||||
}
|
||||
|
@@ -205,7 +205,7 @@ describe('ExchangeWrapper', () => {
|
||||
);
|
||||
const txHash = await zeroEx.exchange.fillOrderAsync(
|
||||
signedOrder, fillTakerAmount, shouldThrowOnInsufficientBalanceOrAllowance, takerAddress);
|
||||
await blockchainLifecycle.waitUntilMinedAsync(txHash);
|
||||
await zeroEx.awaitTransactionMined(txHash);
|
||||
expect(await zeroEx.token.getBalanceAsync(zrxTokenAddress, feeRecipient))
|
||||
.to.be.bignumber.equal(makerFee.plus(takerFee));
|
||||
});
|
||||
@@ -246,7 +246,7 @@ describe('ExchangeWrapper', () => {
|
||||
it('should successfully fill multiple orders', async () => {
|
||||
const txHash = await zeroEx.exchange.batchFillOrdersAsync(
|
||||
orderFillBatch, shouldThrowOnInsufficientBalanceOrAllowance, takerAddress);
|
||||
await blockchainLifecycle.waitUntilMinedAsync(txHash);
|
||||
await zeroEx.awaitTransactionMined(txHash);
|
||||
const filledAmount = await zeroEx.exchange.getFilledTakerAmountAsync(signedOrderHashHex);
|
||||
const anotherFilledAmount = await zeroEx.exchange.getFilledTakerAmountAsync(anotherOrderHashHex);
|
||||
expect(filledAmount).to.be.bignumber.equal(fillTakerAmount);
|
||||
@@ -282,7 +282,7 @@ describe('ExchangeWrapper', () => {
|
||||
const txHash = await zeroEx.exchange.fillOrdersUpToAsync(
|
||||
signedOrders, fillUpToAmount, shouldThrowOnInsufficientBalanceOrAllowance, takerAddress,
|
||||
);
|
||||
await blockchainLifecycle.waitUntilMinedAsync(txHash);
|
||||
await zeroEx.awaitTransactionMined(txHash);
|
||||
const filledAmount = await zeroEx.exchange.getFilledTakerAmountAsync(signedOrderHashHex);
|
||||
const anotherFilledAmount = await zeroEx.exchange.getFilledTakerAmountAsync(anotherOrderHashHex);
|
||||
expect(filledAmount).to.be.bignumber.equal(fillableAmount);
|
||||
@@ -316,7 +316,7 @@ describe('ExchangeWrapper', () => {
|
||||
describe('successful cancels', () => {
|
||||
it('should cancel an order', async () => {
|
||||
const txHash = await zeroEx.exchange.cancelOrderAsync(signedOrder, cancelAmount);
|
||||
await blockchainLifecycle.waitUntilMinedAsync(txHash);
|
||||
await zeroEx.awaitTransactionMined(txHash);
|
||||
const cancelledAmount = await zeroEx.exchange.getCanceledTakerAmountAsync(orderHashHex);
|
||||
expect(cancelledAmount).to.be.bignumber.equal(cancelAmount);
|
||||
});
|
||||
|
@@ -17,7 +17,4 @@ export class BlockchainLifecycle {
|
||||
throw new Error(`Snapshot with id #${this.snapshotId} failed to revert`);
|
||||
}
|
||||
}
|
||||
public async waitUntilMinedAsync(txHash: string): Promise<void> {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user