import React from 'react' import { fireEvent, render, screen } from '@testing-library/react' import { Avatar } from './Avatar' describe('', () => { // there is an issue with react-textfit that is only flagged in a test suite // this solution silences that specific case https://github.com/malte-wessel/react-textfit/issues/35 beforeEach(() => { vi.spyOn(console, 'warn').mockImplementation(() => '') }) it('renders user initials if the image link is broken', () => { render() fireEvent.error(screen.getByRole('img')) expect(screen.getByText('JD')).toBeInTheDocument() expect(screen.queryByRole('img')).not.toBeInTheDocument() }) describe('full name provided contains more than two names', () => { it('renders the initials for each name', () => { render() expect(screen.getByText('JWAVLN')).toBeInTheDocument() }) }) describe('alt text', () => { describe('providing alt text, overriding fullName', () => { it('uses alt prop over full name when using initials', () => { render() expect(screen.getByTitle('alt override')).toBeInTheDocument() }) it('uses alt prop over full name when using fallback img', () => { render() expect(screen.getByRole('img')).toHaveAccessibleName('alt override') }) it('uses alt prop over full name when supplying an img', () => { render( , ) expect(screen.getByRole('img')).toHaveAccessibleName('alt override') }) }) describe('providing fullName, no alt prop', () => { it('uses the fullName when using initials', () => { render() expect(screen.getByTitle('Jane Doe')).toBeInTheDocument() }) it('uses the fullName when using fallback img', () => { render() expect(screen.getByRole('img')).toHaveAccessibleName('Jane Doe') }) it('uses alt prop over full name when supplying an img', () => { render( , ) expect(screen.getByRole('img')).toHaveAccessibleName('Jane Doe') }) }) describe('not providing fullName or alt text', () => { it('makes the img presentational on the fallback img', () => { render() expect(screen.queryByRole('img')).not.toBeInTheDocument() }) it('has blank alt text when img provided', () => { render( , ) expect(screen.queryByRole('img')).not.toBeInTheDocument() }) }) }) })