🧪 Adds test for throttle class

This commit is contained in:
Rune Harlyk
2024-02-23 12:22:00 +01:00
parent 84506d7903
commit e4e2c24407
+46
View File
@@ -0,0 +1,46 @@
import { throttler } from '../../src/lib/utilities';
import { describe, it, expect, beforeEach, afterEach, test, vitest } from 'vitest';
describe('throttler', () => {
let throttleInstance: throttler;
let callback
beforeEach(() => {
vitest.useFakeTimers();
throttleInstance = new throttler();
callback = vitest.fn();
});
afterEach(() => {
vitest.useRealTimers();
});
it('should call the callback function after the specified time', () => {
throttleInstance.throttle(callback, 1000);
expect(callback).not.toHaveBeenCalled();
vitest.advanceTimersByTime(1000);
expect(callback).toHaveBeenCalledTimes(1);
});
it('should not call the callback function if throttle is called again within the timeout period', () => {
throttleInstance.throttle(callback, 1000);
throttleInstance.throttle(callback, 1000);
vitest.advanceTimersByTime(500);
expect(callback).not.toHaveBeenCalled();
vitest.advanceTimersByTime(500);
expect(callback).toHaveBeenCalledTimes(1);
});
it('should allow the callback to be called again after the timeout period', () => {
throttleInstance.throttle(callback, 1000);
vitest.advanceTimersByTime(1000);
expect(callback).toHaveBeenCalledTimes(1);
throttleInstance.throttle(callback, 1000);
vitest.advanceTimersByTime(1000);
expect(callback).toHaveBeenCalledTimes(2);
});
});