import React from 'react'
import { fireEvent, render } from '@testing-library/react'
import ProductSwitcherListItem from './ListItem'
import { STUB_DATA } from '../stub'
import type { ProductType } from '../types'
describe('Test App Switcher ListItem', () => {
describe('App variants', () => {
it.each(STUB_DATA.map((i) => i.name))('App %s', (app: ProductType) => {
const { getByText } = render(
)
expect(getByText(app)).toBeInTheDocument()
})
it('should, render subheader', () => {
const { getByText } = render(
)
expect(getByText('Changepoint')).toBeInTheDocument()
expect(getByText('secondary instance')).toBeInTheDocument()
})
})
it('Should mount focused', () => {
const { getByRole } = render(
)
expect(getByRole('menuitemradio')).toHaveFocus()
})
it('Should mount not focused', () => {
const { getByRole } = render(
)
expect(getByRole('menuitemradio')).not.toHaveFocus()
})
it('Should callback on Enter', () => {
const spy = jest.fn()
const { getByRole } = render(
)
fireEvent.keyDown(getByRole('menuitemradio'), {
key: 'Enter',
})
expect(spy).toHaveBeenCalled()
})
it('Should callback on Space', () => {
const spy = jest.fn()
const { getByRole } = render(
)
fireEvent.keyDown(getByRole('menuitemradio'), {
key: 'Space',
})
expect(spy).toHaveBeenCalled()
})
it('Should callback on Space react 17', () => {
const spy = jest.fn()
const { getByRole } = render(
)
fireEvent.keyDown(getByRole('menuitemradio'), {
key: 'Space',
})
expect(spy).toHaveBeenCalled()
})
it('Should callback on click', () => {
const spy = jest.fn()
const { getByRole } = render(
)
fireEvent.click(getByRole('menuitemradio'))
expect(spy).toHaveBeenCalled()
})
it('Active', () => {
const { getByRole } = render(
)
expect(
getByRole('menuitemradio', { checked: true })
).toBeInTheDocument()
})
})