import { fireEvent } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import * as React from 'react'
import renderWithTheme from '../../tests/helpers/renderWithTheme'
import PrevNext from './PrevNext'
describe('component: PrevNext', () => {
test('it calls the onNavigate handler when link is clicked', () => {
const mockNavigate = jest.fn()
const { getByText } = renderWithTheme()
expect(mockNavigate).not.toHaveBeenCalled()
userEvent.click(getByText('Prev'))
expect(mockNavigate).toHaveBeenCalledTimes(1)
expect(mockNavigate).toHaveBeenLastCalledWith('prev')
userEvent.click(getByText('Next'))
expect(mockNavigate).toHaveBeenCalledTimes(2)
expect(mockNavigate).toHaveBeenLastCalledWith('next')
})
test('it calls the onNavigate handler when Enter is pressed on link focus', () => {
const mockNavigate = jest.fn()
renderWithTheme()
expect(mockNavigate).not.toHaveBeenCalled()
userEvent.tab() // Tab to Prev
fireEvent.keyDown(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
fireEvent.keyPress(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
fireEvent.keyUp(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
expect(mockNavigate).toHaveBeenCalledTimes(1)
expect(mockNavigate).toHaveBeenLastCalledWith('prev')
userEvent.tab() // Tab to Next
fireEvent.keyDown(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
fireEvent.keyPress(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
fireEvent.keyUp(document.activeElement as Element, { key: 'Enter', keyCode: 13 })
expect(mockNavigate).toHaveBeenCalledTimes(2)
expect(mockNavigate).toHaveBeenLastCalledWith('next')
})
})