import { describe, it, expect } from "vitest";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";

describe("Home Page (prototype port)", () => {
  const pagePath = resolve(__dirname, "../../pages/index.vue");
  const content = readFileSync(pagePath, "utf-8");

  it("should have hms-hero section", () => {
    expect(content).toContain("hms-hero");
    expect(content).toContain("hms-hero-bg");
    expect(content).toContain("hms-hero-overlay");
  });

  it("should have hero title with Veranstaltungstechnik text", () => {
    expect(content).toContain("Veranstaltungstechnik");
    expect(content).toContain("Professionelle Technik");
  });

  it("should have Mietkatalog button", () => {
    expect(content).toContain("Mietkatalog");
    expect(content).toContain("hms-btn-primary");
  });

  it("should have Beratung anfragen button", () => {
    expect(content).toContain("Beratung anfragen");
    expect(content).toContain("hms-btn-secondary");
  });

  it("should display all 8 services", () => {
    expect(content).toContain("Vermietung");
    expect(content).toContain("Verkauf");
    expect(content).toContain("Personal");
    expect(content).toContain("Transport");
    expect(content).toContain("Lagerung");
    expect(content).toContain("Werkstatt");
    expect(content).toContain("Installation");
    expect(content).toContain("Booking");
  });

  it("should use ServiceCard component", () => {
    expect(content).toContain("ServiceCard");
  });

  it("should have hms-speaker-grid with 6 speakers", () => {
    expect(content).toContain("hms-speaker-grid");
    expect(content).toContain("hms-speaker-item");
    expect(content).toContain("SpeakerIcon");
    expect(content).toContain("L-Acoustics K2");
    expect(content).toContain("L-Acoustics KS28");
    expect(content).toContain("Robe Pointe");
  });

  it("should have about section with stats", () => {
    expect(content).toContain("20+");
    expect(content).toContain("1.000+");
    expect(content).toContain("Jahre Erfahrung");
    expect(content).toContain("Geräte im Lager");
  });

  it("should have CTA section with Katalog durchsuchen", () => {
    expect(content).toContain("Katalog durchsuchen");
    expect(content).toContain("Online-Mietkatalog");
  });

  it("should use TypeScript with lang=ts", () => {
    expect(content).toContain('<script setup lang="ts">');
  });

  it("should use hms-badge hms-badge-primary", () => {
    expect(content).toContain("hms-badge");
    expect(content).toContain("hms-badge-primary");
  });
});
