| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [x] Pas de régression - [x] TU/TI/TF rédigée - [x] TU/TI/TF OK - [x] CHANGELOG modifié Reviewed-on: #50 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import {describe, expect, it} from 'vitest'
|
|
import {
|
|
composeDateTime,
|
|
formatIsoDateTimeToDisplay,
|
|
isValidIsoDateTime,
|
|
splitDateTime,
|
|
} from './datetimeFormat'
|
|
|
|
describe('datetimeFormat', () => {
|
|
describe('isValidIsoDateTime', () => {
|
|
it('accepte un datetime ISO complet valide', () => {
|
|
expect(isValidIsoDateTime('2026-05-20T14:30:00')).toBe(true)
|
|
expect(isValidIsoDateTime('2026-01-01T00:00:00')).toBe(true)
|
|
expect(isValidIsoDateTime('2026-12-31T23:59:59')).toBe(true)
|
|
})
|
|
|
|
it('rejette une date seule, des composants invalides ou une chaîne vide', () => {
|
|
expect(isValidIsoDateTime('2026-05-20')).toBe(false)
|
|
expect(isValidIsoDateTime('2026-13-01T00:00:00')).toBe(false)
|
|
expect(isValidIsoDateTime('2026-05-20T24:00:00')).toBe(false)
|
|
expect(isValidIsoDateTime('2026-05-20T14:60:00')).toBe(false)
|
|
expect(isValidIsoDateTime('2026-05-20T14:30:60')).toBe(false)
|
|
expect(isValidIsoDateTime('2026-05-20T14:30')).toBe(false)
|
|
expect(isValidIsoDateTime('')).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('formatIsoDateTimeToDisplay', () => {
|
|
it('formate un datetime valide en JJ/MM/AAAA HH:MM', () => {
|
|
expect(formatIsoDateTimeToDisplay('2026-05-20T14:30:00')).toBe('20/05/2026 14:30')
|
|
})
|
|
|
|
it('renvoie une chaîne vide pour nul ou invalide', () => {
|
|
expect(formatIsoDateTimeToDisplay(null)).toBe('')
|
|
expect(formatIsoDateTimeToDisplay('2026-05-20')).toBe('')
|
|
expect(formatIsoDateTimeToDisplay('nope')).toBe('')
|
|
})
|
|
})
|
|
|
|
describe('splitDateTime', () => {
|
|
it('découpe un datetime valide', () => {
|
|
expect(splitDateTime('2026-05-20T14:30:00')).toEqual({date: '2026-05-20', time: '14:30'})
|
|
})
|
|
|
|
it('renvoie date null et time vide pour nul, date seule ou invalide', () => {
|
|
expect(splitDateTime(null)).toEqual({date: null, time: ''})
|
|
expect(splitDateTime('2026-05-20')).toEqual({date: null, time: ''})
|
|
expect(splitDateTime('nope')).toEqual({date: null, time: ''})
|
|
})
|
|
})
|
|
|
|
describe('composeDateTime', () => {
|
|
it('recompose un datetime ISO avec secondes à 00', () => {
|
|
expect(composeDateTime('2026-05-20', '14:30')).toBe('2026-05-20T14:30:00')
|
|
})
|
|
|
|
it('utilise 00:00 quand l\'heure est vide', () => {
|
|
expect(composeDateTime('2026-05-20', '')).toBe('2026-05-20T00:00:00')
|
|
})
|
|
})
|
|
})
|