/**
* @jest-environment jsdom
*/
import React from 'react'
import { render } from '@testing-library/react'
import '@testing-library/jest-dom/extend-expect'
import { DropdownNavigation } from '../../components/dropdown-navigation/dropdownNavigation'
import { PRO_NAVIGATION_DROPDOWN_DEFAULT_LIST } from '../../components/dropdown-navigation/constants'
describe('DropdownNavigation', () => {
it('renders correctly', () => {
const { baseElement: dropdown } = render(
)
expect(dropdown).toMatchSnapshot()
})
it('renders button props', () => {
const { baseElement: dropdown } = render(
)
expect(dropdown).toMatchSnapshot()
})
it('renders label', () => {
const MockLabel = () =>
Mock Label
const mockLabelCount = PRO_NAVIGATION_DROPDOWN_DEFAULT_LIST.filter((item) => item.hasLabel).length
const { baseElement: dropdown, queryAllByText } = render(
}
variant="default"
/>
)
const label = queryAllByText('Mock Label')
expect(dropdown).toMatchSnapshot()
expect(label).toHaveLength(mockLabelCount)
})
it('renders custom header', () => {
const MockHeader = () => Dropdown Custom Header
const { getByText } = render(
}
trackingKey="test_tracking"
variant="default"
/>
)
const header = getByText('Dropdown Custom Header')
expect(header).toBeInTheDocument()
})
it('sets tracking attributes correctly', () => {
const trackingKey = 'test_tracking'
const { getAllByRole, baseElement } = render(
)
const toggleButton = getAllByRole('button')[0]
const links = getAllByRole('link')
const contentContainer = baseElement.querySelector('[data-id="dropdown-content"]')!
expect(toggleButton.getAttribute('data-trackable')).toContain(trackingKey)
links.forEach((link) => {
expect(link.getAttribute('data-trackable')).toContain(trackingKey)
})
expect(contentContainer).toBeInTheDocument()
})
})