WIP: #8283 - RiskEvaluator #1066
|
@ -0,0 +1,70 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { computed, ref } from 'vue';
|
||||
|
||||
// Simulación de la lógica del componente
|
||||
const createTestLogic = (
|
||||
creditoValue,
|
||||
riesgoValue,
|
||||
sumatorioPedidosValue,
|
||||
esClienteFrancesValue
|
||||
) => {
|
||||
const credito = ref(creditoValue);
|
||||
const riesgo = ref(riesgoValue);
|
||||
const sumatorioPedidos = ref(sumatorioPedidosValue);
|
||||
const esClienteFrances = ref(esClienteFrancesValue);
|
||||
|
||||
const margen = computed(() => {
|
||||
if (credito.value === 0) return esClienteFrances.value ? 500 : 200;
|
||||
if (esClienteFrances.value) {
|
||||
return credito.value > 5000 ? credito.value * 0.1 : 500;
|
||||
}
|
||||
return credito.value > 2000 ? credito.value * 0.1 : 200;
|
||||
});
|
||||
|
||||
const resultado = computed(() => {
|
||||
const margenActual = margen.value;
|
||||
|
||||
if (
|
||||
riesgo.value > 0 &&
|
||||
riesgo.value < margenActual &&
|
||||
riesgo.value < sumatorioPedidos.value
|
||||
) {
|
||||
return 'Riesgo Naranja';
|
||||
}
|
||||
|
||||
if (riesgo.value >= margenActual || riesgo.value >= sumatorioPedidos.value) {
|
||||
return 'Riesgo Rojo';
|
||||
}
|
||||
|
||||
return 'Condiciones No Cumplen';
|
||||
});
|
||||
|
||||
return { margen, resultado };
|
||||
};
|
||||
|
||||
describe('RiskEvaluator Logic', () => {
|
||||
it('debe calcular margen correctamente para crédito = 0, cliente no francés', () => {
|
||||
const { margen } = createTestLogic(0, 100, 50, false);
|
||||
expect(margen.value).toBe(200);
|
||||
});
|
||||
|
||||
it('debe calcular margen correctamente para crédito = 0, cliente francés', () => {
|
||||
const { margen } = createTestLogic(0, 100, 50, true);
|
||||
expect(margen.value).toBe(500);
|
||||
});
|
||||
|
||||
it('debe retornar "Riesgo Naranja" bajo condiciones válidas', () => {
|
||||
const { resultado } = createTestLogic(0, 100, 200, false);
|
||||
expect(resultado.value).toBe('Riesgo Naranja');
|
||||
});
|
||||
|
||||
it('debe retornar "Riesgo Rojo" si riesgo excede el margen', () => {
|
||||
const { resultado } = createTestLogic(0, 300, 200, false);
|
||||
expect(resultado.value).toBe('Riesgo Rojo');
|
||||
});
|
||||
|
||||
it('debe manejar correctamente el margen para créditos altos (cliente francés)', () => {
|
||||
const { margen } = createTestLogic(6000, 0, 0, true);
|
||||
expect(margen.value).toBe(600);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue