import React from 'react';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { BrowserRouter } from 'react-router-dom';
import NavBarDropdown from './NavBarDropdown';
describe('NavBarDropdown', () => {
const mockHeaderText = 'MyHeaderText';
const mockHeaderUrl = '/route';
const mockOnHeaderClick = jest.fn();
const mockItems = [
{
text: 'First link',
},
{
text: 'Second link',
},
];
it('displays the header text', () => {
render();
const text = screen.getByText(mockHeaderText);
expect(text).toBeInTheDocument();
});
it('attaches the header url to the header text if provided', () => {
render(
);
const link = screen.getByRole('link', { name: mockHeaderText });
expect(link).toBeInTheDocument();
expect(link).toHaveAttribute('href', mockHeaderUrl);
});
it('calls the onHeaderClick function when the header is clicked', () => {
render();
const text = screen.getByText(mockHeaderText);
expect(text).toBeInTheDocument();
userEvent.click(text);
expect(mockOnHeaderClick).toHaveBeenCalled();
});
it('displays the items', () => {
render();
mockItems.forEach(({ text }) => {
const childItem = screen.getByText(text);
expect(childItem).toBeInTheDocument();
});
});
});