import { describe, expect, it } from 'vitest' import { briefkopfBauen } from '@/lib/vertraege/briefkopf' import { absenderBlock, datumsZeile } from '@/lib/vertraege/anschreiben' /** * Der Absenderblock. * * Ein foermliches Schreiben ohne Ruecksendeadresse wirkt unserioes und * macht es der Gegenstelle schwer zu antworten. Umgekehrt gilt: Lieber * nur der Name als ein Block mit leeren Zeilen - eine halb ausgefuellte * Adresse sieht nach Fehler aus, ein blosser Name nach Absicht. */ const BETREUTE = { vorname: 'Erika', nachname: 'Musterfrau', anrede: 'Frau', geburtsdatum: new Date(Date.UTC(1943, 3, 17)), heimName: 'Seniorenheim Sonnenhof', heimStrasse: 'Heimweg 3', heimPlz: '95445', heimOrt: 'Bayreuth', betreuungsgericht: 'Amtsgericht Bayreuth', aktenzeichenGericht: 'XVII 412/25', bestellungAm: new Date(Date.UTC(2026, 1, 14)), } const VOLLSTAENDIG = { name: 'Florian Wilde', strasse: 'Cottenbacher Str. 23', plz: '95445', ort: 'Bayreuth', } describe('Absenderblock', () => { it('nennt Name, Straße und Ort', () => { const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: VOLLSTAENDIG }) expect(absenderBlock(kopf)).toBe('Florian Wilde\nCottenbacher Str. 23\n95445 Bayreuth') }) it('bleibt beim Namen, wenn keine Anschrift hinterlegt ist', () => { // Kein Block mit leeren Zeilen - das sieht nach Fehler aus. const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: { name: 'Florian Wilde' } }) expect(absenderBlock(kopf)).toBe('Florian Wilde') }) it('lässt die Straße weg, wenn nur der Ort bekannt ist', () => { const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: { name: 'Florian Wilde', plz: '95445', ort: 'Bayreuth' }, }) expect(absenderBlock(kopf)).toBe('Florian Wilde\n95445 Bayreuth') }) it('verträgt einen Ort ohne PLZ', () => { const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: { name: 'Florian Wilde', ort: 'Bayreuth' }, }) expect(absenderBlock(kopf)).toBe('Florian Wilde\nBayreuth') }) it('nimmt die Anschrift vom Betreuer, nicht vom Heim', () => { // Die Heimadresse ist die der betreuten Person und gehört in den // Anschriftenblock, nie in den Absender. const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: VOLLSTAENDIG }) expect(absenderBlock(kopf)).not.toContain('Heimweg') expect(kopf.betreuteAnschrift).toContain('Heimweg 3') }) }) describe('Datumszeile', () => { const heute = new Date(Date.UTC(2026, 7, 23)) it('stellt den Ort des Betreuers voran', () => { const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: VOLLSTAENDIG }) expect(datumsZeile(kopf.betreuerOrt, heute)).toBe('Bayreuth, den 23.08.2026') }) it('lässt ohne Ort das Komma weg', () => { const kopf = briefkopfBauen({ betreute: BETREUTE, benutzer: { name: 'Florian Wilde' } }) expect(datumsZeile(kopf.betreuerOrt, heute)).toBe('23.08.2026') }) })