diff options
author | Alex Browne <stephenalexbrowne@gmail.com> | 2018-06-07 04:43:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-07 04:43:29 +0800 |
commit | 785b9811f30869f01242ce9ff81c282bf7f5352f (patch) | |
tree | fe1615f0db90f76627bfb88874c19634321105bc /packages/contracts/src/utils/increase_time.ts | |
parent | da3f783a9ff69b059b1a98f502d980660d6bacab (diff) | |
parent | 643c77ded08d3082aff7ae47063d40c9c1fdb677 (diff) | |
download | dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.gz dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.bz2 dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.lz dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.xz dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.zst dexon-0x-contracts-785b9811f30869f01242ce9ff81c282bf7f5352f.zip |
Merge pull request #622 from 0xProject/geth-devnet-rebase-on-v2
Run contract tests against private Geth network
Diffstat (limited to 'packages/contracts/src/utils/increase_time.ts')
-rw-r--r-- | packages/contracts/src/utils/increase_time.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/contracts/src/utils/increase_time.ts b/packages/contracts/src/utils/increase_time.ts new file mode 100644 index 000000000..4565d8dbc --- /dev/null +++ b/packages/contracts/src/utils/increase_time.ts @@ -0,0 +1,31 @@ +import * as _ from 'lodash'; + +import { constants } from './constants'; +import { web3Wrapper } from './web3_wrapper'; + +let firstAccount: string | undefined; + +/** + * Increases time by the given number of seconds and then mines a block so that + * the current block timestamp has the offset applied. + * @param seconds the number of seconds by which to incrase the time offset. + * @returns a new Promise which will resolve with the new total time offset or + * reject if the time could not be increased. + */ +export async function increaseTimeAndMineBlockAsync(seconds: number): Promise<number> { + if (_.isUndefined(firstAccount)) { + const accounts = await web3Wrapper.getAvailableAddressesAsync(); + firstAccount = accounts[0]; + } + + const offset = await web3Wrapper.increaseTimeAsync(seconds); + // Note: we need to send a transaction after increasing time so + // that a block is actually mined. The contract looks at the + // last mined block for the timestamp. + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ from: firstAccount, to: firstAccount, value: 0 }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + + return offset; +} |