import { describe, it, expect, vi } from 'vitest'
import { render, fireEvent } from '@testing-library/react'
import { CalendarDay } from './CalendarDay'
describe('CalendarDay', () => {
it('renders day number', () => {
const { getByTestId } = render()
const day = getByTestId('calendar-day')
expect(day).toBeInTheDocument()
expect(day.textContent).toContain('15')
})
it('renders as disabled when isCurrentMonth is false', () => {
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
expect(day).toHaveClass('calendar-day--disabled')
})
it('renders events when provided', () => {
const { getByTestId } = render(
)
const events = getByTestId('calendar-day-events')
expect(events).toBeInTheDocument()
expect(events.children).toHaveLength(2)
})
it('applies has-events class when events exist', () => {
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
expect(day).toHaveClass('calendar-day--has-events')
})
it('calls onClick when clicked', () => {
const onClick = vi.fn()
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
fireEvent.click(day)
expect(onClick).toHaveBeenCalledTimes(1)
})
it('calls onClick on Enter key', () => {
const onClick = vi.fn()
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
fireEvent.keyDown(day, { key: 'Enter' })
expect(onClick).toHaveBeenCalledTimes(1)
})
it('calls onClick on Space key', () => {
const onClick = vi.fn()
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
fireEvent.keyDown(day, { key: ' ' })
expect(onClick).toHaveBeenCalledTimes(1)
})
it('provides accessibility label with event count', () => {
const { getByTestId } = render(
)
const day = getByTestId('calendar-day')
expect(day).toHaveAttribute('aria-label', '2026-06-15 with 2 event(s)')
})
it('renders without events by default', () => {
const { queryByTestId } = render()
const events = queryByTestId('calendar-day-events')
expect(events).not.toBeInTheDocument()
})
})