Stripe: Katalog Terminplaner-Einrichtung (149 €) und Checkout je Funktion aus dem Register
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c584d220c8
commit
98fa03aad7
6 files changed
+238
-13
No files matched your search
@@ -0,0 +1,55 @@
|
||||
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'
|
||||
|
||||
// scripts/stripe-products.mjs: der Import darf weder main() starten (kein Stripe-Aufruf, kein process.exit) noch etwas anlegen;
|
||||
// "--anlegen" macht der Inhaber im Livegang (Block G, Schritt 4).
|
||||
const aw = await startAppwriteMock()
|
||||
const st = await startFakeStripe()
|
||||
after(() => Promise.all([aw.close(), st.close()]))
|
||||
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
|
||||
const { config } = await import('../server/config.js')
|
||||
|
||||
const realExit = process.exit
|
||||
let exitCalls = 0
|
||||
process.exit = () => {
|
||||
exitCalls += 1
|
||||
}
|
||||
let script
|
||||
try {
|
||||
script = await import('../scripts/stripe-products.mjs')
|
||||
// main() liefe asynchron an: einen Moment warten, damit ein versehentlicher Start sichtbar wird
|
||||
await new Promise((resolve) => setTimeout(resolve, 100))
|
||||
} finally {
|
||||
process.exit = realExit
|
||||
}
|
||||
|
||||
test('Import startet main() nicht: kein Stripe-Aufruf, kein process.exit', () => {
|
||||
assert.equal(exitCalls, 0)
|
||||
assert.equal(st.calls.length, 0)
|
||||
})
|
||||
|
||||
test('KEYS enthaelt den Terminplaner-Katalogschluessel', () => {
|
||||
assert.deepEqual(script.KEYS, ['wartung', 'hosting', 'mailStorage', 'newsSetup', 'termineSetup'])
|
||||
})
|
||||
|
||||
test('catalogEntry liefert die Katalogeintraege aus der Konfiguration', () => {
|
||||
assert.equal(script.catalogEntry('termineSetup'), config.termineSetup)
|
||||
assert.equal(script.catalogEntry('newsSetup'), config.newsSetup)
|
||||
assert.equal(script.catalogEntry('mailStorage'), config.mailStorage)
|
||||
assert.equal(script.catalogEntry('wartung'), config.products.wartung)
|
||||
for (const key of script.KEYS) assert.ok(script.catalogEntry(key)?.lookupKey, `${key} hat einen lookupKey`)
|
||||
})
|
||||
|
||||
test('config.termineSetup: Festwerte', () => {
|
||||
assert.deepEqual(config.termineSetup, {
|
||||
key: 'termineSetup',
|
||||
name: 'Terminplaner – Einrichtung',
|
||||
amountCents: 14900,
|
||||
lookupKey: 'webklar_termine_einrichtung_14900',
|
||||
oneTime: true,
|
||||
priceNickname: 'Terminplaner-Einrichtung 149 €',
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user