Kundenansicht neu P7: GET /api/abo liefert Fassung 6 und Wortlaut nur der neuen Ansicht
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4a3b0030d2
commit
bf1e968a83
2 files changed
+76
-1
No files matched your search
@@ -0,0 +1,69 @@
|
||||
import { test, after } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { startAppwriteMock } from './support/appwriteMock.js'
|
||||
import { startFakeStripe } from './support/fakeStripe.js'
|
||||
import { useTestEnv } from './support/testEnv.js'
|
||||
import { schemaKeys } from './support/schema.js'
|
||||
|
||||
// GET /api/abo: Fassung 6 und Wortlaut nur für die neue Ansicht (Pilot), sonst die bisherige Antwort mit neun Schlüsseln
|
||||
const aw = await startAppwriteMock({
|
||||
schema: {
|
||||
subscriptions: schemaKeys('subscriptions'),
|
||||
contractEvents: schemaKeys('contractEvents'),
|
||||
aboOffers: schemaKeys('aboOffers'),
|
||||
hourCredits: schemaKeys('hourCredits'),
|
||||
featureConsents: schemaKeys('featureConsents'),
|
||||
},
|
||||
})
|
||||
const st = await startFakeStripe()
|
||||
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
|
||||
Object.assign(process.env, { KUNDENANSICHT_NEU: 'pilot', KUNDENANSICHT_NEU_PILOT_EMAILS: 'K@example.invalid, k3@example.invalid' })
|
||||
const { config } = await import('../server/config.js')
|
||||
const { startTestApp, get } = await import('./support/testApp.js')
|
||||
const { customerCookie, kundenansichtCookie, seedFixtures } = await import('./support/fixtures.js')
|
||||
const { default: aboRoutes } = await import('../server/routes/abo.js')
|
||||
const { termsDocFor } = await import('../server/services/products.js')
|
||||
|
||||
const app = await startTestApp({ '/api/abo': aboRoutes })
|
||||
after(() => Promise.all([app.close(), aw.close(), st.close()]))
|
||||
seedFixtures(aw)
|
||||
|
||||
test('Pilot-Kunde bekommt Fassung 6 und den Wortlaut', async () => {
|
||||
const neu = await get('/api/abo', { cookie: customerCookie('c1') })
|
||||
assert.equal(neu.termsVersion, config.abo.termsVersionNeu)
|
||||
assert.deepEqual([neu.bestelltexte.status, neu.bestelltexte.fassung, neu.bestelltexte.knopf], ['entwurf', config.abo.termsVersionNeu, 'Zahlungspflichtig bestellen'])
|
||||
assert.equal(neu.bestelltexte.abo.linkzeile.urls[0], termsDocFor(config.abo.termsVersionNeu).url)
|
||||
assert.match(neu.bestelltexte.abo.linkzeile.text, new RegExp(`Fassung ${config.abo.termsVersionNeu}\\)`))
|
||||
})
|
||||
|
||||
test('Kundenansicht der Mitarbeiter sieht dasselbe, Nicht-Pilot die alte Antwort', async () => {
|
||||
assert.ok((await get('/api/abo', { cookie: kundenansichtCookie() })).bestelltexte)
|
||||
const alt = await get('/api/abo', { cookie: customerCookie('c2') })
|
||||
assert.equal(alt.termsVersion, config.abo.termsVersion)
|
||||
assert.deepEqual(Object.keys(alt).sort(), ['available', 'lateStartAt', 'ledger', 'mailStorage', 'offers', 'products', 'subscription', 'termsVersion', 'testAccount'])
|
||||
})
|
||||
|
||||
test('Ohne Neu-Fassung in der Konfiguration bleibt auch der Pilot bei der alten Antwort', async () => {
|
||||
const gemerkt = config.abo.termsVersionNeu
|
||||
for (const leer of ['', undefined]) {
|
||||
config.abo.termsVersionNeu = leer
|
||||
try {
|
||||
const r = await get('/api/abo', { cookie: customerCookie('c1') })
|
||||
assert.equal('bestelltexte' in r, false)
|
||||
assert.equal(r.termsVersion, config.abo.termsVersion)
|
||||
} finally {
|
||||
config.abo.termsVersionNeu = gemerkt
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
test('Schalter off: auch ein Pilot-Kunde bekommt die alte Antwort', async () => {
|
||||
const modus = config.kundenansichtNeu.mode
|
||||
config.kundenansichtNeu.mode = 'off'
|
||||
try {
|
||||
const r = await get('/api/abo', { cookie: customerCookie('c1') })
|
||||
assert.deepEqual([r.termsVersion, 'bestelltexte' in r], [config.abo.termsVersion, false])
|
||||
} finally {
|
||||
config.kundenansichtNeu.mode = modus
|
||||
}
|
||||
})
|
||||
Reference in new issue
Block a user