import { camposFaltantes } from './campos-obligatorios.util';

describe('camposFaltantes', () => {
  const opo = {
    origen_id: 'o-1', vendedor_id: null, valor_unico: 0, titulo: '',
    fecha_cierre_estimada: new Date('2026-12-01'), presupuesto_id: 'pre-1',
  };

  it('toma por faltante lo nulo, lo vacío y el cero', () => {
    expect(camposFaltantes(opo, ['vendedor_id', 'valor_unico', 'titulo'])).toEqual([
      'vendedor_id', 'valor_unico', 'titulo',
    ]);
  });

  it('no reporta lo que está cargado', () => {
    expect(camposFaltantes(opo, ['origen_id', 'presupuesto_id', 'fecha_cierre_estimada'])).toEqual([]);
  });

  it('un campo que no existe en la entidad cuenta como faltante', () => {
    expect(camposFaltantes(opo, ['campo_inventado'])).toEqual(['campo_inventado']);
  });

  /** `campos_obligatorios` llega como Json de Prisma: puede ser null o venir mal tipado. */
  it('tolera que no sea un array', () => {
    expect(camposFaltantes(opo, null)).toEqual([]);
    expect(camposFaltantes(opo, '{}')).toEqual([]);
    expect(camposFaltantes(opo, undefined)).toEqual([]);
  });
});
