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('kann eine Erwähnung in einem Kanal melden', () => { expect( composeMessage('chat.mention', { channelKey: 'leitung', actorName: 'Vogel' }, url), ).toBe('Vogel hat dich in #leitung erwähnt · https://afis.example.de/kanaele/leitung') }) 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() }) })