import { DropdownItem } from '@patternfly/react-core';
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
import { ChatbotHeaderOptionsDropdown } from './ChatbotHeaderOptionsDropdown';
import '@testing-library/jest-dom';
describe('ChatbotHeaderOptionsDropdown', () => {
const dropdownItems = (
<>
Option 1
Option 2
Option 3
>
);
it('should render ChatbotHeaderOptionsDropdown', () => {
render({dropdownItems});
expect(screen.getByRole('button', { name: 'Chatbot options' })).toBeTruthy();
});
it('should call onselect handler when a dropdown item is clicked', async () => {
const onSelect = jest.fn();
const { container } = render(
{dropdownItems}
);
act(() => {
fireEvent.click(screen.getByRole('button', { name: 'Chatbot options' }));
});
await waitFor(() => {
expect(container.querySelector('.custom-header-options-dropdown')).toBeTruthy();
expect(screen.getByText('Option 1'));
expect(screen.getByText('Option 2'));
expect(screen.getByText('Option 3'));
fireEvent.click(screen.getByText('Option 3'));
expect(onSelect).toHaveBeenCalled();
});
});
it('should handle isCompact', () => {
render({dropdownItems});
expect(screen.getByRole('button', { name: 'Chatbot options' })).toHaveClass('pf-m-compact');
});
it('should handle toggleProps', () => {
render(
{dropdownItems}
);
expect(screen.getByRole('button', { name: /Chatbot options/i })).toBeDisabled();
});
});