Terminplaner: Staff-Aktivierung nur mit Zustimmung in Textform (Modus on), Portal
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5b5b4b90eb
commit
bade4edb74
5 files changed
+381
-7
No files matched your search
@@ -1,7 +1,11 @@
|
||||
import { test, beforeEach, afterEach } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { config } from '../server/config.js'
|
||||
import { termineAus, termineFuerKunde, termineModus } from '../server/services/termine/schalter.js'
|
||||
import * as schalter from '../server/services/termine/schalter.js'
|
||||
|
||||
const { termineAus, termineFuerKunde, termineModus } = schalter
|
||||
// Namensraum für termineTextformNoetig: fehlt der Export, scheitert nur sein Test
|
||||
const termineTextformNoetig = (email) => schalter.termineTextformNoetig(email)
|
||||
|
||||
const TERMINE_ENV = [
|
||||
'TERMINE_ENABLED',
|
||||
@@ -162,3 +166,29 @@ test('termineFuerKunde: on gilt fuer alle ohne E-Mail-Filter', () => {
|
||||
assert.equal(termineFuerKunde('jemand@example.com'), true)
|
||||
assert.equal(termineFuerKunde(undefined), true)
|
||||
})
|
||||
|
||||
test('termineTextformNoetig: nur im Modus on und nur außerhalb der Pilotliste; „*“ und fehlende Adresse befreien nicht', () => {
|
||||
for (const mode of ['off', 'pilot', undefined, '', 'banane']) {
|
||||
config.termine.mode = mode
|
||||
config.termine.pilotEmails = []
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), false, `mode=${JSON.stringify(mode)}`)
|
||||
config.termine.pilotEmails = ['*']
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), false, `mode=${JSON.stringify(mode)} mit Stern`)
|
||||
}
|
||||
config.termine.mode = 'on'
|
||||
config.termine.pilotEmails = []
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), true)
|
||||
config.termine.pilotEmails = ['kenso.gri@gmail.com']
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), true)
|
||||
assert.equal(termineTextformNoetig('KENSO.gri@gmail.com '), false, 'Pilotadresse, Schreibweise egal')
|
||||
assert.equal(termineTextformNoetig('kenso.gri@gmail.com.evil.de'), true)
|
||||
config.termine.pilotEmails = ['*']
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), true, 'der Stern zählt in on nicht als Pilotadresse')
|
||||
assert.equal(termineTextformNoetig('*'), true)
|
||||
config.termine.pilotEmails = ['*', 'kenso.gri@gmail.com']
|
||||
assert.equal(termineTextformNoetig('kenso.gri@gmail.com'), false)
|
||||
for (const email of [undefined, null, '', ' ']) assert.equal(termineTextformNoetig(email), true, `ohne Adresse: ${JSON.stringify(email)}`)
|
||||
// wirkt sofort wie die übrigen Schalter
|
||||
config.termine.mode = 'pilot'
|
||||
assert.equal(termineTextformNoetig('jemand@example.com'), false)
|
||||
})
|
||||
Reference in new issue
Block a user