diff --git a/src/utils/interval.test.js b/src/utils/interval.test.js new file mode 100644 index 0000000..9aa209f --- /dev/null +++ b/src/utils/interval.test.js @@ -0,0 +1,30 @@ +import { + setIntervalImmediate, +} from './interval.js' + +describe('setIntervalImmediate', () => { + beforeEach(() => { + jest.useFakeTimers(); + }) + + it('runs callback immediately and them each n ms', () => { + let interval + const durationMs = 1000 + + const callNumbersToStopTimer = 3 + let calledTimes = 0 + const callback = () => { + calledTimes++ + if (calledTimes === callNumbersToStopTimer) { + clearInterval(interval) + } + } + + interval = setIntervalImmediate(callback, durationMs) + jest.runAllTimers() + + expect(calledTimes).toBe(callNumbersToStopTimer) + expect(setInterval).toHaveBeenCalledWith(expect.any(Function), durationMs) + expect(clearInterval).toHaveBeenCalledWith(interval) + }) +})