8376236a3c
- httpExternal : client dedie aux API publiques externes (URL absolue, sans cookie de session, timeout), seul point d'entree autorise pour un $fetch externe (regle frontend n°4). - useAddressAutocomplete : implementation BAN (api-adresse.data.gouv.fr), recherche ville (type=municipality) et adresse, mapping GeoJSON, throw en cas d'erreur/timeout (mode degrade cote composant). La recherche d'adresse n'impose pas type=housenumber (sinon 0 resultat tant qu'aucun numero n'est saisi) — spec-front mise a jour en consequence. - Tests Vitest : httpExternal, useAddressAutocomplete, et cas limites supplementaires pour formatPhoneFR.
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { formatPhoneFR } from '../phone'
|
|
|
|
describe('formatPhoneFR', () => {
|
|
it('formate un numero 10 chiffres en XX XX XX XX XX', () => {
|
|
expect(formatPhoneFR('0612345678')).toBe('06 12 34 56 78')
|
|
})
|
|
|
|
it('tolere une saisie deja pointee ou espacee', () => {
|
|
expect(formatPhoneFR('06.12.34.56.78')).toBe('06 12 34 56 78')
|
|
expect(formatPhoneFR('06 12 34 56 78')).toBe('06 12 34 56 78')
|
|
})
|
|
|
|
it('retourne une chaine vide pour une valeur vide ou nulle', () => {
|
|
expect(formatPhoneFR('')).toBe('')
|
|
expect(formatPhoneFR(null)).toBe('')
|
|
expect(formatPhoneFR(undefined)).toBe('')
|
|
})
|
|
|
|
it('groupe par 2 meme un nombre impair de chiffres (dernier groupe seul)', () => {
|
|
expect(formatPhoneFR('123')).toBe('12 3')
|
|
})
|
|
|
|
it('formate une saisie courte (<= 4 chiffres) sans planter', () => {
|
|
expect(formatPhoneFR('1')).toBe('1')
|
|
expect(formatPhoneFR('12')).toBe('12')
|
|
expect(formatPhoneFR('1234')).toBe('12 34')
|
|
})
|
|
|
|
it('strip les caracteres non numeriques (lettres, espaces, ponctuation)', () => {
|
|
expect(formatPhoneFR('abc')).toBe('')
|
|
expect(formatPhoneFR('Tel : 06.12')).toBe('06 12')
|
|
expect(formatPhoneFR(' 06 12 ')).toBe('06 12')
|
|
})
|
|
|
|
it('conserve l\'indicatif international (+33) sans le transformer', () => {
|
|
// Comportement fige : on retire seulement le `+`, on ne deduit pas le
|
|
// prefixe pays. Le `+33...` est donc groupe brut par paquets de 2.
|
|
expect(formatPhoneFR('+33612345678')).toBe('33 61 23 45 67 8')
|
|
})
|
|
|
|
it('groupe sans tronquer une saisie plus longue que 10 chiffres', () => {
|
|
// Aucune troncature silencieuse : on figure tous les chiffres groupes par 2.
|
|
expect(formatPhoneFR('061234567899')).toBe('06 12 34 56 78 99')
|
|
})
|
|
})
|