import { render, screen } from "@testing-library/react";
import { DashboardHeader } from "./DashboardHeader";
import { vi, describe, it, expect } from "vitest";
import React from "react";
import { TooltipProvider } from "@/components/ui/tooltip";

// Mock dependencies
vi.mock("next/navigation", () => ({
  useRouter: () => ({
    push: vi.fn(),
  }),
  usePathname: () => "/dashboard/orders/overview",
  useSearchParams: () => new URLSearchParams(),
}));

vi.mock("./ThemeToggle", () => ({
  ThemeToggle: () => <div data-testid="theme-toggle">Theme Toggle</div>,
}));

vi.mock("./NavigationSearch", () => ({
  NavigationSearch: () => <div data-testid="navigation-search">Navigation Search</div>,
}));

vi.mock("@/components/ui/sidebar", () => ({
  SidebarTrigger: ({ className }: { className?: string }) => (
    <button data-testid="sidebar-trigger" className={className}>
      Sidebar Trigger
    </button>
  ),
}));

describe("DashboardHeader", () => {
  it("renders breadcrumbs with correct German labels and Link", () => {
    render(
      <TooltipProvider>
        <DashboardHeader />
      </TooltipProvider>
    );
    // The breadcrumb for 'orders' should link to /dashboard/orders
    const link = screen.getByRole("link", { name: "Bestellungen" });
    expect(link).toHaveAttribute("href", "/dashboard/orders");
    
    // The breadcrumb for 'overview' should be the current one
    expect(screen.getByText("Übersicht")).toBeDefined();
  });

  it("renders status indicators", () => {
    render(
      <TooltipProvider>
        <DashboardHeader />
      </TooltipProvider>
    );

    // Check for presence of metrics (some might be labels or values)
    expect(screen.getByText(/Online/i)).toBeDefined();
    expect(screen.getByText(/Umsatz/i)).toBeDefined();
    expect(screen.getByText("12.400 €")).toBeDefined();
    expect(screen.getByText(/Orders/i)).toBeDefined();
    expect(screen.getByText(/Ausstehend/i)).toBeDefined();
    expect(screen.getByText(/Lagerwarnung: 2/i)).toBeDefined();
  });

  it("renders buttons with labels", () => {
    render(
      <TooltipProvider>
        <DashboardHeader />
      </TooltipProvider>
    );
    expect(screen.getByLabelText("Benachrichtigungen")).toBeDefined();
  });
});
