import { hitosAlcanzados } from './comisiones.service';

describe('hitosAlcanzados', () => {
  const hitos = [
    { evento: 'BOLETO' as const, porcion: 40 },
    { evento: 'COBRADO' as const, umbral: 30, porcion: 30 },
    { evento: 'ESCRITURA' as const, porcion: 30 },
  ];
  const op = {
    estado: 'BOLETO_FIRMADO',
    fecha_boleto: new Date(),
    fecha_escritura: null,
    fecha_entrega: null,
    pct_pagado: 10,
  };

  it('devenga sólo los hitos cumplidos', () => {
    expect(hitosAlcanzados(hitos, op)).toEqual([0]);
    expect(hitosAlcanzados(hitos, { ...op, pct_pagado: 30 })).toEqual([0, 1]);
    expect(hitosAlcanzados(hitos, { ...op, pct_pagado: 31, fecha_escritura: new Date() })).toEqual([0, 1, 2]);
  });

  it('una venta caída no devenga nada nuevo', () => {
    expect(hitosAlcanzados(hitos, { ...op, estado: 'RESCINDIDA', pct_pagado: 100 })).toEqual([]);
    expect(hitosAlcanzados([{ evento: 'RESERVA', porcion: 100 }], { ...op, estado: 'DESISTIDA' })).toEqual([]);
  });
});
