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() }) })