fix: use real cache key prefixes in mock and dynamic imports for CI compatibility

This commit is contained in:
2026-03-09 03:08:15 -05:00
parent 15ef24eb3e
commit ad7507d133
2 changed files with 26 additions and 17 deletions
+17 -8
View File
@@ -1,8 +1,8 @@
import { describe, test, expect, mock, beforeEach } from "bun:test";
import { describe, test, expect, mock, beforeAll, beforeEach } from "bun:test";
// ---------------------------------------------------------------------------
// Top-level mocks — configured before the module is imported so the ESM
// linker always sees the mocked version, regardless of Bun's module cache.
// Top-level mocks — must be registered before any import of the service
// module so the ESM linker resolves mocked dependencies.
// ---------------------------------------------------------------------------
const postMock = mock(() => Promise.resolve({ data: { id: 9001 } }));
@@ -22,11 +22,20 @@ mock.module("../../src/modules/cw-utils/opportunities/opportunities", () => ({
opportunityCw: { update: updateMock },
}));
// Import AFTER mocks
import {
submitTimeEntry,
syncOpportunityStatus,
} from "../../src/services/cw.opportunityService";
// ---------------------------------------------------------------------------
// Dynamic import — use await import() inside beforeAll so the module is
// loaded AFTER mock.module calls take effect. Static imports are hoisted
// above top-level code in some Bun versions, defeating the mock.
// ---------------------------------------------------------------------------
let submitTimeEntry: typeof import("../../src/services/cw.opportunityService")["submitTimeEntry"];
let syncOpportunityStatus: typeof import("../../src/services/cw.opportunityService")["syncOpportunityStatus"];
beforeAll(async () => {
const mod = await import("../../src/services/cw.opportunityService");
submitTimeEntry = mod.submitTimeEntry;
syncOpportunityStatus = mod.syncOpportunityStatus;
});
// ---------------------------------------------------------------------------
// Tests