test: Abnahmekriterien als Playwright-Tests, Anmeldungen im Protokoll
Zehn Tests, die genau die Zusagen aus dem Auftrag pruefen - an der laufenden Anwendung, nicht an einzelnen Funktionen: - Aus dem Bestellungsdatum entstehen die gesetzlichen Fristen, mit Rechtsgrundlage, und die Aufwandspauschale ist als Ausschlussfrist gekennzeichnet. - Ein PDF laesst sich hochladen und in zwei Klicks einem Vorgang zuordnen. - Eine Datei, die sich nur als PDF ausgibt, wird abgewiesen. Das ist der Angriff, gegen den die Pruefung an den Magic Bytes gebaut ist: HTML mit PDF-Endung und PDF-MIME-Typ, das spaeter als Seite ausgeliefert wuerde. - Ein genehmigungspflichtiger Vorgang bietet die Stufe "Vollzogen" gar nicht erst an, solange kein Beschluss hinterlegt ist (§ 1858 BGB). - Das Vermoegensverzeichnis kommt als echtes PDF heraus - geprueft wird die Signatur %PDF-, nicht nur der Dateiname. - Der Vollexport verlangt eine frische Anmeldung. - Am Handy: kein waagerechtes Scrollen der Seite, Bedienelemente mindestens 40 Pixel hoch, Schublade per Escape schliessbar. Dazu ein echter Fund aus dem Protokolltest: Anmeldungen und Abmeldungen tragen keine betreuteId - sie haengen am Konto, nicht an der Akte. Die Protokollansicht filterte nur nach betreuteId und liess damit ausgerechnet die Frage weg, wer wann auf die Akte zugegriffen hat. Jetzt werden beide Arten von Eintraegen gezeigt. 34 Tests, je einmal am Schreibtisch und am Handy. Etappe: 8 Phase: Haertung
This commit is contained in:
@@ -70,14 +70,27 @@ export default async function ProtokollSeite({
|
||||
const proSeite = 50
|
||||
const nummer = Math.max(1, Number.parseInt(seite, 10) || 1)
|
||||
|
||||
/*
|
||||
* Zwei Arten von Eintraegen gehoeren hierher:
|
||||
*
|
||||
* 1. Alles, was diese Betreuung betrifft.
|
||||
* 2. Anmeldungen, Abmeldungen und Kontoaenderungen des angemeldeten
|
||||
* Benutzers. Die tragen keine betreuteId - sie haengen ja am Konto,
|
||||
* nicht an der Akte. Wuerde man nur nach betreuteId filtern, fehlte
|
||||
* ausgerechnet die Frage "wer hat wann auf die Akte zugegriffen".
|
||||
*/
|
||||
const filter = {
|
||||
OR: [{ betreuteId: aktive.id }, { userId: benutzer.id, betreuteId: null }],
|
||||
}
|
||||
|
||||
const [eintraege, gesamt] = await Promise.all([
|
||||
db.auditLog.findMany({
|
||||
where: { betreuteId: aktive.id },
|
||||
where: filter,
|
||||
orderBy: { zeitpunkt: 'desc' },
|
||||
skip: (nummer - 1) * proSeite,
|
||||
take: proSeite,
|
||||
}),
|
||||
db.auditLog.count({ where: { betreuteId: aktive.id } }),
|
||||
db.auditLog.count({ where: filter }),
|
||||
])
|
||||
|
||||
const seiten = Math.max(1, Math.ceil(gesamt / proSeite))
|
||||
@@ -86,7 +99,7 @@ export default async function ProtokollSeite({
|
||||
<div className="space-y-6">
|
||||
<SeitenKopf
|
||||
titel="Protokoll"
|
||||
beschreibung="Jede Änderung an den Daten dieser Betreuung, lückenlos und in der Reihenfolge, in der sie geschehen ist."
|
||||
beschreibung="Jede Änderung an den Daten dieser Betreuung und jede Anmeldung an deinem Zugang — lückenlos und in der Reihenfolge, in der sie geschehen ist."
|
||||
/>
|
||||
|
||||
<Alert variant="hinweis">
|
||||
|
||||
Reference in New Issue
Block a user