b6fcd3c186
Release / release (push) Successful in 1m56s
| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [ ] Pas de régression - [ ] TU/TI/TF rédigée - [ ] TU/TI/TF OK - [ ] CHANGELOG modifié --------- Co-authored-by: admin malio <malio@yuno.malio.fr> Co-authored-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr> Co-authored-by: matthieu <matthieu@yuno.malio.fr> Reviewed-on: #80 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
45 lines
1.9 KiB
TypeScript
45 lines
1.9 KiB
TypeScript
import {describe, it, expect} from 'vitest'
|
||
import {buildBoundedMask} from './maskTemplate'
|
||
|
||
describe('buildBoundedMask', () => {
|
||
it('dérive le masque structurel du gabarit (séparateurs conservés)', () => {
|
||
expect(buildBoundedMask('JJ/MM/AAAA').mask).toBe('##/##/####')
|
||
expect(buildBoundedMask('JJ/MM/AAAA HH:MM').mask).toBe('##/##/#### ##:##')
|
||
})
|
||
})
|
||
|
||
describe('preProcess — bornage de la saisie (1er ET 2e chiffre)', () => {
|
||
const pre = (template: string, value: string) => buildBoundedMask(template).preProcess!(value)
|
||
|
||
it('jour : refuse > 31 et 00, accepte 01-31', () => {
|
||
expect(pre('JJ/MM/AAAA', '32')).toBe('3') // 32 impossible → 2e chiffre refusé
|
||
expect(pre('JJ/MM/AAAA', '33')).toBe('3') // exemple métier : 33 refusé
|
||
expect(pre('JJ/MM/AAAA', '31')).toBe('31')
|
||
expect(pre('JJ/MM/AAAA', '00')).toBe('0') // 00 impossible
|
||
expect(pre('JJ/MM/AAAA', '09')).toBe('09')
|
||
})
|
||
|
||
it('mois : refuse > 12 et 00 (après un jour valide) — cas 33/19', () => {
|
||
expect(pre('JJ/MM/AAAA', '0119')).toBe('011') // 19 (mois) refusé
|
||
expect(pre('JJ/MM/AAAA', '0113')).toBe('011')
|
||
expect(pre('JJ/MM/AAAA', '0112')).toBe('0112')
|
||
expect(pre('JJ/MM/AAAA', '0100')).toBe('010')
|
||
})
|
||
|
||
it('laisse l’année libre', () => {
|
||
expect(pre('JJ/MM/AAAA', '01012026')).toBe('01012026')
|
||
})
|
||
|
||
it('heure 00-23 et minute 00-59 (datetime), sans confondre minute et mois', () => {
|
||
const t = 'JJ/MM/AAAA HH:MM'
|
||
expect(pre(t, '010120262300')).toBe('010120262300') // 23:00 ok
|
||
expect(pre(t, '010120262460')).toBe('010120262') // heure 24 refusée
|
||
expect(pre(t, '010120261259')).toBe('010120261259') // minute 59 ok (≠ mois)
|
||
expect(pre(t, '010120261260')).toBe('0101202612') // minute 60 refusée
|
||
})
|
||
|
||
it('stoppe à la première saisie invalide (99/99/9999 → rien)', () => {
|
||
expect(pre('JJ/MM/AAAA', '99/99/9999')).toBe('')
|
||
})
|
||
})
|