From ca5f1bef680db56ec2939be100a5b54003d59bcd Mon Sep 17 00:00:00 2001 From: Nick Lincoln Date: Tue, 7 Nov 2017 11:45:21 +0000 Subject: [PATCH] add fake timers to enable timestamp advancing (#108) Signed-off-by: Nick Lincoln --- packages/perishable-network/package.json | 3 ++- packages/perishable-network/test/perishable.js | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/perishable-network/package.json b/packages/perishable-network/package.json index 57da115..a710776 100644 --- a/packages/perishable-network/package.json +++ b/packages/perishable-network/package.json @@ -44,7 +44,8 @@ "license-check": "^1.1.5", "mkdirp": "^0.5.1", "mocha": "^3.2.0", - "moment": "^2.17.1" + "moment": "^2.17.1", + "sinon": "2.3.8" }, "license-check-config": { "src": [ diff --git a/packages/perishable-network/test/perishable.js b/packages/perishable-network/test/perishable.js index 4bd3711..d5e84e8 100644 --- a/packages/perishable-network/test/perishable.js +++ b/packages/perishable-network/test/perishable.js @@ -21,12 +21,14 @@ const BusinessNetworkDefinition = require('composer-common').BusinessNetworkDefi const path = require('path'); require('chai').should(); +let sinon = require('sinon'); const bfs_fs = BrowserFS.BFSRequire('fs'); const NS = 'org.acme.shipping.perishable'; let grower_id = 'farmer@email.com'; let importer_id = 'supermarket@email.com'; let factory; +let clock; describe('Perishable Shipping Network', () => { @@ -60,6 +62,14 @@ describe('Perishable Shipping Network', () => { }); }); + beforeEach(function () { + clock = sinon.useFakeTimers(); + }); + + afterEach(function () { + clock.restore(); + }); + describe('#shipment', () => { it('should receive base price for a shipment within temperature range', () => { @@ -112,14 +122,13 @@ describe('Perishable Shipping Network', () => { const tempReading = factory.newTransaction(NS, 'TemperatureReading'); tempReading.shipment = factory.newRelationship(NS, 'Shipment', 'SHIP_001'); tempReading.centigrade = 4.5; + // advance the javascript clock to create a time-advanced test timestamp + clock.tick(1000000000000000); return businessNetworkConnection.submitTransaction(tempReading) .then(() => { // submit the shipment received const received = factory.newTransaction(NS, 'ShipmentReceived'); received.shipment = factory.newRelationship(NS, 'Shipment', 'SHIP_001'); - const late = new Date(); - late.setDate(late.getDate() + 2); - received.timestamp = late; return businessNetworkConnection.submitTransaction(received); }) .then(() => {