import React from 'react'; import userEvent from '@testing-library/user-event'; import renderWithTheme from '../../../testUtils/renderWithTheme'; import SuffixIcon from '../SuffixIcon'; const onChange = jest.fn(); describe('rendering', () => { it('renders only arrow down icon', () => { const { getByTestId, queryByTestId } = renderWithTheme( ); expect(queryByTestId('loading-icon')).not.toBeInTheDocument(); expect(queryByTestId('remove-icon')).not.toBeInTheDocument(); expect(getByTestId('arrow-icon').className).toContain( 'hero-icon-arrow-down' ); }); it('renders only arrow up icon', () => { const { getByTestId, queryByTestId } = renderWithTheme(); expect(queryByTestId('loading-icon')).not.toBeInTheDocument(); expect(queryByTestId('remove-icon')).not.toBeInTheDocument(); expect(getByTestId('arrow-icon').className).toContain('hero-icon-arrow-up'); }); it('renders only loading and arrow icons', () => { const { getByTestId, queryByTestId } = renderWithTheme( ); expect(getByTestId('loading-icon')).toBeInTheDocument(); expect(getByTestId('arrow-icon')).toBeInTheDocument(); expect(queryByTestId('remove-icon')).not.toBeInTheDocument(); }); it('renders only remove icon', () => { const { getByTestId, queryByTestId } = renderWithTheme( ); expect(queryByTestId('loading-icon')).not.toBeInTheDocument(); expect(queryByTestId('arrow-icon')).not.toBeInTheDocument(); expect(getByTestId('remove-icon')).toBeInTheDocument(); }); it('renders only loading and remove icon', () => { const { getByTestId, queryByTestId } = renderWithTheme( ); expect(getByTestId('loading-icon')).toBeInTheDocument(); expect(queryByTestId('arrow-icon')).not.toBeInTheDocument(); expect(getByTestId('remove-icon')).toBeInTheDocument(); }); }); describe('interactions', () => { it('allows to remove selected item', () => { const { getByTestId } = renderWithTheme( ); userEvent.click(getByTestId('remove-icon')); expect(onChange).toHaveBeenCalledTimes(1); expect(onChange).toHaveBeenCalledWith(undefined); }); });