* chore: setup jest for unit test hooks and component from joi * chore: update gitignore * chore: exclude jest setup file from tsconfig
33 lines
934 B
TypeScript
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()
|
|
})
|
|
})
|