mancala/apps/backend/tests/game/GameClockScheduler.test.ts

23 lines
875 B
TypeScript
Raw Normal View History

import { GameClockScheduler } from "../../src/game/GameClockScheduler";
describe("GameClockScheduler", () => {
beforeEach(() => jest.useFakeTimers());
afterEach(() => jest.useRealTimers());
it("ends games out of time on every interval until stopped", () => {
const gameManager = { endGamesOutOfTime: jest.fn() };
const scheduler = new GameClockScheduler(gameManager, 1_000);
scheduler.start();
scheduler.start(); // starting twice does not run it twice
jest.advanceTimersByTime(999);
expect(gameManager.endGamesOutOfTime).not.toHaveBeenCalled();
jest.advanceTimersByTime(2_001);
expect(gameManager.endGamesOutOfTime).toHaveBeenCalledTimes(3);
scheduler.stop();
jest.advanceTimersByTime(10_000);
expect(gameManager.endGamesOutOfTime).toHaveBeenCalledTimes(3);
});
});