Pārlūkot izejas kodu

Added time helper tests. (#1521)

* Added time tests.

* Minor improvements.
Nicolás Venturo 6 gadi atpakaļ
vecāks
revīzija
6407d7818d
2 mainītis faili ar 71 papildinājumiem un 1 dzēšanām
  1. 68 0
      test/helpers/test/time.test.js
  2. 3 1
      test/helpers/time.js

+ 68 - 0
test/helpers/test/time.test.js

@@ -0,0 +1,68 @@
+const time = require('../time');
+const shouldFail = require('../shouldFail');
+const { advanceBlock } = require('../advanceToBlock');
+
+const BigNumber = web3.BigNumber;
+require('chai')
+  .use(require('chai-bignumber')(BigNumber))
+  .should();
+
+describe('time', function () {
+  const TOLERANCE_SECONDS = 1;
+
+  beforeEach(async function () {
+    await advanceBlock();
+    this.start = await time.latest();
+  });
+
+  describe('increase', function () {
+    it('increases time by a duration', async function () {
+      await time.increase(time.duration.hours(1));
+
+      const end = this.start + time.duration.hours(1);
+      (await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS);
+    });
+
+    it('throws with negative durations', async function () {
+      await shouldFail(time.increase(-1));
+    });
+  });
+
+  describe('increaseTo', function () {
+    it('increases time to a time in the future', async function () {
+      const end = this.start + time.duration.hours(1);
+      await time.increaseTo(end);
+      (await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS);
+    });
+
+    it('throws with a time in the past', async function () {
+      await shouldFail(time.increaseTo(this.start - 30));
+    });
+  });
+
+  describe('duration', function () {
+    it('converts seconds to seconds', function () {
+      time.duration.seconds(1).should.equal(1);
+    });
+
+    it('converts minutes to seconds', function () {
+      time.duration.minutes(1).should.equal(60);
+    });
+
+    it('converts hours to seconds', function () {
+      time.duration.hours(1).should.equal(60 * 60);
+    });
+
+    it('converts days to seconds', function () {
+      time.duration.days(1).should.equal(60 * 60 * 24);
+    });
+
+    it('converts weeks to seconds', function () {
+      time.duration.weeks(1).should.equal(60 * 60 * 24 * 7);
+    });
+
+    it('converts years to seconds', function () {
+      time.duration.years(1).should.equal(60 * 60 * 24 * 365);
+    });
+  });
+});

+ 3 - 1
test/helpers/time.js

@@ -11,6 +11,8 @@ function increase (duration) {
   const id = Date.now();
 
   return new Promise((resolve, reject) => {
+    if (duration < 0) throw Error(`Cannot increase time by a negative amount (${duration})`);
+
     web3.currentProvider.sendAsync({
       jsonrpc: '2.0',
       method: 'evm_increaseTime',
@@ -40,7 +42,7 @@ function increase (duration) {
 async function increaseTo (target) {
   const now = (await latest());
 
-  if (target < now) throw Error(`Cannot increase current time(${now}) to a moment in the past(${target})`);
+  if (target < now) throw Error(`Cannot increase current time (${now}) to a moment in the past (${target})`);
   const diff = target - now;
   return increase(diff);
 }