Skip to content

Commit

Permalink
Added time helper tests. (#1521)
Browse files Browse the repository at this point in the history
* Added time tests.

* Minor improvements.
  • Loading branch information
nventuro authored Nov 27, 2018
1 parent c2de8ff commit 6407d78
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 1 deletion.
68 changes: 68 additions & 0 deletions test/helpers/test/time.test.js
Original file line number Diff line number Diff line change
@@ -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);
});
});
});
4 changes: 3 additions & 1 deletion test/helpers/time.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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);
}
Expand Down

0 comments on commit 6407d78

Please sign in to comment.