Ein namentlich adressiertes Schreiben landet bei der Person, die den Vorgang kennt, statt in der Poststelle. Am Vorgang laesst sich jetzt ein Kontakt aus dem Verzeichnis als Ansprechpartner benennen; die Sachstandsanfrage redet ihn an, und sein Name steht ueber der Behoerde. Die Sachstandsanfrage konnte das schon - sie bekam den Namen nur nie uebergeben. entwurf.ts lud einen der verknuepften Kontakte und verwarf ihn wieder. Wer angeredet wird, ist jetzt eine Entscheidung und kein Zufall. Aufbau: - Migration: ansprechpartnerId am Vorgang (SetNull - ein Vorgang darf nicht daran haengen, dass es den Kontakt noch gibt) und anrede am Kontakt. - Die Anrede als reine Funktion in kontakte/anrede.ts. Geraten wird nie: ohne hinterlegte Anrede wird mit vollem Namen angeredet. Ein leerer Name mit gesetzter Anrede faellt auf die allgemeine Anrede zurueck - "Sehr geehrte Frau ," darf nie herausgehen. - Der Wechsel des Ansprechpartners steht mit NAMEN im Protokoll. Zwei cuids nebeneinander waeren protokolliert, aber nicht nachvollziehbar, und nachvollziehbar war die Anforderung. - Der Ansprechpartner wird gegen die Akte geprueft, bevor er gespeichert wird - sein Name steht anschliessend im Briefkopf. Nebenbei behoben: Der Schreiben-Editor verwarf die empfaengerAnschrift aus dem Entwurf, sein State startete immer leer. Jetzt kommt die Anschrift des Ansprechpartners im Formular an. Geprueft: neun Einheitstests fuer die Anrede, fuenf End-to-End-Tests von der Auswahl bis zum Protokolleintrag. Refs #9
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { ALLGEMEINE_ANREDE, anredeZeile, nachnameAus } from '@/lib/kontakte/anrede'
|
|
|
|
/**
|
|
* Die Briefanrede.
|
|
*
|
|
* Zwei Zusagen werden hier gepruft: Es wird nie geraten, und ein halb
|
|
* gefuellter Name fuehrt nie zu einer verstuemmelten Anrede.
|
|
*/
|
|
|
|
describe('Nachname', () => {
|
|
it('nimmt das letzte Wort', () => {
|
|
expect(nachnameAus('Anna Schmitt')).toBe('Schmitt')
|
|
})
|
|
|
|
it('lässt Titel und Vornamen weg', () => {
|
|
expect(nachnameAus('Dr. Anna Maria Schmitt')).toBe('Schmitt')
|
|
})
|
|
|
|
it('hält einen Doppelnamen zusammen', () => {
|
|
expect(nachnameAus('Anna Schmitt-Berger')).toBe('Schmitt-Berger')
|
|
})
|
|
|
|
it('verträgt überzählige Leerzeichen', () => {
|
|
expect(nachnameAus(' Anna Schmitt ')).toBe('Schmitt')
|
|
})
|
|
})
|
|
|
|
describe('Anredezeile', () => {
|
|
it('redet eine Frau mit Nachnamen an', () => {
|
|
expect(anredeZeile({ name: 'Anna Schmitt', anrede: 'FRAU' })).toBe(
|
|
'Sehr geehrte Frau Schmitt,',
|
|
)
|
|
})
|
|
|
|
it('redet einen Herrn mit Nachnamen an', () => {
|
|
expect(anredeZeile({ name: 'Peter Vogel', anrede: 'HERR' })).toBe(
|
|
'Sehr geehrter Herr Vogel,',
|
|
)
|
|
})
|
|
|
|
it('rät nicht, wenn die Anrede fehlt', () => {
|
|
// Lieber die etwas steife Form als ein falsch geratenes "Frau".
|
|
expect(anredeZeile({ name: 'Kim Berger', anrede: 'OHNE' })).toBe(
|
|
'Sehr geehrte(r) Kim Berger,',
|
|
)
|
|
})
|
|
|
|
it('bleibt ohne Ansprechpartner allgemein', () => {
|
|
expect(anredeZeile(null)).toBe(ALLGEMEINE_ANREDE)
|
|
})
|
|
|
|
it('wird bei leerem Namen nicht verstümmelt', () => {
|
|
// Der Fehler, der hier nie passieren darf: "Sehr geehrte Frau ,".
|
|
expect(anredeZeile({ name: ' ', anrede: 'FRAU' })).toBe(ALLGEMEINE_ANREDE)
|
|
})
|
|
})
|