import { describe, expect, it } from 'vitest'
import { render, screen } from '@testing-library/react'
import { RefreshSignal } from './RefreshSignal'

describe('RefreshSignal', () => {
  it('is decorative (aria-hidden) — the room-announcing status lives in QueryBoundary, not here', () => {
    render(<RefreshSignal />)
    const signal = screen.getByTestId('refresh-signal')
    expect(signal).toHaveAttribute('aria-hidden', 'true')
    expect(signal).toHaveAttribute('data-variant', 'refreshing')
  })

  it('renders the error variant for the stale-data-with-failing-refetch affordance', () => {
    render(<RefreshSignal variant="error" />)
    expect(screen.getByTestId('refresh-signal')).toHaveAttribute('data-variant', 'error')
    expect(screen.getByTestId('refresh-signal-bar').className).toContain('bg-danger')
  })

  it('disables motion under reduced-motion and mirrors the sweep direction in rtl documents', () => {
    const priorDir = document.documentElement.dir
    document.documentElement.dir = 'rtl'

    render(<RefreshSignal />)
    const bar = screen.getByTestId('refresh-signal-bar')
    const className = bar.getAttribute('class') ?? ''

    expect(className).toContain('motion-reduce:animate-none')
    expect(className).toContain('refresh-signal-sweep-rtl')

    document.documentElement.dir = priorDir
  })

  it('sweeps ltr by default', () => {
    render(<RefreshSignal />)
    expect(screen.getByTestId('refresh-signal-bar').className).toContain('refresh-signal-sweep-ltr')
  })
})
