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(); }); });