import { describe, it, expect } from "vitest"; import { render, screen } from "@testing-library/react"; import { MemoryRouter } from "react-router-dom"; import HostingAbo from "@/pages/HostingAbo"; import WartungsAbo from "@/pages/WartungsAbo"; import AGB from "@/pages/AGB"; // Texte, die auf einer Seite mehrfach vorkommen können, werden mit getAllByText // geprüft (getByText wirft bei mehreren Treffern); Abwesenheit mit queryAllByText. describe("Abo-Seiten", () => { it("Hosting-Abo-Seite: Preis, Postfach, Links", () => { render( , ); expect(screen.getAllByText(/15,00 € pro Monat/).length).toBeGreaterThan(0); expect(screen.getAllByText(/1 E-Mail-Postfach/).length).toBeGreaterThan(0); expect(screen.getByRole("link", { name: "Verträge hier kündigen" })).toHaveAttribute( "href", "https://project.webklar.com/kuendigen.html", ); expect(screen.getByRole("link", { name: /Vertragsunterlagen als PDF/ })).toHaveAttribute( "href", "https://project.webklar.com/WEBklar-Abo-Vertragsunterlagen.pdf", ); }); it("Wartungs-Abo-Seite: beliebig viele Postfächer, Zusatzspeicher", () => { render( , ); expect(screen.getAllByText(/beliebig viele Postfächer/).length).toBeGreaterThan(0); expect(screen.queryAllByText("1 E-Mail-Postfach").length).toBe(0); expect(screen.queryAllByText(/1 E-Mail-Postfach/).length).toBe(0); expect(screen.getAllByText(/1,00 €/).length).toBeGreaterThan(0); }); it("AGB Modul C verweist auf das Hosting-Abo", () => { render( , ); expect(screen.getAllByText(/Hosting-Abo/).length).toBeGreaterThan(0); expect(screen.queryAllByText(/verlängern sich automatisch/).length).toBe(0); }); });