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')
    })
})
