Files
Werewolf/spec/unit/server/modules/ServerTimer_Spec.js

55 lines
1.9 KiB
JavaScript

// TODO: clean up these deep relative paths? jsconfig.json is not working...
const LOG_LEVEL = require('../../../../server/config/globals.js').LOG_LEVEL;
const ServerTimer = require('../../../../server/modules/ServerTimer.js');
const logger = require('../../../../server/modules/Logger.js')(LOG_LEVEL.DEBUG);
describe('ServerTimer', () => {
let serverTimer;
it('should run a timer for the specified time', async () => {
serverTimer = new ServerTimer(0, 0.001, 10, logger);
spyOn(global, 'clearTimeout');
await serverTimer.runTimer(false).then(() => {
expect(serverTimer.currentTimeInMillis).toBeLessThanOrEqual(0);
expect(clearTimeout).toHaveBeenCalledWith(serverTimer.ticking);
}).catch((e) => {
fail(e);
});
});
it('should stop the timer', () => {
serverTimer = new ServerTimer(1, 0, 10, logger);
spyOn(global, 'clearTimeout');
serverTimer.runTimer(false).then(() => {
serverTimer.stopTimer();
expect(clearTimeout).toHaveBeenCalledWith(serverTimer.ticking);
}).catch((e) => {
fail(e);
});
});
it('should stop and resume the timer', async () => {
serverTimer = new ServerTimer(0, 1, 10, logger);
spyOn(global, 'clearTimeout');
serverTimer.runTimer(false).then(() => {
fail();
}).catch((e) => {
fail(e);
});
await new Promise(function (resolve) {
setTimeout(function () {
serverTimer.stopTimer();
const timeRemainingWhenStopped = serverTimer.currentTimeInMillis;
serverTimer.resumeTimer();
expect(clearTimeout).toHaveBeenCalledTimes(1);
expect(serverTimer.totalTime).toEqual(timeRemainingWhenStopped);
serverTimer.stopTimer();
resolve();
}, 50);
});
});
});