修正CEO报销财务兜底与部署护栏(07-28-ceo-finance-fallback)
这个提交包含在:
@@ -0,0 +1,67 @@
|
||||
const {
|
||||
DEFAULT_APPROVAL_RULES,
|
||||
seedApprovalRules,
|
||||
} = require("../../../src/scripts/seed-config");
|
||||
|
||||
describe("small-team default reimbursement approval rules", () => {
|
||||
it("uses finance for every owner fallback and finance review node", () => {
|
||||
expect(DEFAULT_APPROVAL_RULES).toEqual([
|
||||
expect.objectContaining({
|
||||
name: "小额",
|
||||
level1_role: "manager",
|
||||
level2_role: "finance",
|
||||
level3_role: null,
|
||||
owner_self_fallback_role: "finance",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
name: "中额",
|
||||
level1_role: "manager",
|
||||
level2_role: "finance",
|
||||
level3_role: null,
|
||||
owner_self_fallback_role: "finance",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
name: "大额",
|
||||
level1_role: "manager",
|
||||
level2_role: "ceo",
|
||||
level3_role: "finance",
|
||||
owner_self_fallback_role: "finance",
|
||||
}),
|
||||
]);
|
||||
});
|
||||
|
||||
it("preserves existing production approval rules instead of replacing them", async () => {
|
||||
const approvalRule = {
|
||||
count: vi.fn().mockResolvedValue(3),
|
||||
createMany: vi.fn(),
|
||||
deleteMany: vi.fn(),
|
||||
};
|
||||
|
||||
await expect(seedApprovalRules({ approvalRule })).resolves.toEqual({
|
||||
created: 0,
|
||||
preserved: 3,
|
||||
});
|
||||
expect(approvalRule.createMany).not.toHaveBeenCalled();
|
||||
expect(approvalRule.deleteMany).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("creates the three defaults only for an empty approval-rule table", async () => {
|
||||
const approvalRule = {
|
||||
count: vi.fn().mockResolvedValue(0),
|
||||
createMany: vi.fn().mockResolvedValue({ count: 3 }),
|
||||
};
|
||||
|
||||
await expect(seedApprovalRules({ approvalRule })).resolves.toEqual({
|
||||
created: 3,
|
||||
preserved: 0,
|
||||
});
|
||||
expect(approvalRule.createMany).toHaveBeenCalledWith({
|
||||
data: DEFAULT_APPROVAL_RULES.map((item) => ({
|
||||
...item,
|
||||
enabled: true,
|
||||
created_by: null,
|
||||
updated_by: null,
|
||||
})),
|
||||
});
|
||||
});
|
||||
});
|
||||
在新工单中引用
屏蔽一个用户