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