import { render, screen } from "@testing-library/react";
import { EntityOverviewHeader } from "./EntityOverviewHeader";
import { describe, it, expect, vi } from "vitest";
import React from "react";

// Mock next/link
vi.mock("next/link", () => ({
  default: ({ children, href }: { children: React.ReactNode; href: string }) => (
    <a href={href}>{children}</a>
  ),
}));

describe("EntityOverviewHeader", () => {
  it("renders the title", () => {
    render(<EntityOverviewHeader title="Test Title" />);
    expect(screen.getByText("Test Title")).toBeDefined();
  });

  it("renders the description when provided", () => {
    render(<EntityOverviewHeader title="Test Title" description="Test Description" />);
    expect(screen.getByText("Test Description")).toBeDefined();
  });

  it("renders the add button when addHref is provided", () => {
    render(<EntityOverviewHeader title="Test Title" addHref="/test-add" addLabel="Add Item" />);
    const addButton = screen.getByRole("link", { name: /Add Item/i });
    expect(addButton).toHaveAttribute("href", "/test-add");
  });

  it("renders children when provided", () => {
    render(
      <EntityOverviewHeader title="Test Title">
        <div data-testid="extra-child">Extra Action</div>
      </EntityOverviewHeader>
    );
    expect(screen.getByTestId("extra-child")).toBeDefined();
  });
});
