From 3186b24a664eecfd1ed75c11f2ec5b2991314af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20L=C3=B3pez=20Pardo?= Date: Fri, 25 Oct 2013 14:59:07 +0200 Subject: [PATCH] add acceptance tests for mock clock with date --- spec/core/ClockSpec.js | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/spec/core/ClockSpec.js b/spec/core/ClockSpec.js index c49a25b7..a742044f 100644 --- a/spec/core/ClockSpec.js +++ b/spec/core/ClockSpec.js @@ -361,4 +361,73 @@ describe("Clock (acceptance)", function() { clock.clearInterval(123) }).not.toThrow(); }); + + it("does not mock the Date object when installing without parameters", function() { + var delayedFunctionScheduler = new j$.DelayedFunctionScheduler(), + global = {Date: Date}, + mockDate = new j$.MockDate(global), + clock = new j$.Clock({setTimeout: setTimeout}, delayedFunctionScheduler, mockDate); + + clock.install(); + + expect(global.Date).toEqual(Date); + + var now = global.Date.now(); + + clock.tick(50); + + expect(global.Date.now() - now).not.toEqual(50); + }); + + it("mocks the Date object and sets it to current time when installing with true parameter", function() { + var delayedFunctionScheduler = new j$.DelayedFunctionScheduler(), + global = {Date: Date}, + mockDate = new j$.MockDate(global), + clock = new j$.Clock({setTimeout: setTimeout}, delayedFunctionScheduler, mockDate); + + clock.install(true); + + var now = global.Date.now(); + + clock.tick(50); + + expect(global.Date.now() - now).toEqual(50); + + var timeoutDate = 0; + clock.setTimeout(function() { + timeoutDate = global.Date.now(); + }, 100); + + clock.tick(100); + + expect(timeoutDate - now).toEqual(150); + }); + + it("mocks the Date object and sets it to a given time when installing with a Date parameter", function() { + var delayedFunctionScheduler = new j$.DelayedFunctionScheduler(), + global = {Date: Date}, + mockDate = new j$.MockDate(global), + clock = new j$.Clock({setTimeout: setTimeout}, delayedFunctionScheduler, mockDate), + baseTime = new Date(2013, 9, 23); + + + clock.install(baseTime); + + var now = global.Date.now(); + + expect(now).toEqual(baseTime.getTime()); + + clock.tick(50); + + expect(global.Date.now()).toEqual(baseTime.getTime() + 50); + + var timeoutDate = 0; + clock.setTimeout(function() { + timeoutDate = global.Date.now(); + }, 100); + + clock.tick(100); + + expect(timeoutDate).toEqual(baseTime.getTime() + 150); + }); });