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

describe('SectionHeading', () => {
  it('renders the title and subtitle', () => {
    render(<SectionHeading title="Run forensics — autonomy-p4" subtitle="· last engine run" />)
    expect(screen.getByText('Run forensics — autonomy-p4')).toBeInTheDocument()
    expect(screen.getByText('· last engine run')).toBeInTheDocument()
  })

  it('renders a link action when href is given', () => {
    render(<SectionHeading title="t" action={{ label: 'all runs →', href: '/plans' }} />)
    expect(screen.getByRole('link', { name: 'all runs →' })).toHaveAttribute('href', '/plans')
  })

  it('renders a button action and fires onClick when no href is given', () => {
    const onClick = vi.fn()
    render(<SectionHeading title="t" action={{ label: 'full timeline →', onClick }} />)
    screen.getByRole('button', { name: 'full timeline →' }).click()
    expect(onClick).toHaveBeenCalledOnce()
  })

  it('renders a titleBadge inline with the title', () => {
    render(<SectionHeading title="Run forensics" titleBadge={<span>stale · 2m</span>} />)
    expect(screen.getByText('stale · 2m')).toBeInTheDocument()
  })
})
