-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.test.ts
More file actions
45 lines (33 loc) · 1.05 KB
/
client.test.ts
File metadata and controls
45 lines (33 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { renderHook } from '@testing-library/react-hooks'
import useInterval from '.'
describe('useInterval', () => {
const callback = jest.fn().mockName('mock callback')
afterEach(() => {
callback.mockClear()
})
test('executes callback after delay', () => {
renderHook(({ interval }) => useInterval(callback, interval), {
initialProps: { interval: 500 },
})
expect(callback).not.toBeCalled()
jest.advanceTimersByTime(1000)
expect(callback).toBeCalled()
expect(callback).toHaveBeenCalledTimes(2)
})
test('pauses interval if no delay', () => {
const { rerender } = renderHook(
({ interval }) => useInterval(callback, interval),
{
initialProps: { interval: 500 },
}
)
jest.advanceTimersByTime(500)
expect(callback).toHaveBeenCalledTimes(1)
rerender({ interval: null })
jest.advanceTimersByTime(500)
expect(callback).toHaveBeenCalledTimes(1)
rerender({ interval: 500 })
jest.advanceTimersByTime(500)
expect(callback).toHaveBeenCalledTimes(2)
})
})