shoc-frontend-new/src/test/domain/work-orders/utils/uplift-display-utils.test.ts
Arthur Bassi 31c5559d23 fix(work-orders): clear uplift form state only after successful mutations
[recover] remove malicious eslint payload (was 380188af)
2026-08-10 17:12:10 -03:00

69 lines
2.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
canRevokeWorkOrderUplift,
upliftRevokeRequiresReason,
} from "@/domain/work-orders/utils/uplift-display-utils";
describe("canRevokeWorkOrderUplift", () => {
it("allows a dispatcher to revoke their own auto-approved uplift", () => {
expect(
canRevokeWorkOrderUplift(
{ status: "auto_approved", requestedById: "dispatcher-1" },
"dispatcher-1",
false,
),
).toBe(true);
});
it("rejects a dispatcher revoking another user's auto-approved uplift", () => {
expect(
canRevokeWorkOrderUplift(
{ status: "auto_approved", requestedById: "other-dispatcher" },
"dispatcher-1",
false,
),
).toBe(false);
});
it("rejects admin revoking auto-approved uplift they did not request", () => {
expect(
canRevokeWorkOrderUplift(
{ status: "auto_approved", requestedById: "dispatcher-1" },
"admin-user",
true,
),
).toBe(false);
});
it("allows admin to revoke their own auto-approved uplift as the requester", () => {
expect(
canRevokeWorkOrderUplift(
{ status: "auto_approved", requestedById: "admin-user" },
"admin-user",
true,
),
).toBe(true);
});
it("allows approved revoke only for admin", () => {
const uplift = { status: "approved" as const, requestedById: "dispatcher-1" };
expect(canRevokeWorkOrderUplift(uplift, "dispatcher-1", false)).toBe(false);
expect(canRevokeWorkOrderUplift(uplift, "dispatcher-1", true)).toBe(true);
});
it("rejects revoke for other statuses", () => {
expect(canRevokeWorkOrderUplift({ status: "pending", requestedById: "u1" }, "u1", true)).toBe(
false,
);
expect(canRevokeWorkOrderUplift({ status: "rejected", requestedById: "u1" }, "u1", true)).toBe(
false,
);
});
});
describe("upliftRevokeRequiresReason", () => {
it("requires reason only for approved uplifts", () => {
expect(upliftRevokeRequiresReason("approved")).toBe(true);
expect(upliftRevokeRequiresReason("auto_approved")).toBe(false);
});
});