Skip to content

Commit 5923529

Browse files
committed
improvement(useIdle): Adding useIdle tests
1 parent dd62ff8 commit 5923529

File tree

1 file changed

+45
-3
lines changed

1 file changed

+45
-3
lines changed

src/components/useIdle/useIdle.spec.ts

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { mount } from '@src/helpers/test'
2-
import { useIdle } from '@src/vue-use-kit'
2+
import { useIdle, idleEventsList } from '@src/vue-use-kit'
33

44
afterEach(() => {
55
jest.clearAllMocks()
@@ -20,7 +20,49 @@ const testComponent = () => ({
2020
})
2121

2222
describe('useIdle', () => {
23-
it('should do something', () => {
24-
// Add test here
23+
// the total of the events is idleEventsList + visibilitychange
24+
const totEvents = idleEventsList.length + 1
25+
26+
it('should call document.addEventListener', async () => {
27+
const addEventListenerSpy = jest.spyOn(document, 'addEventListener')
28+
const removeEventListenerSpy = jest.spyOn(document, 'removeEventListener')
29+
expect(addEventListenerSpy).not.toHaveBeenCalled()
30+
const wrapper = mount(testComponent())
31+
await wrapper.vm.$nextTick()
32+
expect(addEventListenerSpy).toHaveBeenCalledTimes(totEvents)
33+
expect(addEventListenerSpy).toBeCalledWith(
34+
'mousemove',
35+
expect.any(Function)
36+
)
37+
38+
// Destroy instance to check if the remove event listener is being called
39+
wrapper.destroy()
40+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(totEvents)
41+
expect(removeEventListenerSpy).toBeCalledWith(
42+
'mousemove',
43+
expect.any(Function)
44+
)
45+
})
46+
47+
it('should call document.addEventListener again when start is called', async () => {
48+
const addEventListenerSpy = jest.spyOn(document, 'addEventListener')
49+
const wrapper = mount(testComponent())
50+
expect(addEventListenerSpy).toHaveBeenCalledTimes(totEvents)
51+
wrapper.find('#stop').trigger('click')
52+
53+
// Wait for Vue to append #start in the DOM
54+
await wrapper.vm.$nextTick()
55+
wrapper.find('#start').trigger('click')
56+
expect(addEventListenerSpy).toHaveBeenCalledTimes(totEvents * 2)
57+
})
58+
59+
it('should call document.removeEventListener when stop is called', async () => {
60+
const removeEventListenerSpy = jest.spyOn(document, 'removeEventListener')
61+
const wrapper = mount(testComponent())
62+
wrapper.find('#stop').trigger('click')
63+
64+
// Wait for Vue to append #start in the DOM
65+
await wrapper.vm.$nextTick()
66+
expect(removeEventListenerSpy).toHaveBeenCalledTimes(totEvents)
2567
})
2668
})

0 commit comments

Comments
 (0)