125 lines
3.1 KiB
TypeScript
125 lines
3.1 KiB
TypeScript
|
|
import { assert, describe, expect, it } from "vitest";
|
||
|
|
import type { PrezziarioIdprezziario } from "~/schemas/public/Prezziario";
|
||
|
|
import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
|
||
|
|
import {
|
||
|
|
AccontoSolver,
|
||
|
|
SaldoSolver,
|
||
|
|
} from "~/server/controllers/pagamenti.controller";
|
||
|
|
|
||
|
|
type TestInput = {
|
||
|
|
tipologia: TipologiaPosizioneEnum;
|
||
|
|
permanenza: number | null;
|
||
|
|
budget: number;
|
||
|
|
};
|
||
|
|
|
||
|
|
type TestCase = {
|
||
|
|
input: TestInput;
|
||
|
|
exp_acconto: PrezziarioIdprezziario;
|
||
|
|
exp_saldo: PrezziarioIdprezziario;
|
||
|
|
descrizione: string;
|
||
|
|
};
|
||
|
|
|
||
|
|
const testCases: TestCase[] = [
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
||
|
|
permanenza: 0,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_BD" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOBD_1MESE" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "1MESE BD",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
||
|
|
permanenza: 1,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_BD" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOBD_3MESI" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "3MESI BD",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
||
|
|
permanenza: 2,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_BD" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOBD_6MESI" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "6MESI BD",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
||
|
|
permanenza: 3,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_BD" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOBD_9MESI" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "9MESI BD",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
||
|
|
permanenza: 4,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_BD" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOBD_12MESI" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "12MESI BD",
|
||
|
|
},
|
||
|
|
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Stabile,
|
||
|
|
permanenza: null,
|
||
|
|
budget: 500,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_CA" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOCA500" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "CA 500",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Stabile,
|
||
|
|
permanenza: null,
|
||
|
|
budget: 600,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_CA" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOCA500+" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "CA 500+",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: {
|
||
|
|
tipologia: TipologiaPosizioneEnum.Stabile,
|
||
|
|
permanenza: null,
|
||
|
|
budget: 800,
|
||
|
|
},
|
||
|
|
exp_acconto: "ACCONTO_CA" as PrezziarioIdprezziario,
|
||
|
|
exp_saldo: "SALDOCA700+" as PrezziarioIdprezziario,
|
||
|
|
descrizione: "CA 700+",
|
||
|
|
},
|
||
|
|
];
|
||
|
|
|
||
|
|
describe("Test AccontoSolver", () => {
|
||
|
|
it.each(testCases)("$descrizione", async ({ input, exp_acconto }) => {
|
||
|
|
const pack = await AccontoSolver(input.tipologia);
|
||
|
|
assert(pack.success, "AccontoSolver failed");
|
||
|
|
expect(pack.pack.idprezziario).toEqual(exp_acconto);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
describe("Test SaldoSolver", () => {
|
||
|
|
it.each(testCases)("$descrizione", async ({ input, exp_saldo }) => {
|
||
|
|
const pack = await SaldoSolver({
|
||
|
|
tipologia: input.tipologia,
|
||
|
|
permanenza: input.permanenza,
|
||
|
|
budget: input.budget,
|
||
|
|
});
|
||
|
|
assert(pack.success, "SaldoSolver failed");
|
||
|
|
expect(pack.pack.idprezziario).toEqual(exp_saldo);
|
||
|
|
});
|
||
|
|
});
|