import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { resetEnvCache } from "@/lib/env"; vi.mock("@/services/db", () => ({ prisma: { containerActiveLock: { findUnique: vi.fn().mockResolvedValue(null), }, containerImport: { findFirst: vi.fn().mockResolvedValue(null), findMany: vi.fn().mockResolvedValue([]), }, }, })); import { checkContainerConflict } from "@/services/cc/conflict"; describe("A-4.4 force skip conflict", () => { beforeEach(() => { process.env.DATABASE_URL = process.env.DATABASE_URL || "mysql://app:app@localhost:7023/email_forecast"; process.env.CC_MOCK = "true"; resetEnvCache(); }); afterEach(() => { resetEnvCache(); }); it("ENABLE_FORCE_IMPORT + forceSkipConflict → ok(跳过 GetContainerList)", async () => { process.env.ENABLE_FORCE_IMPORT = "true"; resetEnvCache(); const r = await checkContainerConflict({ mailId: 99n, containerNo: "MATU2745683", forceSkipConflict: true, actor: "admin", }); expect(r.ok).toBe(true); }); it("force flag ignored when ENABLE_FORCE_IMPORT=false(仍走 mock 列表)", async () => { process.env.ENABLE_FORCE_IMPORT = "false"; process.env.CC_MOCK = "true"; resetEnvCache(); const r = await checkContainerConflict({ mailId: 99n, containerNo: "MATU2745683", forceSkipConflict: true, actor: "admin", }); expect(r.ok).toBe(true); }); });