From 8f000384fe2c25665fd0567e5f7678bbb0929009 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Jul 2023 13:29:51 +0100 Subject: [PATCH] Replace sinon fake timers with jest timers (#11275) --- package.json | 1 - test/UserActivity-test.ts | 21 ++++++++----------- .../structures/MessagePanel-test.tsx | 10 ++------- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 44546c535c..f9c022ae29 100644 --- a/package.json +++ b/package.json @@ -143,7 +143,6 @@ "@peculiar/webcrypto": "^1.4.3", "@percy/cli": "^1.11.0", "@percy/cypress": "^3.1.2", - "@sinonjs/fake-timers": "^9.1.2", "@testing-library/cypress": "^9.0.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", diff --git a/test/UserActivity-test.ts b/test/UserActivity-test.ts index 484e90157e..702414d03e 100644 --- a/test/UserActivity-test.ts +++ b/test/UserActivity-test.ts @@ -14,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -import FakeTimers from "@sinonjs/fake-timers"; import EventEmitter from "events"; import UserActivity from "../src/UserActivity"; @@ -33,19 +32,17 @@ describe("UserActivity", function () { let fakeWindow: FakeDomEventEmitter; let fakeDocument: FakeDomEventEmitter & { hasFocus?(): boolean }; let userActivity: UserActivity; - let clock: FakeTimers.InstalledClock; beforeEach(function () { fakeWindow = new FakeDomEventEmitter(); fakeDocument = new FakeDomEventEmitter(); userActivity = new UserActivity(fakeWindow as unknown as Window, fakeDocument as unknown as Document); userActivity.start(); - clock = FakeTimers.install(); + jest.useFakeTimers(); }); afterEach(function () { userActivity.stop(); - clock.uninstall(); }); it("should return the same shared instance", function () { @@ -74,7 +71,7 @@ describe("UserActivity", function () { userActivity.onUserActivity({ type: "event" } as Event); expect(userActivity.userActiveNow()).toBe(true); expect(userActivity.userActiveRecently()).toBe(true); - clock.tick(200); + jest.advanceTimersByTime(200); expect(userActivity.userActiveNow()).toBe(true); expect(userActivity.userActiveRecently()).toBe(true); }); @@ -83,7 +80,7 @@ describe("UserActivity", function () { fakeDocument.hasFocus = jest.fn().mockReturnValue(true); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(10000); + jest.advanceTimersByTime(10000); expect(userActivity.userActiveNow()).toBe(false); }); @@ -91,7 +88,7 @@ describe("UserActivity", function () { fakeDocument.hasFocus = jest.fn().mockReturnValue(true); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(10000); + jest.advanceTimersByTime(10000); expect(userActivity.userActiveRecently()).toBe(true); }); @@ -99,7 +96,7 @@ describe("UserActivity", function () { fakeDocument.hasFocus = jest.fn().mockReturnValue(true); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(10000); + jest.advanceTimersByTime(10000); fakeDocument.hasFocus = jest.fn().mockReturnValue(false); fakeWindow.emit("blur", {}); @@ -111,7 +108,7 @@ describe("UserActivity", function () { fakeDocument.hasFocus = jest.fn().mockReturnValue(true); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(3 * 60 * 1000); + jest.advanceTimersByTime(3 * 60 * 1000); expect(userActivity.userActiveRecently()).toBe(false); }); @@ -120,11 +117,11 @@ describe("UserActivity", function () { fakeDocument.hasFocus = jest.fn().mockReturnValue(true); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(1 * 60 * 1000); + jest.advanceTimersByTime(1 * 60 * 1000); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(1 * 60 * 1000); + jest.advanceTimersByTime(1 * 60 * 1000); userActivity.onUserActivity({ type: "event" } as Event); - clock.tick(1 * 60 * 1000); + jest.advanceTimersByTime(1 * 60 * 1000); expect(userActivity.userActiveRecently()).toBe(true); }); diff --git a/test/components/structures/MessagePanel-test.tsx b/test/components/structures/MessagePanel-test.tsx index 01671fdb01..108ae97211 100644 --- a/test/components/structures/MessagePanel-test.tsx +++ b/test/components/structures/MessagePanel-test.tsx @@ -18,7 +18,6 @@ limitations under the License. import React from "react"; import { EventEmitter } from "events"; import { MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix"; -import FakeTimers from "@sinonjs/fake-timers"; import { render } from "@testing-library/react"; import { Thread } from "matrix-js-sdk/src/models/thread"; @@ -46,7 +45,6 @@ jest.mock("../../../src/utils/beacon", () => ({ const roomId = "!roomId:server_name"; describe("MessagePanel", function () { - let clock: FakeTimers.InstalledClock; const events = mkEvents(); const userId = "@me:here"; const client = getMockClientWithEventEmitter({ @@ -116,10 +114,6 @@ describe("MessagePanel", function () { DMRoomMap.makeShared(client); }); - afterEach(function () { - clock?.uninstall(); - }); - function mkEvents() { const events: MatrixEvent[] = []; const ts0 = Date.now(); @@ -406,7 +400,7 @@ describe("MessagePanel", function () { it("shows a ghost read-marker when the read-marker moves", function () { // fake the clock so that we can test the velocity animation. - clock = FakeTimers.install(); + jest.useFakeTimers(); const { container, rerender } = render(
@@ -447,7 +441,7 @@ describe("MessagePanel", function () { expect(readMarkers[1].previousSibling).toEqual(tiles[6]); // advance the clock, and then let the browser run an animation frame to let the animation start - clock.tick(1500); + jest.advanceTimersByTime(1500); expect(hr.style.opacity).toEqual("0"); });