all the haul

This commit is contained in:
2026-04-07 23:56:31 +00:00
parent 87cce83030
commit 24f303355b
244 changed files with 33743 additions and 11249 deletions
+19 -118
View File
@@ -6,7 +6,7 @@ import { buildMockCWActivity } from "../setup";
// ---------------------------------------------------------------------------
function createStablePrismaMock(
overrides: Record<string, Record<string, any>> = {},
overrides: Record<string, Record<string, any>> = {}
) {
return new Proxy(
{},
@@ -17,7 +17,7 @@ function createStablePrismaMock(
if (overrides[model]) return overrides[model];
return new Proxy({}, { get: () => mock(() => Promise.resolve(null)) });
},
},
}
);
}
@@ -34,54 +34,15 @@ describe("activities manager", () => {
// fetchItem
// -------------------------------------------------------------------
describe("fetchItem()", () => {
test("returns an ActivityController on success", async () => {
const cwData = buildMockCWActivity();
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {
fetch: mock(() => Promise.resolve(cwData)),
fetchByCompany: mock(() => Promise.resolve([])),
fetchByOpportunity: mock(() => Promise.resolve([])),
delete: mock(() => Promise.resolve()),
countItems: mock(() => Promise.resolve(0)),
update: mock(() => Promise.resolve(cwData)),
},
}));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: {} })),
post: mock(() => Promise.resolve({ data: {} })),
patch: mock(() => Promise.resolve({ data: {} })),
delete: mock(() => Promise.resolve({ data: {} })),
},
}));
const { activities } = await import("../../src/managers/activities");
const result = await activities.fetchItem(5001);
expect(result).toBeDefined();
expect(result.cwActivityId).toBe(5001);
});
test("throws GenericError on failure", async () => {
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {
fetch: mock(() => Promise.reject(new Error("CW API down"))),
},
}));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: {} })),
},
}));
test("throws NotAvailable error (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
try {
await activities.fetchItem(9999);
expect(true).toBe(false);
await activities.fetchItem(5001);
expect(true).toBe(false); // Should not reach here
} catch (e: any) {
expect(e.name).toBe("FetchActivityError");
expect(e.status).toBeDefined();
expect(e.name).toBe("NotAvailable");
expect(e.status).toBe(501);
expect(e.message).toContain("not yet implemented");
}
});
});
@@ -90,38 +51,16 @@ describe("activities manager", () => {
// fetchPages
// -------------------------------------------------------------------
describe("fetchPages()", () => {
test("returns array of ActivityControllers", async () => {
const cwData = [buildMockCWActivity(), buildMockCWActivity({ id: 5002 })];
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: cwData })),
post: mock(() => Promise.resolve({ data: {} })),
},
}));
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {},
}));
test("returns empty array (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
const result = await activities.fetchPages(1, 10);
expect(result).toBeArrayOfSize(2);
expect(result).toBeArrayOfSize(0);
});
test("clamps page to minimum 1", async () => {
const getMock = mock(() => Promise.resolve({ data: [] }));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: { get: getMock },
}));
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {},
}));
test("returns empty array for negative page (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
await activities.fetchPages(-5, 10);
const url = getMock.mock.calls[0]?.[0] as string;
expect(url).toContain("page=1");
const result = await activities.fetchPages(-5, 10);
expect(result).toBeArrayOfSize(0);
});
});
@@ -129,23 +68,10 @@ describe("activities manager", () => {
// fetchByCompany
// -------------------------------------------------------------------
describe("fetchByCompany()", () => {
test("returns ActivityControllers for a company", async () => {
const items = [buildMockCWActivity()];
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {
fetchByCompany: mock(() => Promise.resolve(items)),
},
}));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: {} })),
},
}));
test("returns empty array (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
const result = await activities.fetchByCompany(123);
expect(result).toBeArrayOfSize(1);
expect(result).toBeArrayOfSize(0);
});
});
@@ -153,23 +79,10 @@ describe("activities manager", () => {
// fetchByOpportunity
// -------------------------------------------------------------------
describe("fetchByOpportunity()", () => {
test("returns ActivityControllers for an opportunity", async () => {
const items = [buildMockCWActivity()];
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {
fetchByOpportunity: mock(() => Promise.resolve(items)),
},
}));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: {} })),
},
}));
test("returns empty array (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
const result = await activities.fetchByOpportunity(1001);
expect(result).toBeArrayOfSize(1);
expect(result).toBeArrayOfSize(0);
});
});
@@ -221,22 +134,10 @@ describe("activities manager", () => {
// count
// -------------------------------------------------------------------
describe("count()", () => {
test("returns count from activityCw", async () => {
mock.module("../../src/modules/cw-utils/activities/activities", () => ({
activityCw: {
countItems: mock(() => Promise.resolve(42)),
},
}));
mock.module("../../src/constants", () => ({
prisma: createStablePrismaMock(),
connectWiseApi: {
get: mock(() => Promise.resolve({ data: {} })),
},
}));
test("returns 0 (not yet implemented)", async () => {
const { activities } = await import("../../src/managers/activities");
const result = await activities.count();
expect(result).toBe(42);
expect(result).toBe(0);
});
});
});