import { render, screen, fireEvent } from '@testing-library/react';
import { describe, it, expect, vi } from 'vitest';
import { Calendar } from './calendar';
import React from 'react';
describe('Calendar', () => {
it('renders correctly', () => {
const date = new Date(2024, 0, 1); // Jan 1, 2024
render();
// Check if month name is present
expect(screen.getByText('January 2024')).toBeInTheDocument();
});
it('calls onSelect when a day is clicked', () => {
const onSelect = vi.fn();
const date = new Date(2024, 0, 1);
render();
// Day 15 of January
const day15 = screen.getByText('15');
fireEvent.click(day15);
expect(onSelect).toHaveBeenCalled();
});
it('renders correctly in range mode', () => {
const date = new Date(2024, 0, 1);
const range = {
from: new Date(2024, 0, 10),
to: new Date(2024, 0, 20),
};
render();
// Check if range start and end dates have correct data attributes
const startDay = screen.getByText('10').closest('button');
const endDay = screen.getByText('20').closest('button');
expect(startDay).toHaveAttribute('data-range-start', 'true');
expect(endDay).toHaveAttribute('data-range-end', 'true');
});
it('has correct data-slot attribute', () => {
const { container } = render();
expect(container.querySelector('[data-slot="calendar"]')).toBeInTheDocument();
});
it('renders dropdown caption controls', () => {
render();
const selects = screen.getAllByRole('combobox');
expect(selects.length).toBeGreaterThan(0);
});
});