infoalloggi-monorepo/apps/infoalloggi/src/server/controllers/pagamenti.controller.test.ts

125 lines
3.1 KiB
TypeScript
Raw Normal View History

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);
});
});