import { render, screen } from '@testing-library/react'
import { RecordDetail, type RecordField } from '../RecordDetail'
const fields: RecordField[] = [
{ label: 'url', value: 'https://example.com/a', kind: 'url' },
{ label: 'source', value: 'The National', kind: 'text' },
{ label: 'content', value: 'Para one.\nPara two.', kind: 'longtext' },
{ label: 'empty', value: '', kind: 'text' },
]
describe('RecordDetail', () => {
it('renders a url field as a new-tab clickable link', () => {
render()
const link = screen.getByRole('link', { name: 'https://example.com/a' })
expect(link).toHaveAttribute('href', 'https://example.com/a')
expect(link).toHaveAttribute('target', '_blank')
expect(link).toHaveAttribute('rel', expect.stringContaining('noopener'))
})
it('renders long-text as a newline-preserving prose block', () => {
const { container } = render()
const prose = container.querySelector('.whitespace-pre-wrap')
expect(prose).toBeInTheDocument()
expect(prose?.textContent).toContain('Para one.')
expect(prose?.textContent).toContain('Para two.')
})
it('skips empty fields', () => {
render()
expect(screen.queryByText('empty')).not.toBeInTheDocument()
})
it('auto-links a text field whose value looks like a url', () => {
render()
expect(screen.getByRole('link', { name: 'https://x.io' })).toBeInTheDocument()
})
it('shows the empty message when no field has a value', () => {
render()
expect(screen.getByText('Nothing here')).toBeInTheDocument()
})
})