import React from 'react'
import { describe, expect, it } from 'vitest'
import { renderWithProviders, screen } from '../../test/utils'
import AttachmentCard from './index'
const thumbnail =
thumbnail
describe('AttachmentCard', () => {
it('applies the dark and light root surfaces and type icon colors', () => {
const dark = renderWithProviders(
)
expect(screen.getByText('Dark file')).toBeInTheDocument()
expect(dark.container.firstElementChild).toHaveClass('bg-[#1e2330]')
expect(dark.container.querySelector('svg')).toHaveClass('text-white/55')
dark.unmount()
const light = renderWithProviders(
)
expect(light.container.firstElementChild).toHaveClass('bg-white')
expect(light.container.querySelector('svg')).toHaveClass('text-black/55')
})
it('uses the dark placeholder title and dims it when title is absent', () => {
renderWithProviders(
)
expect(screen.getByText('Waiting for title')).toHaveClass('text-white/30')
})
it('does not render a light title for missing or whitespace-only values', () => {
const { rerender } = renderWithProviders(
)
expect(screen.queryByText('Attachment title')).toBeNull()
rerender(
)
expect(screen.queryByText(' ')).toBeNull()
})
it('uses an undimmed title class when a dark title is provided', () => {
renderWithProviders(
)
expect(screen.getByText('Named file')).toHaveClass('text-white')
expect(screen.getByText('Named file')).not.toHaveClass('text-white/30')
})
it('renders detail only for non-empty values', () => {
const { rerender } = renderWithProviders(
)
expect(screen.getByText('2 MB')).toBeInTheDocument()
rerender(
)
expect(screen.queryByText('2 MB')).toBeNull()
})
it('renders optional slots only when supplied', () => {
const { container } = renderWithProviders(
Ready}
action={}
topLeft={Left}
topRight={Right}
/>
)
expect(screen.getByText('Ready')).toBeInTheDocument()
expect(screen.getByRole('button', { name: 'Open' })).toBeInTheDocument()
expect(screen.getByText('Left').parentElement).toHaveClass(
'pointer-events-auto',
'absolute',
'left-3',
'top-3'
)
expect(screen.getByText('Right').parentElement).toHaveClass(
'pointer-events-auto',
'absolute',
'right-3',
'top-3'
)
expect(container.querySelectorAll('.pointer-events-auto')).toHaveLength(2)
const withoutSlots = renderWithProviders(
)
expect(
withoutSlots.container.querySelectorAll('.pointer-events-auto')
).toHaveLength(0)
})
it('forwards rootRef and data-testid to the root', () => {
const rootRef = React.createRef()
renderWithProviders(
)
expect(screen.getByTestId('attachment-card')).toBe(rootRef.current)
})
})