Files
Webklar-Kundenbereich/test/knBestellQuelltext.test.js
T

29 lines
1.5 KiB
JavaScript

import { test } from 'node:test'
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
// Review Focus 1 als Quelltext-Pin: Die Kundenart und der Beginn der Bestellung kommen nie aus dem Body der Anfrage
const quelle = (datei) => readFileSync(new URL(`../${datei}`, import.meta.url), 'utf8')
test('Server-Routen lesen die Kundenart nie aus dem Body', () => {
for (const datei of ['server/routes/abo.js', 'server/routes/takeoverCredits.js']) {
const q = quelle(datei)
assert.doesNotMatch(q, /\b(?:req\.)?body\??\.(kundenart|unternehmer)\b/, datei)
assert.doesNotMatch(q, /\{[^}]*\b(kundenart|unternehmer)\b[^}]*\}\s*=\s*(?:req\.)?body/, datei)
assert.doesNotMatch(q, /\{[^}]*\b(kundenart|unternehmer)\b[^}]*\}\s*=\s*req\.body/, datei)
}
})
test('Kundenart stammt aus kundenartWirksam, nicht aus Antwort-Daten des Clients', () => {
assert.match(quelle('server/routes/abo.js'), /kundenartWirksam\(/)
assert.match(quelle('server/routes/takeoverCredits.js'), /kundenartWirksam\(/)
})
test('Fassung 6 liest startChoice nur im alten Weg (Fassung 5)', () => {
const q = quelle('server/routes/abo.js')
const checkout = q.slice(q.indexOf("router.post('/checkout'"), q.indexOf("router.post('/portal'"))
// in Fassung 6 bestimmt allein beginnWahl den Beginn; startChoice fließt nur über den alten Zweig ein
assert.match(checkout, /const beginnWahl = sechs \? \(kundenart === 'unternehmen' \|\| earlyStart === true \? 'sofort' : 'nach_frist'\) : startChoice/)
assert.doesNotMatch(checkout, /startChoice:\s*startChoice/)
})