fix: 退回报销支持留痕删除(09-04-reimbursement-state-gap-finance-view)

这个提交包含在:
2026-09-10 16:38:37 +08:00
父节点 e5685f18b2
当前提交 73fcd5a65a
共修改 27 个文件,包含 696 行新增和 94 行删除
+8 -1
查看文件
@@ -353,6 +353,13 @@ async function main() {
const simultaneous = await Promise.all([retryRequest, unbindRequest]);
assert.deepEqual(simultaneous.map((result) => result.status), [200, 200], "retry and unbind must not deadlock");
passed.push("create retry and legacy unbind share a consistent lock order");
if (process.env.RUN_RETAINED_DELETE_TEST === "1") {
await require("./test-reimbursement-retained-delete.cjs")({
prisma, pool, app, origin, tokens, employee, manager, expenseType,
makeForm, makeInvoice, bind, post, uploadedRecord, storageDir, passed,
root, browser, preview, loginPassword,
});
}
await prisma.employee.update({ where: { id: employee.id }, data: { token_version: { increment: 1 } } });
assert.equal((await fetch(`${origin}/api/me`, { headers: { authorization: `Bearer ${tokens.get(employee.id)}` } })).status, 401);
passed.push("revoked token version rejected by real auth plugin");
@@ -374,4 +381,4 @@ async function main() {
}
}
main().catch((error) => { console.error("Isolated HTTP verification failed:", error.code ?? error.name, error.code === "ERR_ASSERTION" ? error.message : "", error.stack?.match(/test-invoice-first-http\.cjs:\d+:\d+/)?.[0] ?? ""); process.exitCode = 1; });
main().catch((error) => { console.error("Isolated HTTP verification failed:", error.code ?? error.name, error.code === "ERR_ASSERTION" ? error.message : "", error.stack?.match(/test-(?:invoice-first-http|reimbursement-retained-delete)\.cjs:\d+:\d+/)?.[0] ?? ""); process.exitCode = 1; });