aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils/increase_time.ts
diff options
context:
space:
mode:
authorAlex Browne <stephenalexbrowne@gmail.com>2018-06-05 08:51:50 +0800
committerAlex Browne <stephenalexbrowne@gmail.com>2018-06-07 03:40:30 +0800
commit577a8dd005715ba0fd22a5118d99ccc87af0782c (patch)
treeb960bcdfd4219c7882407c37cd723dfac46a87b7 /packages/contracts/src/utils/increase_time.ts
parent5900899c0195a851c8d20ca0d4ad85dbbf4c100f (diff)
downloaddexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar.gz
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar.bz2
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar.lz
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar.xz
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.tar.zst
dexon-sol-tools-577a8dd005715ba0fd22a5118d99ccc87af0782c.zip
Fix some more test cases, especially those that call increaseTime
Diffstat (limited to 'packages/contracts/src/utils/increase_time.ts')
-rw-r--r--packages/contracts/src/utils/increase_time.ts26
1 files changed, 26 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..726a759f3
--- /dev/null
+++ b/packages/contracts/src/utils/increase_time.ts
@@ -0,0 +1,26 @@
+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.
+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;
+}