Kundenansicht neu P7: Gutschrift-Antrag schlank, Bedingungen als eigene Ansicht statt Klappe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9b00771d11
commit
d17520c4f5
5 files changed
+235
-71
No files matched your search
@@ -7,7 +7,9 @@ import { fileURLToPath } from 'node:url'
|
||||
const WURZEL = path.join(path.dirname(fileURLToPath(import.meta.url)), '..')
|
||||
const NEU = path.join(WURZEL, 'public', 'neu')
|
||||
const MODULE = ['ansicht-hilfen', 'rechnung-offen', 'install-hinweis', 'website-details', 'ansicht-website', 'ansicht-chat', 'ansicht-vertraege', 'vertraege-rechnungen', 'vertraege-abo', 'ansicht-stunden', 'ansicht-speicher', 'ansicht-bestellen', 'ansicht-wechsel', 'ansicht-gutschrift', 'ansicht-passwort', 'bestell-bausteine']
|
||||
const WORTLAUT = ['ansicht-speicher', 'ansicht-bestellen', 'ansicht-wechsel', 'ansicht-gutschrift']
|
||||
// Seit P7 sprechen auch die vier Bestellseiten „du“ (Fassung 6, C14); einzige Ausnahme ist der Rechtstext TAKEOVER_CONDITIONS (hash-gepinnt)
|
||||
const WORTLAUT = []
|
||||
const BESTELLSEITEN = ['ansicht-bestellen', 'ansicht-wechsel', 'ansicht-speicher', 'ansicht-gutschrift', 'bestell-bausteine']
|
||||
const vorhanden = MODULE.filter((n) => existsSync(path.join(NEU, `${n}.js`)))
|
||||
|
||||
const ohneKommentare = (q) => q.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:'"`\\])\/\/[^\n]*/g, '$1')
|
||||
@@ -32,8 +34,24 @@ test('P2-Module: kein HTML-Einsetzen, nur relative Importe, keine Admin-Verweise
|
||||
}
|
||||
})
|
||||
|
||||
test('P2-Module: Du-Form, nur die vier Wortlaut-Dateien behalten die Sie-Form (C14)', () => {
|
||||
for (const n of vorhanden.filter((x) => !WORTLAUT.includes(x))) assert.doesNotMatch(lies(n), /\b(Sie|Ihr(e[nmrs]?)?|Ihnen)\b/, n)
|
||||
/** Quelltext ohne den Rechtstext TAKEOVER_CONDITIONS (er bleibt Zeichen für Zeichen in der Sie-Form). */
|
||||
const ohneRechtstext = (q) => {
|
||||
const i = q.indexOf('const TAKEOVER_CONDITIONS')
|
||||
return i < 0 ? q : q.slice(0, i) + q.slice(q.indexOf(']', i))
|
||||
}
|
||||
|
||||
test('P2-Module: Du-Form in allen Modulen, einzige Ausnahme der Block TAKEOVER_CONDITIONS (C14, P7)', () => {
|
||||
for (const n of vorhanden.filter((x) => !WORTLAUT.includes(x))) assert.doesNotMatch(ohneRechtstext(lies(n)), /\b(Sie|Ihr(e[nmrs]?)?|Ihnen)\b/, n)
|
||||
assert.match(lies('ansicht-gutschrift'), /Ihr Abo ersetzt/, 'der Rechtstext bleibt unverändert in der Sie-Form')
|
||||
})
|
||||
|
||||
test('Bestellseiten: kein kundenart im Body, keine eigene h1 (Titel meldet die Ansicht)', () => {
|
||||
for (const n of BESTELLSEITEN) {
|
||||
assert.ok(existsSync(path.join(NEU, `${n}.js`)), n)
|
||||
const q = lies(n)
|
||||
assert.doesNotMatch(q, /body:\s*\{[^}]*kundenart/s, n)
|
||||
assert.doesNotMatch(q, /h\(\s*['"]h1['"]/, n)
|
||||
}
|
||||
})
|
||||
|
||||
test('public/neu/: kein Lila in irgendeiner Textdatei (die Prüfung lila liest jedes geladene Stylesheet samt ungenutzter Regeln)', () => {
|
||||
|
||||
Reference in new issue
Block a user