import { readFileSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; describe("Déploiement et action directe Litige", () => { it("ajoute le litige dès le clic sur le bouton avant de proposer le commentaire", () => { const detail = readFileSync(join(process.cwd(), "client/src/pages/InvoiceDetail.tsx"), "utf8"); expect(detail).toContain('markDisputeMutation.mutate({ id: invoiceId, isDisputed: true })'); expect(detail).toContain('canEdit && invoice.isDisputed !== 1'); }); it("exclut les sauvegardes et les fichiers d’exploitation sans exclure les migrations SQL", () => { const patterns = readFileSync(join(process.cwd(), ".dockerignore"), "utf8").split("\n"); expect(patterns).toContain('**/backups'); expect(patterns).toContain('**/*.sql.gz'); expect(patterns).toContain('**/*.bundle'); expect(patterns).not.toContain('**/*.sql'); expect(patterns).not.toContain('drizzle'); }); });