import { test, after } from 'node:test' import assert from 'node:assert/strict' import { startAppwriteMock } from './support/appwriteMock.js' import { schemaKeys } from './support/schema.js' import { useTestEnv } from './support/testEnv.js' import { beispielAuftrag, beispielSettings, leseSeiten } from './auftraegePdfHilfe.js' // Die alte AB liegt im Appwrite-Nachbau (Schema aus L0); erzeugeAuftragPdf liest sie über getAuftrag aus auftragStore.js const aw = await startAppwriteMock({ schema: { auftraege: schemaKeys('auftraege') } }) after(() => aw.close()) useTestEnv({ appwriteUrl: aw.url, stripeUrl: 'http://127.0.0.1:1' }) const { erzeugeAuftragPdf } = await import('../server/services/auftraege/pdf.js') const { AB_TEXTE } = await import('../server/services/auftraege/texte.js') const { AuftragError } = await import('../server/services/auftraege/fehler.js') const optionen = { settings: beispielSettings, jetzt: new Date('2026-10-06T10:00:00.000Z') } const ohneLeerraum = (text) => text.replace(/\s+/g, '') const text = (pdf) => ohneLeerraum(leseSeiten(pdf).flat().join('')) const hinweis = ohneLeerraum(AB_TEXTE.ersetzt({ nummer: 'AB-2026-0003', datum: '01.10.2026' })) aw.seed('auftraege', { $id: 'alt1', kundenId: 'k1', status: 'versendet', nummer: 'AB-2026-0003', gesendetAm: '2026-10-01T09:00:00.000+00:00' }) test('ersetztId ohne Option: die alte AB wird gelesen, ihre Nummer und ihr Berliner Datum stehen im PDF', async () => { const pdf = await erzeugeAuftragPdf(beispielAuftrag({ ersetztId: 'alt1' }), optionen) assert.ok(text(pdf).includes(hinweis)) }) test('ersetztId verweist auf eine unbekannte AB: AuftragError 409 statt PDF ohne den Hinweis', async () => { await assert.rejects(erzeugeAuftragPdf(beispielAuftrag({ ersetztId: 'gibtsnicht' }), optionen), (e) => e instanceof AuftragError && e.status === 409) }) test('ersetzt: null unterdrückt Hinweis und Lesen, auch bei gesetztem ersetztId', async () => { const pdf = await erzeugeAuftragPdf(beispielAuftrag({ ersetztId: 'gibtsnicht' }), { ...optionen, ersetzt: null }) assert.equal(text(pdf).includes(hinweis), false) })