feat(afluencia): el campo de interes muestra los modelos del desarrollo

'Al departamento o casa de interes' ahora es un select dependiente:
al elegir desarrollo se cargan sus modelos (MODELOS_POR_PROYECTO) y al
cambiar de desarrollo se resetea. En Monday la columna 'Tipo de
Propiedad' se renombro a 'Modelo de Interes' con los 16 modelos como
labels del status.
This commit is contained in:
2026-09-02 01:48:45 +00:00
parent 52667df041
commit 57029bdd3d
7 changed files with 49 additions and 25 deletions

View File

@@ -71,7 +71,19 @@ describe('AltaAfluenciaForm', () => {
const opcionesDe = (label: RegExp) =>
Array.from((screen.getByLabelText(label) as HTMLSelectElement).options).map((o) => o.value)
expect(opcionesDe(/Departamento o casa de interés/)).toEqual(['', 'Casa', 'Departamento'])
// El select de modelo arranca deshabilitado hasta elegir desarrollo
const selectModelo = screen.getByLabelText(/Departamento o casa de interés/) as HTMLSelectElement
expect(selectModelo.disabled).toBe(true)
fireEvent.change(screen.getByLabelText(/Desarrollo de interés/), { target: { value: 'SENDA' } })
expect(selectModelo.disabled).toBe(false)
expect(opcionesDe(/Departamento o casa de interés/)).toEqual([
'',
'HIMALAYA',
'SANTIAGO',
'ESMERALDA PA',
'ESMERALDA PB',
'SANTA CRUZ',
])
expect(opcionesDe(/^Estado civil/)).toEqual(['', 'Soltero(a)', 'Casado(a)', 'Unión libre', 'Divorciado(a)', 'Viudo(a)'])
expect(opcionesDe(/Tipo de empleo/)).toEqual(['', 'Asalariado', 'Independiente'])
expect(opcionesDe(/^Crédito/)).toEqual([
@@ -93,7 +105,8 @@ describe('AltaAfluenciaForm', () => {
fetchMock.mockResolvedValueOnce(respuesta({ id: 'l-1', estado: 'NUEVO', oportunidadId: 'op-1' }))
render(<AltaAfluenciaForm onVolver={() => undefined} onPasarAAltaCliente={() => undefined} />)
llenarRequeridos()
fireEvent.change(screen.getByLabelText(/Departamento o casa de interés/), { target: { value: 'Casa' } })
fireEvent.change(screen.getByLabelText(/Desarrollo de interés/), { target: { value: 'SENDA' } })
fireEvent.change(screen.getByLabelText(/Departamento o casa de interés/), { target: { value: 'HIMALAYA' } })
fireEvent.change(screen.getByLabelText(/Medio de contacto/), { target: { value: 'Llamada' } })
fireEvent.change(screen.getByLabelText(/^Edad/), { target: { value: '35' } })
fireEvent.change(screen.getByLabelText(/^Estado civil/), { target: { value: 'Casado(a)' } })
@@ -109,7 +122,7 @@ describe('AltaAfluenciaForm', () => {
await screen.findByRole('status')
const [, init] = fetchMock.mock.calls[0] as [string, RequestInit]
expect(JSON.parse(String(init.body))).toMatchObject({
tipoPropiedad: 'Casa',
modelo: 'HIMALAYA',
medioContacto: 'Llamada',
edad: '35',
estadoCivil: 'Casado(a)',