import { describe, expect, it } from "vitest"; import { cleanJsonResponse } from "./invoiceExtractor"; describe("cleanJsonResponse", () => { it("supprime les caractères de contrôle bruts dans une chaîne JSON LLM", () => { const rawResponse = `{ "pageCount": 1, "invoiceCount": 1, "invoices": [{ "supplierName": "Manus AI", "invoiceNumber": "J6LNGDAL-0021", "extractedText": "Ligne valide\u0000suite du texte" }] }`; const parsed = JSON.parse(cleanJsonResponse(rawResponse)); expect(parsed.invoices[0].invoiceNumber).toBe("J6LNGDAL-0021"); expect(parsed.invoices[0].extractedText).toBe("Ligne validesuite du texte"); }); it("préserve les retours à la ligne échappés dans les chaînes JSON", () => { const rawResponse = '{"invoices":[{"extractedText":"Ligne 1\nLigne 2"}] }'; const parsed = JSON.parse(cleanJsonResponse(rawResponse)); expect(parsed.invoices[0].extractedText).toBe("Ligne 1\nLigne 2"); }); });