Merge feature/terminplaner-tp2 (a629b25) in feature/oeffnungszeiten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-05 04:42:31 +00:00
commit 1d5a565e9f
95 files changed
+12879 -546

No files matched your search

+9 -6
View File
@@ -15,10 +15,11 @@ const reg = await import('../server/services/featureRegistry.js')
const sf = await import('../server/services/siteFeatures.js')
const { createFeatureTicket } = await import('../server/services/ticketAdmin.js')
// Wortlaut-Pin des News-Satzes und der Fassung (der einzige Literal-Pin auf Texte, die Block F2 ändert)
// Wortlaut-Pin des News-Satzes und der Fassung (der einzige Literal-Pin auf Texte, die Block F2 ändert); die Fassung ist der
// Tag <F> = config.termine.avvVersion, beim Anheben von <F> ändert sich auch dieser Pin
const NEWS_SATZ =
'Ich verlange ausdrücklich, dass WEBklar vor Ablauf der Widerrufsfrist mit dem Einbau beginnt. Mir ist bekannt, dass mein Widerrufsrecht erlischt, sobald der Einbau vollständig erbracht ist (§ 356 Abs. 4 BGB).'
const NEWS_FASSUNG = '2026-09-30'
'Ich verlange ausdrücklich, dass WEBklar vor Ablauf der Widerrufsfrist mit dem Einbau beginnt. Mir ist bekannt, dass mein Widerrufsrecht mit der vollständigen Erbringung des Einbaus erlischt (§ 356 Abs. 5 Nr. 2 BGB). Widerrufe ich vor der vollständigen Erbringung, schulde ich einen angemessenen Betrag für die bis dahin erbrachte Leistung (§ 357a Abs. 2 BGB).'
const NEWS_FASSUNG = '2026-10-05'
const SITE_KEY = 'abcdefghijklmnop'
@@ -234,7 +235,9 @@ test('Termine: Preis und Struktur', async () => {
assert.ok(item.text.length > 0)
assert.equal(item.url, undefined, 'ohne url')
}
assert.equal(t.widerruf, null)
// Task F7: die Widerrufsbelehrung der Funktionen trägt die Fassung des Registers und die versionierte Adresse
assert.deepEqual(t.widerruf, { version: config.termine.avvVersion, url: `/rechtliches/widerrufsbelehrung-funktionen-${config.termine.avvVersion}.html` })
assert.equal(t.consent.version, config.termine.avvVersion)
assert.equal(t.returnHash, 'termine')
assert.equal(t.returnProjekt, true)
assert.equal(t.requiresWartungsAbo, true)
@@ -280,7 +283,7 @@ test('Termine-Ticketdetails werden erst beim Aufruf geladen', async () => {
})
// ---------------------------------------------------------------------------------- Block F ---
test('Bestelltexte ohne ENTWURF', { todo: 'Block F ersetzt die Platzhaltertexte' }, async () => {
test('Bestelltexte ohne ENTWURF', async () => {
const t = config.features.termine
const frei = (wert, was) => assert.doesNotMatch(JSON.stringify(wert), /ENTWURF/, `${was} enthält ENTWURF`)
frei(t.consent.version, 'consent.version')
@@ -289,7 +292,7 @@ test('Bestelltexte ohne ENTWURF', { todo: 'Block F ersetzt die Platzhaltertexte'
frei(t.avv, 'avv')
frei(t.widerruf, 'widerruf')
// mails.danach und mails.bereit schreibt der Inhaber in seiner Mailrunde
// ab B7 gibt es den Haken belehrung (Platzhaltertext bis F7)
// der Haken belehrung liefert seit F7 die Widerrufsbelehrung der Funktionen
const belehrung = reg.featureHaken('termine').belehrung
if (belehrung) frei(await belehrung(), 'belehrung')
})