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()
})
})
})
})