Skip to content

Commit b07754a

Browse files
committed
Auto merge of #4398 - Turbo87:sinon-fake-timers, r=Turbo87
Replace `timekeeper` with `@sinonjs/fake-timers` `timekeeper` is not really maintained anymore. ``@sinonjs/fake-timers`` is well maintained and has a few additional nice features.
2 parents 0556c31 + ea66dfc commit b07754a

File tree

7 files changed

+48
-23
lines changed

7 files changed

+48
-23
lines changed

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"@glimmer/tracking": "1.0.4",
6565
"@percy/cli": "1.0.0-beta.71",
6666
"@percy/ember": "3.0.0",
67+
"@sinonjs/fake-timers": "8.1.0",
6768
"@zestia/ember-auto-focus": "4.2.0",
6869
"broccoli-asset-rev": "3.0.0",
6970
"ember-a11y-testing": "5.0.0",
@@ -127,7 +128,6 @@
127128
"qunit": "2.17.2",
128129
"qunit-console-grouper": "0.3.0",
129130
"qunit-dom": "2.0.0",
130-
"timekeeper": "2.2.0",
131131
"webpack": "5.65.0"
132132
},
133133
"resolutions": {

Diff for: tests/components/download-graph-test.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ import { hbs } from 'ember-cli-htmlbars';
88
import { dropTask } from 'ember-concurrency';
99
import window from 'ember-window-mock';
1010
import { setupWindowMock } from 'ember-window-mock/test-support';
11-
import timekeeper from 'timekeeper';
1211

1312
import { setupRenderingTest } from 'cargo/tests/helpers';
1413

1514
import { toChartData } from '../../components/download-graph';
1615
import ChartJsLoader from '../../services/chartjs';
16+
import { setupFakeTimers } from '../helpers/fake-timers';
1717

1818
module('Component | DownloadGraph', function (hooks) {
1919
setupRenderingTest(hooks);
2020
setupWindowMock(hooks);
21+
setupFakeTimers(hooks, '2020-12-30T12:34:56Z');
2122

2223
test('happy path', async function (assert) {
2324
this.data = exampleData();
@@ -81,8 +82,6 @@ module('Component | DownloadGraph', function (hooks) {
8182

8283
module('toChartData()', function () {
8384
test('converts raw download data to Chart.js format', function (assert) {
84-
timekeeper.travel(new Date('2020-12-30T12:34:56Z'));
85-
8685
let data = exampleData();
8786
let result = toChartData(data);
8887
assert.matchJson(result, {

Diff for: tests/helpers/fake-timers.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import FakeTimers from '@sinonjs/fake-timers';
2+
3+
export function setupFakeTimers(hooks, now = '2017-11-20T12:00:00') {
4+
hooks.beforeEach(function () {
5+
this.clock = FakeTimers.install({
6+
now: Date.parse(now),
7+
toFake: ['Date'],
8+
shouldAdvanceTime: true,
9+
});
10+
});
11+
12+
hooks.afterEach(function () {
13+
this.clock?.uninstall();
14+
});
15+
}

Diff for: tests/helpers/setup-mirage.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
11
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
22
import window from 'ember-window-mock';
33
import { setupWindowMock } from 'ember-window-mock/test-support';
4-
import timekeeper from 'timekeeper';
4+
5+
import { setupFakeTimers } from './fake-timers';
56

67
export default function (hooks) {
78
setupMirage(hooks);
89
setupWindowMock(hooks);
10+
setupFakeTimers(hooks, '2017-11-20T12:00:00');
911

1012
// To have deterministic visual tests, the seed has to be constant
1113
hooks.beforeEach(function () {
12-
timekeeper.travel(new Date('2017-11-20T12:00:00'));
13-
1414
this.authenticateAs = user => {
1515
this.server.create('mirage-session', { user });
1616
window.localStorage.setItem('isLoggedIn', '1');
1717
};
1818
});
19-
20-
hooks.afterEach(function () {
21-
timekeeper.reset();
22-
});
2319
}

Diff for: tests/mirage/me/tokens/create-test.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { module, test } from 'qunit';
22

33
import fetch from 'fetch';
4-
import timekeeper from 'timekeeper';
54

65
import { setupTest } from '../../../helpers';
76
import setupMirage from '../../../helpers/setup-mirage';
@@ -11,7 +10,7 @@ module('Mirage | PUT /api/v1/me/tokens', function (hooks) {
1110
setupMirage(hooks);
1211

1312
test('creates a new API token', async function (assert) {
14-
timekeeper.freeze(new Date('2017-11-20T11:23:45Z'));
13+
this.clock.setSystemTime(new Date('2017-11-20T11:23:45Z'));
1514

1615
let user = this.server.create('user');
1716
this.server.create('mirage-session', { user });

Diff for: tests/models/version-test.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import { setupTest } from 'ember-qunit';
22
import { module, test } from 'qunit';
33

44
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
5-
import timekeeper from 'timekeeper';
5+
6+
import { setupFakeTimers } from '../helpers/fake-timers';
67

78
module('Model | Version', function (hooks) {
89
setupTest(hooks);
910
setupMirage(hooks);
11+
setupFakeTimers(hooks);
1012

1113
hooks.beforeEach(function () {
1214
this.store = this.owner.lookup('service:store');
@@ -21,16 +23,16 @@ module('Model | Version', function (hooks) {
2123
let crateRecord = await store.findRecord('crate', crate.name);
2224
let versions = (await crateRecord.versions).toArray();
2325

24-
timekeeper.travel(new Date('2010-06-16T21:40:45Z'));
26+
this.clock.setSystemTime(new Date('2010-06-16T21:40:45Z'));
2527
assert.true(versions[0].isNew);
2628

27-
timekeeper.travel(new Date('2010-06-23T21:40:45Z'));
29+
this.clock.setSystemTime(new Date('2010-06-23T21:40:45Z'));
2830
assert.true(versions[0].isNew);
2931

30-
timekeeper.travel(new Date('2010-06-24T21:40:45Z'));
32+
this.clock.setSystemTime(new Date('2010-06-24T21:40:45Z'));
3133
assert.false(versions[0].isNew);
3234

33-
timekeeper.travel(new Date('2014-06-24T21:40:45Z'));
35+
this.clock.setSystemTime(new Date('2014-06-24T21:40:45Z'));
3436
assert.false(versions[0].isNew);
3537
});
3638

Diff for: yarn.lock

+19-5
Original file line numberDiff line numberDiff line change
@@ -2076,6 +2076,20 @@
20762076
resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c"
20772077
integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw==
20782078

2079+
"@sinonjs/commons@^1.7.0":
2080+
version "1.8.3"
2081+
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
2082+
integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
2083+
dependencies:
2084+
type-detect "4.0.8"
2085+
2086+
"@sinonjs/[email protected]":
2087+
version "8.1.0"
2088+
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
2089+
integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
2090+
dependencies:
2091+
"@sinonjs/commons" "^1.7.0"
2092+
20792093
"@tootallnate/once@1":
20802094
version "1.1.2"
20812095
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
@@ -13713,11 +13727,6 @@ time-zone@^1.0.0:
1371313727
resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d"
1371413728
integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=
1371513729

13716-
13717-
version "2.2.0"
13718-
resolved "https://registry.yarnpkg.com/timekeeper/-/timekeeper-2.2.0.tgz#9645731fce9e3280a18614a57a9d1b72af3ca368"
13719-
integrity sha512-W3AmPTJWZkRwu+iSNxPIsLZ2ByADsOLbbLxe46UJyWj3mlYLlwucKiq+/dPm0l9wTzqoF3/2PH0AGFCebjq23A==
13720-
1372113730
timers-browserify@^2.0.4:
1372213731
version "2.0.12"
1372313732
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
@@ -13944,6 +13953,11 @@ type-check@~0.3.2:
1394413953
dependencies:
1394513954
prelude-ls "~1.1.2"
1394613955

13956+
13957+
version "4.0.8"
13958+
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
13959+
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
13960+
1394713961
type-fest@^0.11.0:
1394813962
version "0.11.0"
1394913963
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"

0 commit comments

Comments
 (0)