Buchungskalender: Mails – Link-Pflicht und Testprotokoll nur im Test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e15486263f
commit
4553bc8e92
5 files changed
+42
-10
No files matched your search
@@ -15,5 +15,6 @@ export function useTestEnv({ appwriteUrl, stripeUrl }) {
|
||||
SMTP_HOST: '',
|
||||
SESSION_SECRET: 'test-session-secret-mit-mindestens-32-zeichen',
|
||||
ABO_PILOT_EMAILS: '*',
|
||||
UK_TESTPROTOKOLL: '1',
|
||||
})
|
||||
}
|
||||
@@ -251,7 +251,7 @@ test('Storno: Erstattung scheitert -> storniert, eine Stornorechnung, 502; Wiede
|
||||
assert.equal(a.erstattetCent, 0)
|
||||
assert.equal(aw.docs('ukRechnungen').size, 2)
|
||||
assert.deepEqual(arten(), ['G22'])
|
||||
assert.equal(mails._aufrufe[0].extra.grund, 'g')
|
||||
assert.equal(mails._aufrufe[0].grund, 'g')
|
||||
const r = await ab.storniere(sctx, id, { grund: 'g', erstattungCent: 20000, now: NOW })
|
||||
assert.equal(r.anfrage.erstattetCent, 20000)
|
||||
assert.equal(aw.docs('ukRechnungen').size, 2)
|
||||
|
||||
@@ -7,9 +7,9 @@ import { schemaKeys } from './support/schema.js'
|
||||
import { TERMINE_DATETIMES } from '../server/services/termine/schema.js'
|
||||
|
||||
// Buchungskalender Task 20: Mails an Gaeste (ueber die Warteschlange), Vermieter und Team
|
||||
const NAMEN = ['ukUnterkuenfte', 'ukPreise', 'ukAnfragen', 'ukRechnungen', 'ukEinstellungen', 'termineOutbox']
|
||||
const NAMEN = ['customers', 'ukUnterkuenfte', 'ukPreise', 'ukAnfragen', 'ukRechnungen', 'ukEinstellungen', 'termineOutbox']
|
||||
const aw = await startAppwriteMock({
|
||||
schema: Object.fromEntries(NAMEN.map((n) => [n, schemaKeys(n)])),
|
||||
schema: Object.fromEntries(NAMEN.map((n) => [n, n === 'customers' ? ['name', 'email'] : schemaKeys(n)])),
|
||||
datetimes: { ...TERMINE_DATETIMES, ukAnfragen: ['fristAt', 'freigegebenAt', 'gebuchtAt', 'abgelehntAt', 'abgelaufenAt', 'storniertAt', 'bezahltAt'] },
|
||||
defaultLimit: 25,
|
||||
})
|
||||
@@ -58,7 +58,8 @@ test('G17: Absender = Firma, Antworten an den Vermieter, Buchungslink mit Token,
|
||||
assert.ok(m.text.includes('Kostenlos bis 7 Tage vorher.'))
|
||||
assert.ok(m.text.includes('05.11.2026, 17:00 Uhr'))
|
||||
assert.ok(m.text.includes('Erst mit dem Klick auf „Zahlungspflichtig buchen“'))
|
||||
assert.equal(mails._aufrufe[0].art, 'G17')
|
||||
assert.deepEqual(mails._aufrufe[0], { an: 'gast', art: 'G17', anfrageId: 'a1', hatToken: true, grund: undefined })
|
||||
assert.ok(!JSON.stringify(mails._aufrufe).includes('tok123'))
|
||||
})
|
||||
|
||||
test('Minimaler ctx: Einstellungen und Unterkunft werden selbst geladen', async () => {
|
||||
@@ -70,8 +71,10 @@ test('Minimaler ctx: Einstellungen und Unterkunft werden selbst geladen', async
|
||||
assert.doesNotMatch(m.text, /buchung\/a1/)
|
||||
})
|
||||
|
||||
test('G17 ohne Token wirft, G16 hat keinen Link', async () => {
|
||||
test('G17 ohne Token oder ohne siteKey wirft vor dem Einreihen, G16 hat keinen Link', async () => {
|
||||
await assert.rejects(() => mails.anGast('G17', ctx, anfrage(), {}), TypeError)
|
||||
await assert.rejects(() => mails.anGast('G17', { ...ctx, siteKey: '' }, anfrage(), { token: 't' }), TypeError)
|
||||
assert.equal(aw.docs('termineOutbox').size, 0)
|
||||
await mails.anGast('G16', ctx, anfrage({ status: 'neu', posten: null, summen: null }))
|
||||
const [m] = await gesendet()
|
||||
assert.doesNotMatch(m.text, /\?t=/)
|
||||
@@ -111,3 +114,17 @@ test('Vermieter: K31 geht an den Besitzer ohne BCC, mit Portal-Link; T22 ans Tea
|
||||
assert.ok(k.text.includes('Eva Gast'))
|
||||
await assert.rejects(() => mails.anGast('K31', ctx, anfrage()), TypeError)
|
||||
})
|
||||
|
||||
test('Gastname wird in der Mail maskiert', async () => {
|
||||
await mails.anGast('G16', ctx, anfrage({ gast: { name: '<b>x</b>', email: 'eva@example.com' } }))
|
||||
const [m] = await gesendet()
|
||||
assert.ok(!m.html.includes('<b>x</b>'))
|
||||
assert.ok(m.html.includes('<b>x</b>'))
|
||||
})
|
||||
|
||||
test('K31: Kundenname kommt aus dem Kundendokument, wenn ctx keinen hat', async () => {
|
||||
aw.seed('customers', { $id: 'c1', name: 'Mimi Muster', email: 'besitzer@example.com' })
|
||||
await mails.anVermieter('K31', ctx, { anfrage: anfrage({ status: 'neu' }) })
|
||||
const [k] = await gesendet()
|
||||
assert.ok(k.text.includes('Hallo Mimi Muster'))
|
||||
})
|
||||
Reference in new issue
Block a user