fix: recalculer le score après correction manuelle
This commit is contained in:
57
server/invoiceQuality.test.ts
Normal file
57
server/invoiceQuality.test.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { calculateInvoiceQualityScore } from "@shared/invoiceQuality";
|
||||
|
||||
const defaultRequiredFields = [
|
||||
{ fieldName: "supplierName", isRequired: 1 },
|
||||
{ fieldName: "invoiceNumber", isRequired: 1 },
|
||||
{ fieldName: "invoiceDate", isRequired: 1 },
|
||||
{ fieldName: "totalAmount", isRequired: 1 },
|
||||
{ fieldName: "deliveryNoteNumber", isRequired: 0 },
|
||||
];
|
||||
|
||||
describe("calculateInvoiceQualityScore", () => {
|
||||
it("passe à 100 % lorsque tous les champs obligatoires sont complétés manuellement", () => {
|
||||
expect(calculateInvoiceQualityScore({
|
||||
supplierName: "Microsoft France",
|
||||
invoiceNumber: "FAC-2026-001",
|
||||
invoiceDate: new Date("2026-09-30"),
|
||||
totalAmount: "0.00",
|
||||
}, defaultRequiredFields)).toBe(100);
|
||||
});
|
||||
|
||||
it("recalcule proportionnellement lorsque seuls certains champs obligatoires sont remplis", () => {
|
||||
expect(calculateInvoiceQualityScore({
|
||||
supplierName: "Microsoft France",
|
||||
invoiceNumber: "FAC-2026-001",
|
||||
invoiceDate: new Date("2026-09-30"),
|
||||
totalAmount: " ",
|
||||
}, defaultRequiredFields)).toBe(75);
|
||||
});
|
||||
|
||||
it("utilise la configuration personnalisée des champs obligatoires", () => {
|
||||
const configuration = [
|
||||
{ fieldName: "recipientName", isRequired: 1 },
|
||||
{ fieldName: "supplierName", isRequired: 0 },
|
||||
];
|
||||
|
||||
expect(calculateInvoiceQualityScore({
|
||||
recipientName: "ITINOVA",
|
||||
supplierName: "",
|
||||
}, configuration)).toBe(100);
|
||||
});
|
||||
|
||||
it("utilise les champs obligatoires par défaut lorsqu’aucune configuration n’existe encore", () => {
|
||||
expect(calculateInvoiceQualityScore({
|
||||
supplierName: "Fournisseur",
|
||||
invoiceNumber: "F-1",
|
||||
invoiceDate: new Date("2026-09-30"),
|
||||
totalAmount: "120.00",
|
||||
}, [])).toBe(100);
|
||||
});
|
||||
|
||||
it("retourne 100 % lorsque le compte a explicitement rendu tous ses champs optionnels", () => {
|
||||
expect(calculateInvoiceQualityScore({}, [
|
||||
{ fieldName: "supplierName", isRequired: 0 },
|
||||
])).toBe(100);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user