import { FastFlag } from '@transferwise/icons'; import { render, screen, fireEvent } from '../test-utils'; import ActionOption from '.'; describe('ActionOption', () => { it('renders the option with the provided content', () => { render( } title="title" content="content" action="action" onClick={() => {}} />, ); expect( screen.getByRole('button', { name: 'title, action', }), ).toBeInTheDocument(); expect(screen.getByText('title')).toBeInTheDocument(); expect(screen.getByText('content')).toBeInTheDocument(); expect(screen.getByTestId('fast-flag')).toBeInTheDocument(); expect(document.querySelector('.np-option__no-media-circle')).not.toBeInTheDocument(); }); it('renders media not in circle', () => { render( } title="title" content="content" action="action" showMediaCircle={false} onClick={() => {}} />, ); expect(document.querySelector('.np-option__no-media-circle')).toBeInTheDocument(); }); it('fires the onClick handler when you click on the action', () => { const mockOnClick = jest.fn(); render(); expect(mockOnClick).not.toHaveBeenCalled(); fireEvent.click( screen.getByRole('button', { name: 'title, action', }), ); expect(mockOnClick).toHaveBeenCalledTimes(1); }); it('fires the onClick handler once regardless of where you click on the option', () => { const mockOnClick = jest.fn(); render(); expect(mockOnClick).toHaveBeenCalledTimes(0); fireEvent.click(screen.getByText('title')); expect(mockOnClick).toHaveBeenCalledTimes(1); fireEvent.click(screen.getByText('content')); expect(mockOnClick).toHaveBeenCalledTimes(2); fireEvent.click( screen.getByRole('button', { name: 'title, action', }), ); expect(mockOnClick).toHaveBeenCalledTimes(3); }); it('renders aligned with container content', () => { render( } title="title" content="content" action="action" isContainerAligned onClick={() => {}} />, ); expect(document.querySelector('.np-option__container-aligned')).toBeInTheDocument(); }); it('uses the aria-label property', () => { render( } title={title} content="content" action={action} isContainerAligned aria-label="aria label" onClick={() => {}} />, ); expect( screen.getByRole('button', { name: /aria label/i, }), ).toBeInTheDocument(); }); });