import { describe, it, expect } from "vitest"; import { readFileSync } from "node:fs"; import { resolve } from "node:path"; describe("Mietkatalog Page (prototype port)", () => { const pagePath = resolve(__dirname, "../../pages/mietkatalog.vue"); const content = readFileSync(pagePath, "utf-8"); it("should have page title Mietkatalog", () => { expect(content).toContain("Mietkatalog"); }); it("should have search input with hms-input", () => { expect(content).toContain('type="search"'); expect(content).toContain("hms-input"); expect(content).toContain("searchQuery"); }); it("should have sort dropdown", () => { expect(content).toContain("sortBy"); expect(content).toContain("name"); expect(content).toContain("brand"); expect(content).toContain("code"); }); it("should have category filter chips with hms-chip", () => { expect(content).toContain("hms-chip"); expect(content).toContain("activeCategory"); expect(content).toContain("Tontechnik"); expect(content).toContain("Lichttechnik"); expect(content).toContain("Rigging"); }); it("should show result count", () => { expect(content).toContain("filteredEquipment.length"); expect(content).toContain("Gerät"); expect(content).toContain("gefunden"); }); it("should use LoadingSkeleton component", () => { expect(content).toContain("LoadingSkeleton"); }); it("should use ErrorState component", () => { expect(content).toContain("ErrorState"); }); it("should use EmptyState component", () => { expect(content).toContain("EmptyState"); }); it("should render EquipmentCard for each item", () => { expect(content).toContain("EquipmentCard"); expect(content).toContain("filteredEquipment"); }); it("should have 18 equipment items", () => { expect(content).toContain("L-Acoustics K2"); expect(content).toContain("Shure SM58"); expect(content).toContain("Sennheiser EW-DX 835"); }); it("should have Warenkorb button", () => { expect(content).toContain("Warenkorb ansehen"); }); it("should use TypeScript with lang=ts", () => { expect(content).toContain('