jan/joi/src/hooks/usePageLeave/usePageLeave.test.ts
Faisal Amir 1ffb7f213d
chore: setup jest for unit test hooks and component from joi (#3540)
* chore: setup jest for unit test hooks and component from joi

* chore: update gitignore

* chore: exclude jest setup file from tsconfig
2024-09-05 11:41:15 +07:00

33 lines
934 B
TypeScript

import { renderHook } from '@testing-library/react'
import { fireEvent } from '@testing-library/react'
import { usePageLeave } from './index'
describe('@joi/hooks/usePageLeave', () => {
it('should call onPageLeave when mouse leaves the document', () => {
const onPageLeaveMock = jest.fn()
const { result } = renderHook(() => usePageLeave(onPageLeaveMock))
fireEvent.mouseLeave(document.documentElement)
expect(onPageLeaveMock).toHaveBeenCalledTimes(1)
})
it('should remove event listener on unmount', () => {
const onPageLeaveMock = jest.fn()
const removeEventListenerSpy = jest.spyOn(
document.documentElement,
'removeEventListener'
)
const { unmount } = renderHook(() => usePageLeave(onPageLeaveMock))
unmount()
expect(removeEventListenerSpy).toHaveBeenCalledWith(
'mouseleave',
expect.any(Function)
)
removeEventListenerSpy.mockRestore()
})
})