Files
FRASA-CAS/api-gateway/scripts/seed-usuarios.test.ts
Consult AS Technology bc0f9da8fe feat(mi-dia): app /hoy + CRM ligero para vendedores
- App Mi día: KPIs, mis actividades, mis leads con acciones rápidas
  (contactado/intento/agenda cita/descartar con motivo), captura rápida
  de lead (409 en duplicado por teléfono), vista equipo para coordinadores
- API: GET /api/mi-dia/resumen, POST /api/leads, /leads/:id/estado,
  /leads/:id/descartar; mapeo Usuario.mondayUserId (seed listo para
  cuando inviten a los vendedores a Monday)
- Landing: tarjeta Mi día; tests api 188, mi-dia 8, landing 4
2026-08-28 06:23:15 +00:00

55 lines
1.8 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from 'vitest'
import { upsertUsuario, type DatosUsuarioSeed } from './seed-usuarios.js'
// ---------- Prisma mockeado (seed idempotente sin red ni BD) ----------
const prismaMock = vi.hoisted(() => ({
usuario: {
findUnique: vi.fn(),
create: vi.fn(),
update: vi.fn(),
count: vi.fn(),
},
$disconnect: vi.fn(),
}))
vi.mock('../src/services/prisma.js', () => ({ prisma: prismaMock }))
const datos: DatosUsuarioSeed = {
username: 'erick israel pena ramos',
nombre: 'ERICK ISRAEL PEÑA RAMOS',
rol: 'vendedor',
asignacion: 'MONTEBELLO',
empleadoId: 13676,
mondayUserId: null,
passwordHash: 'hash-inicial',
}
beforeEach(() => {
vi.clearAllMocks()
})
describe('upsertUsuario (seed idempotente)', () => {
it('crea el usuario si no existe', async () => {
prismaMock.usuario.findUnique.mockResolvedValue(null)
const resultado = await upsertUsuario(datos, false)
expect(resultado).toBe('creado')
expect(prismaMock.usuario.create).toHaveBeenCalledWith({ data: datos })
})
it('si ya existe actualiza datos sin tocar el password', async () => {
prismaMock.usuario.findUnique.mockResolvedValue({ id: 'u-1' })
const resultado = await upsertUsuario({ ...datos, passwordHash: 'hash-nuevo' }, false)
expect(resultado).toBe('actualizado')
const update = prismaMock.usuario.update.mock.calls[0][0]
expect(update.data).not.toHaveProperty('passwordHash')
})
it('con --reset-passwords sí restablece el password', async () => {
prismaMock.usuario.findUnique.mockResolvedValue({ id: 'u-1' })
await upsertUsuario({ ...datos, passwordHash: 'hash-nuevo' }, true)
const update = prismaMock.usuario.update.mock.calls[0][0]
expect(update.data.passwordHash).toBe('hash-nuevo')
})
})