Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
MAX_PARTICIPANT_DRAFTS,
|
|
parseParticipantDrafts,
|
|
CASE_STATUSES,
|
|
} from '@/lib/cases/terms'
|
|
import { caseText } from '@/lib/i18n/cases'
|
|
|
|
/**
|
|
* Die Zerlegung der Beteiligtenzeilen aus dem Formular „Neue Fallakte".
|
|
*
|
|
* Sie entscheidet, wer mit welcher Rolle in eine Akte kommt - und seit die
|
|
* Rolle über den Zugriff entscheidet (nur Arbeitsrollen öffnen die Akte, siehe
|
|
* lib/cases/terms.ts), darf eine erfundene Rolle hier nicht durchrutschen.
|
|
*/
|
|
describe('Beteiligte beim Anlegen', () => {
|
|
it('nimmt Konten und Personalakten mit ihrer Rolle', () => {
|
|
expect(
|
|
parseParticipantDrafts(['user:123|LEAD', 'file:abc|SUSPECT']),
|
|
).toEqual([
|
|
{ kind: 'user', id: '123', role: 'LEAD' },
|
|
{ kind: 'file', id: 'abc', role: 'SUSPECT' },
|
|
])
|
|
})
|
|
|
|
it('lässt Unsinn weg, statt die Akte scheitern zu lassen', () => {
|
|
expect(
|
|
parseParticipantDrafts([
|
|
'user:123|ERFUNDEN', // Rolle gibt es nicht
|
|
'irgendwas:1|LEAD', // Art gibt es nicht
|
|
'user:|LEAD', // keine Kennung
|
|
'user:1', // keine Rolle
|
|
'',
|
|
42,
|
|
null,
|
|
]),
|
|
).toEqual([])
|
|
})
|
|
|
|
it('nimmt dieselbe Person in zwei Rollen, aber nicht zweimal in derselben', () => {
|
|
// Zeuge und Betroffener zugleich kommt vor. Zweimal Zeuge ist ein Versehen.
|
|
expect(
|
|
parseParticipantDrafts(['file:a|WITNESS', 'file:a|SUBJECT', 'file:a|WITNESS']),
|
|
).toEqual([
|
|
{ kind: 'file', id: 'a', role: 'WITNESS' },
|
|
{ kind: 'file', id: 'a', role: 'SUBJECT' },
|
|
])
|
|
})
|
|
|
|
it('nimmt nicht beliebig viele', () => {
|
|
const viele = Array.from({ length: 80 }, (_, i) => `file:p${i}|WITNESS`)
|
|
expect(parseParticipantDrafts(viele)).toHaveLength(MAX_PARTICIPANT_DRAFTS)
|
|
})
|
|
})
|
|
|
|
describe('Zustände einer Fallakte', () => {
|
|
it('hat für jeden Zustand einen Namen und eine Erklärung', () => {
|
|
// Der Filter zeigte fünf von sieben Zuständen - ausgerechnet „Entwurf" und
|
|
// „Versiegelt" fehlten, also die beiden häufigsten in der Liste. Diese
|
|
// Prüfung fällt auf, wenn wieder einer vergessen wird.
|
|
for (const status of CASE_STATUSES) {
|
|
expect(caseText.statusNames[status], status).toBeTruthy()
|
|
expect(caseText.statusHints[status], status).toBeTruthy()
|
|
}
|
|
expect(CASE_STATUSES).toHaveLength(7)
|
|
})
|
|
})
|