- Columna 'Desarrollo' (status, 5 labels) creada en el board Leads de Monday (color_mm6sw4c2) - API: crearLead acepta email y desarrollo; el desarrollo se valida contra los labels reales de la columna (mismo patrón que Origen) - Mi día: formulario de captura con campos Email y Desarrollo de interés (select con los 5 desarrollos, opcional) - Tests: api 296, mi-dia 12
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
esActividadVencida,
|
|
esRolConEquipo,
|
|
formatoFechaCorta,
|
|
hoyLocal,
|
|
DESARROLLOS_LEAD,
|
|
MOTIVOS_NO_COMPRA,
|
|
ORIGENES_LEAD,
|
|
textoDiasRestantes,
|
|
} from './mi-dia'
|
|
|
|
describe('catálogos', () => {
|
|
it('orígenes = labels reales de la columna Origen del board Leads', () => {
|
|
expect([...ORIGENES_LEAD]).toEqual(['WhatsApp', 'Web', 'Recomendado', 'Facebook', 'Otro'])
|
|
})
|
|
|
|
it('desarrollos = labels reales de la columna Desarrollo del board Leads', () => {
|
|
expect([...DESARROLLOS_LEAD]).toEqual(['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'])
|
|
})
|
|
|
|
it('motivos de descarte = vocabulario CRM (igual que el API)', () => {
|
|
expect(MOTIVOS_NO_COMPRA).toContain('Precio')
|
|
expect(MOTIVOS_NO_COMPRA).toContain('Timing')
|
|
expect(MOTIVOS_NO_COMPRA).toHaveLength(7)
|
|
})
|
|
})
|
|
|
|
describe('esRolConEquipo', () => {
|
|
it('coordinador, corporativo y admin ven equipo; vendedor no', () => {
|
|
expect(esRolConEquipo('coordinador')).toBe(true)
|
|
expect(esRolConEquipo('corporativo')).toBe(true)
|
|
expect(esRolConEquipo('admin')).toBe(true)
|
|
expect(esRolConEquipo('vendedor')).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('formatoFechaCorta', () => {
|
|
it('recorta el año', () => {
|
|
expect(formatoFechaCorta('2026-08-29')).toBe('29/08')
|
|
})
|
|
|
|
it('tolera cadenas mal formadas devolviéndolas tal cual', () => {
|
|
expect(formatoFechaCorta('sin-fecha')).toBe('sin-fecha')
|
|
})
|
|
})
|
|
|
|
describe('textoDiasRestantes', () => {
|
|
it('hoy, mañana y n días', () => {
|
|
expect(textoDiasRestantes(0)).toBe('Vence hoy')
|
|
expect(textoDiasRestantes(1)).toBe('Vence mañana')
|
|
expect(textoDiasRestantes(5)).toBe('Vence en 5 días')
|
|
})
|
|
})
|
|
|
|
describe('esActividadVencida', () => {
|
|
it('compara contra la fecha de hoy', () => {
|
|
expect(esActividadVencida('2026-08-27', '2026-08-28')).toBe(true)
|
|
expect(esActividadVencida('2026-08-28', '2026-08-28')).toBe(false)
|
|
expect(esActividadVencida('2026-08-29', '2026-08-28')).toBe(false)
|
|
expect(esActividadVencida('', '2026-08-28')).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('hoyLocal', () => {
|
|
it('devuelve YYYY-MM-DD', () => {
|
|
expect(hoyLocal()).toMatch(/^\d{4}-\d{2}-\d{2}$/)
|
|
})
|
|
})
|