Admin: Pruefung des Mitarbeiter-Formulars als Lib mit Test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
313ead77f4
commit
38beaead99
2 files changed
+41
No files matched your search
@@ -0,0 +1,20 @@
|
|||||||
|
// Prüfung des Mitarbeiter-Formulars (Admin). Rein, unter Node testbar.
|
||||||
|
|
||||||
|
const NEED = 'Name und E-Mail sind erforderlich.'
|
||||||
|
const MIN_PASSWORD = 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prüft das Formular zum Anlegen (isEdit false) oder Bearbeiten (isEdit true).
|
||||||
|
* Gibt den deutschen Fehlertext zurück, null heißt gültig. Beim Bearbeiten
|
||||||
|
* heißt ein leeres Passwort „unverändert“.
|
||||||
|
*/
|
||||||
|
export function validateEmployeeForm(form, isEdit) {
|
||||||
|
if (!form.displayName.trim() || !form.email.trim()) return NEED
|
||||||
|
if (!isEdit && form.password.length < MIN_PASSWORD) {
|
||||||
|
return 'Das Passwort muss mindestens 8 Zeichen haben.'
|
||||||
|
}
|
||||||
|
if (isEdit && form.password && form.password.length < MIN_PASSWORD) {
|
||||||
|
return 'Ein neues Passwort muss mindestens 8 Zeichen haben.'
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import test from 'node:test'
|
||||||
|
import assert from 'node:assert/strict'
|
||||||
|
import { loadModule } from './load.mjs'
|
||||||
|
|
||||||
|
const { validateEmployeeForm } = await loadModule('src/lib/employeeForm.js')
|
||||||
|
const base = { displayName: 'Max Muster', email: 'max@webklar.com', password: '', shortcode: '', isAdmin: false }
|
||||||
|
const NEED = 'Name und E-Mail sind erforderlich.'
|
||||||
|
|
||||||
|
test('validateEmployeeForm: neuer Mitarbeiter', () => {
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, displayName: ' ', password: '12345678' }, false), NEED)
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, email: '', password: '12345678' }, false), NEED)
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, password: '1234567' }, false), 'Das Passwort muss mindestens 8 Zeichen haben.')
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, password: '12345678' }, false), null)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('validateEmployeeForm: Mitarbeiter bearbeiten', () => {
|
||||||
|
assert.equal(validateEmployeeForm(base, true), null) // leeres Passwort = unverändert
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, password: 'abc' }, true), 'Ein neues Passwort muss mindestens 8 Zeichen haben.')
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, password: 'abcdefgh' }, true), null)
|
||||||
|
assert.equal(validateEmployeeForm({ ...base, email: ' ' }, true), NEED)
|
||||||
|
})
|
||||||
Reference in new issue
Block a user