Skip to content

Commit

Permalink
fix: use jest.advanceTimersByTime
Browse files Browse the repository at this point in the history
  • Loading branch information
montelaidev committed Jun 21, 2024
1 parent 8f4d427 commit 5172883
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions app/scripts/lib/accounts/Poller.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { Poller } from './Poller';

const interval = 100;
jest.useFakeTimers();

const interval = 1000;
const intervalPlus100ms = interval + 100;

describe('Poller', () => {
Expand All @@ -17,7 +19,7 @@ describe('Poller', () => {
it('calls the callback function after the specified interval', async () => {
const poller = new Poller(callback, interval);
poller.start();
await new Promise((resolve) => setTimeout(resolve, intervalPlus100ms));
jest.advanceTimersByTime(intervalPlus100ms);
poller.stop();

expect(callback).toHaveBeenCalledTimes(1);
Expand All @@ -27,19 +29,19 @@ describe('Poller', () => {
const poller = new Poller(callback, interval);
poller.start();
poller.stop();
await new Promise((resolve) => setTimeout(resolve, intervalPlus100ms));
jest.advanceTimersByTime(intervalPlus100ms);

expect(callback).not.toHaveBeenCalled();
});

it('calls the callback function multiple times if started and stopped multiple times', async () => {
const poller = new Poller(callback, interval);
poller.start();
await new Promise((resolve) => setTimeout(resolve, intervalPlus100ms));
jest.advanceTimersByTime(intervalPlus100ms);
poller.stop();
await new Promise((resolve) => setTimeout(resolve, intervalPlus100ms));
jest.advanceTimersByTime(intervalPlus100ms);
poller.start();
await new Promise((resolve) => setTimeout(resolve, intervalPlus100ms));
jest.advanceTimersByTime(intervalPlus100ms);
poller.stop();

expect(callback).toHaveBeenCalledTimes(2);
Expand All @@ -50,7 +52,7 @@ describe('Poller', () => {
poller.start();
// Wait for some time, but resumes before reaching out
// the `interval` timeout
await new Promise((resolve) => setTimeout(resolve, interval / 2));
jest.advanceTimersByTime(interval / 2);
poller.stop();
expect(callback).not.toHaveBeenCalled();
});
Expand Down

0 comments on commit 5172883

Please sign in to comment.