From 0e262bb8e0f9d4d0ed90818511d8b59b46761b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Mon, 1 Jun 2020 19:51:18 +0100 Subject: [PATCH 1/2] Actually mock date in time-ago tests Co-authored-by: Mu-An Chiou --- test/time-ago.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/test/time-ago.js b/test/time-ago.js index 4f9fafa..a089639 100644 --- a/test/time-ago.js +++ b/test/time-ago.js @@ -1,16 +1,30 @@ suite('time-ago', function() { let dateNow - function freezeTime(date) { - dateNow = Date.now - Date.now = function() { - return date + function freezeTime(expected) { + dateNow = Date + + function MockDate(...args) { + if (args.length) { + return new dateNow(...args) + } + return new dateNow(expected) } + + MockDate.UTC = dateNow.UTC + MockDate.parse = dateNow.parse + MockDate.now = () => expected.getTime() + MockDate.prototype = dateNow.prototype + + // eslint-disable-next-line no-global-assign + Date = MockDate } teardown(function() { if (dateNow) { - Date.now = dateNow + // eslint-disable-next-line no-global-assign + Date = dateNow + dateNow = null } }) From dde1d80cc3d98a35f0e9e058a225dd87c54694dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Mon, 1 Jun 2020 19:53:44 +0100 Subject: [PATCH 2/2] Fix one off error in broken test Co-authored-by: Mu-An Chiou --- test/time-ago.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/time-ago.js b/test/time-ago.js index a089639..7199161 100644 --- a/test/time-ago.js +++ b/test/time-ago.js @@ -75,7 +75,7 @@ suite('time-ago', function() { test('rewrites time-ago datetimes < 18months as "months ago"', function() { freezeTime(new Date(2020, 0, 1)) - const then = new Date(2018, 10, 1).toISOString() + const then = new Date(2018, 9, 1).toISOString() const timeElement = document.createElement('time-ago') timeElement.setAttribute('datetime', then) assert.equal(timeElement.textContent, '15 months ago')