From 1420680299eb42fbccd63087af268565271c22c5 Mon Sep 17 00:00:00 2001 From: Keenahn Tiberius Jung Date: Mon, 21 Aug 2017 17:12:21 +0800 Subject: [PATCH] feat: makes timekeeper.travel work if currently frozen --- Readme.md | 2 ++ lib/timekeeper.js | 4 ++++ test/timekeeper.test.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/Readme.md b/Readme.md index 8a5ca8c..8f0de8c 100644 --- a/Readme.md +++ b/Readme.md @@ -61,6 +61,8 @@ setTimeout(function() { }, 500); ``` +Note: If traveling when time is frozen, the time will be frozen to the new traveled time. + ### Reflection: ```js diff --git a/lib/timekeeper.js b/lib/timekeeper.js index 2f3a2a3..3e09026 100644 --- a/lib/timekeeper.js +++ b/lib/timekeeper.js @@ -154,6 +154,10 @@ date = new NativeDate(date); } + if (freeze) { + timekeeper.freeze(date) + } + travel = date.getTime(); started = NativeDate.now(); }; diff --git a/test/timekeeper.test.js b/test/timekeeper.test.js index 96bcfb4..25806ed 100644 --- a/test/timekeeper.test.js +++ b/test/timekeeper.test.js @@ -75,6 +75,36 @@ describe('TimeKeeper', function() { }); }); }); + + describe('when frozen', function() { + beforeEach(function() { + this.time = new Date(1330688329321); + tk.freeze(this.time); + }); + + afterEach(function() { + tk.reset(); + }); + + it('freezes the time create with `new Date` to the supplied one', function(done) { + var newTime = new Date().getTime() + 100 + tk.travel(newTime) + setTimeout(function() { + var date = new Date(); + date.getTime().should.eql(newTime); + done(); + }, 10, this.time); + }); + + it('freezes the time create with `Date#now` to the supplied one', function(done) { + var newTime = new Date().getTime() + 100 + tk.travel(newTime) + setTimeout(function() { + Date.now().should.eql(newTime); + done(); + }, 10, this.time); + }); + }); }); describe('inheritance', function() {