Files
AfiS-Aktensystem/worker/tests/nachricht.test.ts
T
Harlekin 2608c7587f Datenbank- und Worker-Tests auf den Chat in der Akte nachgezogen
Die Regel „eine Nachricht gehört zu genau einem Ort" wird jetzt stärker
geprüft als vorher: zwei Orte, kein Ort und genau einer. Vorher hing sie
allein an der Anwendung, jetzt an einem CHECK.

Der Worker-Test prüft ausdrücklich, dass die Meldung den Namen der Person
nicht nennt.
2026-09-03 15:19:04 +02:00

51 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { composeMessage } from '../src/notify.js'
/**
* Der Worker baut den Satz aus dem, was die Web-App freigegeben hat. Hier wird
* geprüft, dass er nichts hinzuerfindet — vor allem keinen Titel, wo keiner
* mitgeschickt wurde.
*/
describe('Text der Benachrichtigung', () => {
const url = 'https://afis.example.de/'
it('nennt Aktenzeichen und Link, den Titel nur wenn er mitkam', () => {
const ohne = composeMessage(
'entry.new',
{ caseNumber: 'AfiS-2026-0042', actorName: 'Insp. Vogel', title: null },
url,
)
expect(ohne).toBe(
'Neuer Eintrag in **AfiS-2026-0042** · Insp. Vogel · https://afis.example.de/faelle/AfiS-2026-0042',
)
expect(ohne).not.toContain('undefined')
const mit = composeMessage(
'entry.new',
{ caseNumber: 'AfiS-2026-0042', actorName: 'Insp. Vogel', title: 'Korruptionsverdacht' },
url,
)
expect(mit).toContain('Korruptionsverdacht')
})
it('meldet eine Erwähnung in einer Personalakte ohne den Namen der Person', () => {
const text = composeMessage(
'chat.mention',
{ personnelFileId: '0192abc', actorName: 'Vogel' },
url,
)
// Dass es zu jemandem eine Personalakte gibt, ist selbst eine Auskunft.
// Deshalb steht in der Meldung nur der Link, kein Name.
expect(text).toBe(
'Vogel hat dich im Chat einer Personalakte erwähnt · https://afis.example.de/personalakten/0192abc',
)
})
it('schweigt, wenn nichts Verwertbares mitkam', () => {
// Lieber gar nichts als ein Satz mit Lücken.
expect(composeMessage('entry.new', {}, url)).toBeNull()
expect(composeMessage('unbekannt', { caseNumber: 'AfiS-2026-0001' }, url)).toBeNull()
})
})