// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import '@testing-library/jest-dom'; import { fireEvent } from '@testing-library/dom'; import React, { ChangeEvent } from 'react'; import IconBUtton from '../../../../src/components/ui/Button/IconButton'; import Presenter from '../../../../src/components/ui/icons/Presenter'; import RosterHeader from '../../../../src/components/ui/Roster/RosterHeader'; import lightTheme from '../../../../src/theme/light'; import { renderWithTheme } from '../../../test-helpers'; describe('RosterCell', () => { it('should render a title', () => { const component = ; const { getByText } = renderWithTheme(lightTheme, component); expect(getByText('Present')).toBeInTheDocument(); }); it('should render a badge', () => { const component = ; const { getByText } = renderWithTheme(lightTheme, component); expect(getByText('5')).toBeInTheDocument(); }); it('should render a close button when onClose is passed', () => { const component = {}} />; const { getByLabelText } = renderWithTheme(lightTheme, component); expect(getByLabelText('Close')).toBeInTheDocument(); }); it('should render a search button when onSearch is passed', () => { const component = {}} />; const { getByLabelText } = renderWithTheme(lightTheme, component); expect(getByLabelText('Open search')).toBeInTheDocument(); }); it('should call onSearch with "" when the search is closed', () => { const mockOnSearch = jest.fn(); const component = ; const { getByLabelText } = renderWithTheme(lightTheme, component); fireEvent( getByLabelText('Open search'), new MouseEvent('click', { bubbles: true, cancelable: true, }) ); expect(getByLabelText('Search')).toBeInTheDocument(); fireEvent( getByLabelText('clear Search'), new MouseEvent('click', { bubbles: true, cancelable: true, }) ); expect(mockOnSearch).toBeCalled(); }); it('should render a search button when search is pressed', () => { const component = {}} />; const { getByLabelText } = renderWithTheme(lightTheme, component); fireEvent( getByLabelText('Open search'), new MouseEvent('click', { bubbles: true, cancelable: true, }) ); expect(getByLabelText('Search')).toBeInTheDocument(); }); it('should render children if they are available', () => { const component = ( {}}> } /> ); const { getByLabelText } = renderWithTheme(lightTheme, component); expect(getByLabelText('presenter')).toBeInTheDocument(); }); });