import { composeStories } from "@storybook/react";
import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import * as calendarStories from "./Calendar.stories";
const { Default, WithEvents, MonthView, WeekView, DayView, EmptyCalendar } =
composeStories(calendarStories);
describe("Calendar stories", () => {
describe("Default story", () => {
it("should render calendar with month view", () => {
render();
expect(screen.getByText("Today")).toBeInTheDocument();
expect(screen.getByText("Month")).toBeInTheDocument();
expect(screen.getByText("Week")).toBeInTheDocument();
expect(screen.getByText("Day")).toBeInTheDocument();
});
it("should render day headers", () => {
render();
expect(screen.getByText("Sun")).toBeInTheDocument();
expect(screen.getByText("Mon")).toBeInTheDocument();
expect(screen.getByText("Tue")).toBeInTheDocument();
expect(screen.getByText("Wed")).toBeInTheDocument();
expect(screen.getByText("Thu")).toBeInTheDocument();
expect(screen.getByText("Fri")).toBeInTheDocument();
expect(screen.getByText("Sat")).toBeInTheDocument();
});
});
describe("WithEvents story", () => {
it("should render calendar with events", () => {
render();
expect(screen.getByText("Team Meeting")).toBeInTheDocument();
expect(screen.getByText("Project Review")).toBeInTheDocument();
expect(screen.getByText("Client Presentation")).toBeInTheDocument();
});
it("should render navigation controls", () => {
render();
expect(screen.getByText("Today")).toBeInTheDocument();
});
});
describe("MonthView story", () => {
it("should render month view", () => {
render();
expect(screen.getByText("Month")).toBeInTheDocument();
expect(screen.getByText("Today")).toBeInTheDocument();
});
});
describe("WeekView story", () => {
it("should render week view", () => {
render();
expect(screen.getByText("Week")).toBeInTheDocument();
expect(screen.getByText("Today")).toBeInTheDocument();
});
});
describe("DayView story", () => {
it("should render day view", () => {
render();
expect(screen.getByText("Day")).toBeInTheDocument();
expect(screen.getByText("Today")).toBeInTheDocument();
});
});
describe("EmptyCalendar story", () => {
it("should render empty calendar", () => {
render();
expect(screen.getByText("Today")).toBeInTheDocument();
expect(screen.getByText("Month")).toBeInTheDocument();
});
});
});