Files
tolaria/src/components/NoteTitleIcon.test.tsx

36 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-04-07 21:09:06 +02:00
import { render, screen } from '@testing-library/react'
import { describe, it, expect } from 'vitest'
import { NoteTitleIcon } from './NoteTitleIcon'
describe('NoteTitleIcon', () => {
it('renders a single emoji icon as text', () => {
render(<NoteTitleIcon icon="🚀" testId="note-title-icon" />)
expect(screen.getByTestId('note-title-icon')).toHaveTextContent('🚀')
})
it('renders a Phosphor icon when the name is recognized', () => {
2026-04-09 13:01:28 +02:00
const { container } = render(<NoteTitleIcon icon="cooking pot" testId="note-title-icon" className="mr-1" />)
2026-04-07 21:09:06 +02:00
const icon = screen.getByTestId('note-title-icon')
expect(icon.tagName.toLowerCase()).toBe('svg')
2026-04-09 13:01:28 +02:00
expect(container.querySelector('span.inline-flex.mr-1')).not.toBeNull()
2026-04-07 21:09:06 +02:00
})
it('renders an image when the icon is an http url', () => {
2026-04-09 13:01:28 +02:00
const { container } = render(<NoteTitleIcon icon="https://example.com/favicon.png" testId="note-title-icon" className="mr-1" />)
2026-04-07 21:09:06 +02:00
const icon = screen.getByTestId('note-title-icon')
expect(icon.tagName.toLowerCase()).toBe('img')
expect(icon).toHaveAttribute('src', 'https://example.com/favicon.png')
2026-04-09 13:01:28 +02:00
expect(container.querySelector('span.inline-flex.mr-1')).not.toBeNull()
2026-04-07 21:09:06 +02:00
})
it('renders nothing for an unrecognized icon value', () => {
const { container } = render(<NoteTitleIcon icon="definitely-not-a-real-icon" testId="note-title-icon" />)
expect(screen.queryByTestId('note-title-icon')).not.toBeInTheDocument()
expect(container).toBeEmptyDOMElement()
})
})