Archived
AGB § 9: Zeiterfassung in 15-Minuten-Schritten und Unterstützung
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
034892c899
commit
72f278b478
2 files changed
+48
No files matched your search
@@ -192,6 +192,13 @@ const AGB = () => {
|
||||
</h2>
|
||||
<ol className="list-decimal list-inside space-y-2 text-muted-foreground leading-relaxed [&>li]:pl-2">
|
||||
<li>Die Vergütung ergibt sich aus dem Angebot.</li>
|
||||
<li>
|
||||
Wird nach Aufwand abgerechnet, erfasst WEBklar die Arbeitszeit je Arbeitsschritt in Schritten von
|
||||
15 Minuten; angefangene 15 Minuten werden aufgerundet. Wirkt eine weitere Person unterstützend mit,
|
||||
rechnet WEBklar für sie die Hälfte der Arbeitszeit des Arbeitsschritts an, aufgerundet auf volle
|
||||
15 Minuten; bei mehreren unterstützenden Personen gilt das für jede. Jeder Arbeitsschritt und jede
|
||||
Unterstützung ist im Kundenportal einsehbar.
|
||||
</li>
|
||||
<li>Projektleistungen sind nach Vereinbarung fällig.</li>
|
||||
<li>Für die Abos gelten die Vertragsbedingungen für die WEBklar-Abos.</li>
|
||||
</ol>
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { render, screen, within } from "@testing-library/react";
|
||||
import { MemoryRouter } from "react-router-dom";
|
||||
import AGB from "@/pages/AGB";
|
||||
|
||||
// Dieselben Future-Flags wie der BrowserRouter in App.tsx, sonst warnt React Router in der Testausgabe.
|
||||
const routerFuture = { v7_startTransition: true, v7_relativeSplatPath: true };
|
||||
|
||||
/** Rendert die AGB und liefert die Absätze von § 9 in der angezeigten Reihenfolge. */
|
||||
const verguetung = () => {
|
||||
render(
|
||||
<MemoryRouter future={routerFuture}>
|
||||
<AGB />
|
||||
</MemoryRouter>,
|
||||
);
|
||||
const section = screen.getByRole("heading", { name: "9. Vergütung und Zahlung" }).closest("section");
|
||||
if (!section) throw new Error("Abschnitt 9. Vergütung und Zahlung fehlt");
|
||||
return within(section).getAllByRole("listitem");
|
||||
};
|
||||
|
||||
describe("AGB § 9 Vergütung und Zahlung", () => {
|
||||
it("hat vier Absätze", () => {
|
||||
expect(verguetung()).toHaveLength(4);
|
||||
});
|
||||
|
||||
it("Absatz 1 bleibt: Vergütung aus dem Angebot", () => {
|
||||
expect(verguetung()[0]).toHaveTextContent("Die Vergütung ergibt sich aus dem Angebot.");
|
||||
});
|
||||
|
||||
it("Absatz 2: 15-Minuten-Schritte und Unterstützung bei Abrechnung nach Aufwand", () => {
|
||||
expect(verguetung()[1]).toHaveTextContent(
|
||||
"Wird nach Aufwand abgerechnet, erfasst WEBklar die Arbeitszeit je Arbeitsschritt in Schritten von 15 Minuten; angefangene 15 Minuten werden aufgerundet. Wirkt eine weitere Person unterstützend mit, rechnet WEBklar für sie die Hälfte der Arbeitszeit des Arbeitsschritts an, aufgerundet auf volle 15 Minuten; bei mehreren unterstützenden Personen gilt das für jede. Jeder Arbeitsschritt und jede Unterstützung ist im Kundenportal einsehbar.",
|
||||
);
|
||||
});
|
||||
|
||||
it("Absatz 3 und 4: Fälligkeit und Abos wie bisher", () => {
|
||||
const absaetze = verguetung();
|
||||
expect(absaetze[2]).toHaveTextContent("Projektleistungen sind nach Vereinbarung fällig.");
|
||||
expect(absaetze[3]).toHaveTextContent("Für die Abos gelten die Vertragsbedingungen für die WEBklar-Abos.");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user