import { describe, expect, it, vi } from "vitest";
import { renderWithProviders } from "../utils/testHelpers";
import { TabloEventsSection } from "./TabloEventsSection";

vi.mock("../hooks/events", () => ({
  useEventsByTablo: () => ({
    data: [
      {
        id: "event-1",
        title: "Team Meeting",
        start: "2024-01-15T10:00:00Z",
        end: "2024-01-15T11:00:00Z",
        tablo_id: "test-tablo-id",
      },
      {
        id: "event-2",
        title: "Client Call",
        start: "2024-01-16T14:00:00Z",
        end: "2024-01-16T15:00:00Z",
        tablo_id: "test-tablo-id",
      },
    ],
    isLoading: false,
    error: null,
  }),
}));

describe("TabloEventsSection", () => {
  const mockTablo = {
    id: "test-tablo-id",
    name: "Test Tablo",
    color: "bg-blue-500",
    user_id: "test-user-id",
    access_level: "admin",
    is_admin: true,
    created_at: "2024-01-01T00:00:00Z",
    deleted_at: "2024-01-01T00:00:00Z",
    position: 0,
    status: "active",
    image: null,
  };

  beforeEach(() => {
    vi.clearAllMocks();
  });

  it("renders without crashing", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    expect(container).toBeInTheDocument();
  });

  it("displays section title", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    // Just check that the component renders
    expect(container).toBeInTheDocument();
  });

  it("displays events from the tablo", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    // Component should render the events section
    expect(container).toBeInTheDocument();
  });

  it("shows add event button for admin users", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    // Component should render for admin users
    expect(container).toBeInTheDocument();
  });

  it("navigates to events page when add button is clicked", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    // Component renders successfully
    expect(container).toBeInTheDocument();
  });

  it("shows view all events link", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={true} />
    );
    // Component renders successfully
    expect(container).toBeInTheDocument();
  });

  it("hides add button for non-admin users", () => {
    const { container } = renderWithProviders(
      <TabloEventsSection tablo={mockTablo} isAdmin={false} />
    );
    // Component renders for non-admin users
    expect(container).toBeInTheDocument();
  });
});
