import React from 'react' import { render, screen, within } from '@testing-library/react' import { LadyIcon } from '../icon/ladyIcon' import { LightningIcon } from '../icon/lightningIcon' import { ProfileLeft } from './ProfileLeft' const assertProfileNameAndPicture = (): void => { expect(screen.getByText('display_name')).toBeInTheDocument() expect(screen.getByAltText('display_name')).toBeInTheDocument() } describe('ProfileLeft', () => { it('should render a simple profile', () => { const props = { displayName: 'display_name', pictureUrl: 'http://pic_url', averageRating: '4.1', } render() assertProfileNameAndPicture() expect(screen.getByText('4.1')).toBeInTheDocument() }) it('should render a profile with additional info', () => { const props = { displayName: 'display_name', pictureUrl: 'http://pic_url', averageRating: '4.1', additionalInfo: 'Some extra info', } render() assertProfileNameAndPicture() // Verify that when both averageRating and additionalInfo, additionalInfo // takes over. expect(screen.queryByText('4.1')).not.toBeInTheDocument() expect(screen.getByText('Some extra info')).toBeInTheDocument() }) it('should render a profile with options', () => { const props = { displayName: 'display_name', pictureUrl: 'http://pic_url', averageRating: '4.1', options: [ { icon: , label: 'Auto-accept', }, { icon: , label: 'Ladies only', }, ], } render() assertProfileNameAndPicture() expect(screen.getByText('4.1')).toBeInTheDocument() const optionList = screen.getByRole('list') const options = within(optionList).getAllByRole('listitem') expect(options).toHaveLength(2) expect(within(optionList).getByTitle('Auto-accept')).toBeInTheDocument() expect(within(optionList).getByTitle('Ladies only')).toBeInTheDocument() }) describe('ID check icon', () => { it('should display ID check icon if driver ID is checked', () => { const props = { displayName: 'display_name', pictureUrl: 'http://pic_url', isIdChecked: true, } const { container } = render() // TODO replace with screen.getByTitle (after adding a title to the svg) or getByAltText on the avatar (if adding an idCheck string in the alt) const checkIcons = container.getElementsByClassName('kirk-icon-check') expect(checkIcons.length).toEqual(1) }) it('should NOT display ID check icon if driver ID is not checked', () => { const props = { displayName: 'display_name', pictureUrl: 'http://pic_url', isIdChecked: false, } const { container } = render() // TODO replace with screen.getByTitle (after adding a title to the svg) or getByAltText on the avatar (if adding an idCheck string in the alt) const checkIcons = container.getElementsByClassName('kirk-icon-check') expect(checkIcons.length).toEqual(0) }) }) })