Skip to content

Commit

Permalink
Merge pull request #127 from Ceylar37/test-useIdle
Browse files Browse the repository at this point in the history
test: add tests for useIdle hook
  • Loading branch information
debabin authored Jun 3, 2024
2 parents 39954b4 + 134a6e7 commit 575aae2
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions src/hooks/useIdle/useIdle.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { act, renderHook } from '@testing-library/react';

import { useIdle } from './useIdle';

beforeEach(() => {
vi.useFakeTimers();
});

it('Should use idle', () => {
const { result } = renderHook(useIdle);

expect(result.current.idle).toBe(false);
expect(result.current.lastActive).toBeLessThanOrEqual(Date.now());
});

it('Should be true after 60e3', () => {
const { result } = renderHook(() => useIdle(60e3));

expect(result.current.idle).toBe(false);

act(() => {
vi.advanceTimersByTime(60e3);
});
expect(result.current.idle).toBe(true);
});

it('Should be equal to initially passed state', () => {
const { result } = renderHook(() => useIdle(60e3, { initialState: true }));

expect(result.current.idle).toBe(true);
});

it('Should be false after interaction', () => {
const { result } = renderHook(() => useIdle(60e3, { initialState: true }));

expect(result.current.idle).toBe(true);

act(() => {
window.dispatchEvent(new Event('mousemove'));
});
expect(result.current.idle).toBe(false);
expect(result.current.lastActive).toBeLessThanOrEqual(Date.now());
});

it('Should be false after visibilitychange', () => {
const { result } = renderHook(() => useIdle(60e3, { initialState: true }));

act(() => {
document.dispatchEvent(new Event('visibilitychange'));
});
expect(result.current.idle).toBe(false);
expect(result.current.lastActive).toBeLessThanOrEqual(Date.now());
});

it('Should not react to unexpected events', () => {
const { result } = renderHook(() => useIdle(60e3, { initialState: true, events: ['click'] }));

act(() => {
window.dispatchEvent(new Event('mousemove'));
});
expect(result.current.idle).toBe(true);
});

0 comments on commit 575aae2

Please sign in to comment.