import { describe, it, expect } from 'vitest'; import { normalizarTelefonoEs, construirVariablesLlamada } from '@/lib/voice/retell'; describe('normalizarTelefonoEs', () => { it('añade prefijo +34 a un móvil nacional de 9 dígitos', () => { expect(normalizarTelefonoEs('612345678')).toBe('+34612345678'); }); it('acepta fijos nacionales (empiezan por 8/9)', () => { expect(normalizarTelefonoEs('912345678')).toBe('+34912345678'); }); it('limpia espacios, guiones y paréntesis', () => { expect(normalizarTelefonoEs('612 34 56 78')).toBe('+34612345678'); expect(normalizarTelefonoEs('+34 612-345-678')).toBe('+34612345678'); }); it('respeta un E.164 ya formado', () => { expect(normalizarTelefonoEs('+34612345678')).toBe('+34612345678'); }); it('normaliza los prefijos 0034 y 34 sin +', () => { expect(normalizarTelefonoEs('0034612345678')).toBe('+34612345678'); expect(normalizarTelefonoEs('34612345678')).toBe('+34612345678'); }); it('devuelve null si no es un teléfono válido', () => { expect(normalizarTelefonoEs('123')).toBeNull(); expect(normalizarTelefonoEs('hola')).toBeNull(); }); }); describe('construirVariablesLlamada', () => { it('incluye siempre empresa_nombre y el nombre de pila del cliente', () => { const vars = construirVariablesLlamada( { nombreEmpresa: 'Reformas Ejemplo' }, { nombre: 'Ana Pérez', tipoReforma: 'cocina', provincia: 'Madrid' }, ); expect(vars.empresa_nombre).toBe('Reformas Ejemplo'); expect(vars.cliente_nombre).toBe('Ana'); expect(vars.tipo_reforma).toBe('cocina'); expect(vars.provincia).toBe('Madrid'); }); it('omite tipo_reforma y provincia cuando faltan', () => { const vars = construirVariablesLlamada( { nombreEmpresa: 'Reformas Ejemplo' }, { nombre: 'Luis', tipoReforma: null, provincia: null }, ); expect(vars.empresa_nombre).toBe('Reformas Ejemplo'); expect(vars.cliente_nombre).toBe('Luis'); expect('tipo_reforma' in vars).toBe(false); expect('provincia' in vars).toBe(false); }); it('usa la etiqueta en minúscula para tipo_reforma', () => { const vars = construirVariablesLlamada( { nombreEmpresa: 'X' }, { nombre: 'Eva', tipoReforma: 'integral', provincia: null }, ); expect(vars.tipo_reforma).toBe('reforma integral'); }); });