const fs = require("node:fs"); const path = require("node:path"); const MIGRATION_PATH = path.resolve( __dirname, "../../../prisma/migrations/20260829120000_reimbursement_expense_policy_invoice_guard/migration.sql", ); describe("reimbursement expense policy migration", () => { it("adds backward-compatible defaults before applying allowance overrides", () => { const source = fs.readFileSync(MIGRATION_PATH, "utf8"); const requiresInvoiceColumn = source.indexOf( 'ADD COLUMN "requires_invoice" BOOLEAN NOT NULL DEFAULT true', ); const approvalBasisColumn = source.indexOf( 'ADD COLUMN "asset_prior_approval_basis" TEXT', ); const allowanceOverride = source.indexOf( 'SET "requires_invoice" = false', ); expect(requiresInvoiceColumn).toBeGreaterThanOrEqual(0); expect(approvalBasisColumn).toBeGreaterThanOrEqual(0); expect(allowanceOverride).toBeGreaterThan(approvalBasisColumn); expect(source).toContain("'travel_meal'"); expect(source).toContain("'travel_local_transport_allowance'"); expect(source).not.toMatch(/DROP\s+(TABLE|COLUMN)/i); expect(source).not.toMatch(/ALTER\s+COLUMN\s+[^;]+NOT\s+NULL/i); }); });