Files
FRASA-CAS/apps/alta-clientes/src/lib/cotizacionAlta.test.ts
Consult AS Technology 59944668a8 feat(alta): borrador, pre-llenado desde cotización y liga remota de firma
- Borradores por vendedor (guardar/continuar/eliminar), se limpia al registrar
- Pre-llenado con ?cotizacion=<id> (cliente, contacto, proyecto, montos);
  botón 'Iniciar alta' en Mis cotizaciones del cotizador
- Liga remota pública /client/firma/<token> (JWT scope firma-remota, 72h,
  rate limit, solo datos mínimos sin PLD): firma digital + subida de
  documentos que prende checkboxes en Monday Apartado
- Tokens de liga no sirven como sesión y viceversa
- Tests: api 228, alta 82, cotizador 82
2026-08-28 07:29:22 +00:00

55 lines
2.1 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { cotizacionAPrellenado, type CotizacionParaAlta } from './cotizacionAlta'
import { PROYECTOS } from '../data/constantes'
const base: CotizacionParaAlta = {
clienteNombre: 'María Elena López García',
clienteEmail: 'maria@example.com',
clienteTelefono: '4421234567',
desarrollo: 'DIAGONAL',
unidadCodigo: 'U-101',
precioFinal: 1450000,
enganche: 217500,
}
describe('cotizacionAPrellenado', () => {
it('prellena nombre y contacto del cliente', () => {
const pre = cotizacionAPrellenado(base)
expect(pre.datosGenerales.nombreCompleto).toBe('MARÍA ELENA LÓPEZ GARCÍA')
expect(pre.datosGenerales.email).toBe('maria@example.com')
expect(pre.datosGenerales.celular).toBe('4421234567')
})
it('omite email/celular cuando la cotización no los trae', () => {
const pre = cotizacionAPrellenado({ ...base, clienteEmail: null, clienteTelefono: null })
expect(pre.datosGenerales).not.toHaveProperty('email')
expect(pre.datosGenerales).not.toHaveProperty('celular')
})
it('mapea un desarrollo conocido al dropdown de proyecto', () => {
const pre = cotizacionAPrellenado(base)
expect(PROYECTOS).toContain('DIAGONAL')
expect(pre.viviendaCredito.proyecto).toBe('DIAGONAL')
expect(pre.viviendaCredito.proyectoOtro).toBe('')
})
it('un desarrollo fuera de PROYECTOS cae en OTRO con el nombre en texto libre', () => {
const pre = cotizacionAPrellenado({ ...base, desarrollo: 'JURIQUILLA' })
expect(pre.viviendaCredito.proyecto).toBe('OTRO')
expect(pre.viviendaCredito.proyectoOtro).toBe('JURIQUILLA')
})
it('prellena unidad, valor de venta y enganche', () => {
const pre = cotizacionAPrellenado(base)
expect(pre.viviendaCredito.ubicacion).toBe('U-101')
expect(pre.viviendaCredito.valorVenta).toBe('1450000')
expect(pre.viviendaCredito.enganche).toBe('217500')
})
it('montos en cero quedan vacíos (no inventa "0")', () => {
const pre = cotizacionAPrellenado({ ...base, precioFinal: 0, enganche: 0 })
expect(pre.viviendaCredito.valorVenta).toBe('')
expect(pre.viviendaCredito.enganche).toBe('')
})
})