import { expect, test } from '@playwright/test' import { PrismaClient } from '@prisma/client' import { anmelden } from './hilfen' /** * Die eigene Anschrift im Schreiben — gegen die echte Anwendung. * * Der Weg, um den es geht: einmal unter „Mein Konto" hinterlegen, und * ab da steht sie im Absenderblock und der Ort in der Datumszeile — * ohne dass man beim Schreiben daran denken muss. */ async function mitDb(arbeit: (db: PrismaClient) => Promise): Promise { const db = new PrismaClient() try { return await arbeit(db) } finally { await db.$disconnect() } } /** Zurück auf „nichts hinterlegt", damit der Fall auch prüfbar bleibt. */ async function anschriftLeeren(): Promise { await mitDb(async (db) => { await db.user.updateMany({ data: { strasse: null, plz: null, ort: null } }) }) } test.describe('Absenderanschrift', () => { test.beforeAll(async () => { await anschriftLeeren() }) test.afterAll(async () => { await anschriftLeeren() }) test('ohne hinterlegte Anschrift steht nur der Name im Brief', async ({ page }) => { await anmelden(page) await page.goto('/schreiben/neu?art=FREI') const text = await page.locator('textarea#text').inputValue() const zeilen = text.split('\n') // Erste Zeile ist der Absender, danach kommt gleich die Leerzeile. expect(zeilen[0]).toBe('Florian Wilde') expect(zeilen[1]).toBe('') // Kein Ort in der Datumszeile, also auch kein Komma davor. expect(text).not.toContain(', den ') }) test('speichert die Anschrift unter Mein Konto', async ({ page }) => { await anmelden(page) await page.goto('/konto') await page.locator('input#strasse').fill('Cottenbacher Str. 23') await page.locator('input#plz').fill('95445') await page.locator('input#ort').fill('Bayreuth') await page.getByRole('button', { name: 'Anschrift speichern' }).click() await expect(page.getByText('Deine Anschrift ist gespeichert.')).toBeVisible() await page.reload() await expect(page.locator('input#strasse')).toHaveValue('Cottenbacher Str. 23') }) test('trägt sie in Absenderblock und Datumszeile des Schreibens', async ({ page }) => { await anmelden(page) await page.goto('/schreiben/neu?art=FREI') const text = await page.locator('textarea#text').inputValue() const zeilen = text.split('\n') expect(zeilen[0]).toBe('Florian Wilde') expect(zeilen[1]).toBe('Cottenbacher Str. 23') expect(zeilen[2]).toBe('95445 Bayreuth') expect(text).toContain('Bayreuth, den ') }) test('steht auch im Rückkaufswert-Schreiben zum Vertrag', async ({ page }) => { const vertragId = await mitDb(async (db) => { const vertrag = await db.vertrag.findFirst({ where: { art: 'LEBENSVERSICHERUNG', geloeschtAm: null }, select: { id: true }, }) return vertrag?.id ?? '' }) test.skip(vertragId === '', 'Kein Lebensversicherungsvertrag im Bestand.') await anmelden(page) await page.goto(`/schreiben/neu?art=RUECKKAUFSWERT&vertragId=${vertragId}`) const text = await page.locator('textarea#text').inputValue() expect(text).toContain('Cottenbacher Str. 23') expect(text).toContain('Bayreuth, den ') }) })