chore(repo): initialize planarchy workspace

This commit is contained in:
2026-03-14 14:31:09 +01:00
commit dd55d0e78b
769 changed files with 166461 additions and 0 deletions
@@ -0,0 +1,178 @@
import { AllocationStatus } from "@planarchy/shared";
import { describe, expect, it, vi } from "vitest";
import { updateAllocationEntry } from "../index.js";
describe("allocation entry resolution helpers", () => {
it("updates an explicit demand requirement", async () => {
const existingDemand = {
id: "demand_1",
projectId: "project_1",
startDate: new Date("2026-03-16"),
endDate: new Date("2026-03-20"),
hoursPerDay: 4,
percentage: 50,
role: "FX Artist",
roleId: "role_fx",
headcount: 1,
status: AllocationStatus.PROPOSED,
metadata: {},
createdAt: new Date("2026-03-13"),
updatedAt: new Date("2026-03-13"),
project: { id: "project_1", name: "Project One", shortCode: "PRJ" },
roleEntity: { id: "role_fx", name: "FX Artist", color: "#222222" },
};
const updatedDemand = {
...existingDemand,
headcount: 2,
status: AllocationStatus.CONFIRMED,
metadata: { source: "entry-test" },
updatedAt: new Date("2026-03-14"),
};
const demandRequirementFindUnique = vi.fn().mockResolvedValue(existingDemand);
const demandRequirementUpdate = vi.fn().mockResolvedValue(updatedDemand);
const assignmentFindUnique = vi.fn().mockResolvedValue(null);
const assignmentUpdate = vi.fn();
const auditLogCreate = vi.fn().mockResolvedValue({});
const result = await updateAllocationEntry(
{
demandRequirement: {
findUnique: demandRequirementFindUnique,
update: demandRequirementUpdate,
},
assignment: {
findUnique: assignmentFindUnique,
update: assignmentUpdate,
},
auditLog: { create: auditLogCreate },
} as never,
{
id: "demand_1",
demandRequirementUpdate: {
headcount: 2,
status: AllocationStatus.CONFIRMED,
metadata: { source: "entry-test" },
},
assignmentUpdate: {},
},
);
expect(result.strategy).toBe("explicit_demand");
expect(result.allocation.id).toBe("demand_1");
expect(result.allocation.isPlaceholder).toBe(true);
expect(result.allocation.headcount).toBe(2);
expect(demandRequirementUpdate).toHaveBeenCalledWith(
expect.objectContaining({
where: { id: "demand_1" },
data: expect.objectContaining({
headcount: 2,
status: AllocationStatus.CONFIRMED,
}),
}),
);
expect(assignmentUpdate).not.toHaveBeenCalled();
});
it("updates an explicit assignment", async () => {
const existingAssignment = {
id: "assignment_1",
demandRequirementId: null,
resourceId: "resource_1",
projectId: "project_1",
startDate: new Date("2026-03-16"),
endDate: new Date("2026-03-20"),
hoursPerDay: 4,
percentage: 50,
role: "Compositor",
roleId: "role_comp",
dailyCostCents: 20000,
status: AllocationStatus.PROPOSED,
metadata: {},
createdAt: new Date("2026-03-13"),
updatedAt: new Date("2026-03-13"),
resource: {
id: "resource_1",
displayName: "Alice",
eid: "E-001",
lcrCents: 5000,
},
project: { id: "project_1", name: "Project One", shortCode: "PRJ" },
roleEntity: { id: "role_comp", name: "Compositor", color: "#111111" },
demandRequirement: null,
};
const updatedAssignment = {
...existingAssignment,
hoursPerDay: 6,
percentage: 75,
dailyCostCents: 30000,
status: AllocationStatus.ACTIVE,
updatedAt: new Date("2026-03-14"),
};
const demandRequirementFindUnique = vi.fn().mockResolvedValue(null);
const assignmentFindUnique = vi.fn().mockResolvedValue(existingAssignment);
const assignmentUpdate = vi.fn().mockResolvedValue(updatedAssignment);
const auditLogCreate = vi.fn().mockResolvedValue({});
const result = await updateAllocationEntry(
{
demandRequirement: {
findUnique: demandRequirementFindUnique,
},
assignment: {
findUnique: assignmentFindUnique,
update: assignmentUpdate,
},
auditLog: { create: auditLogCreate },
} as never,
{
id: "assignment_1",
demandRequirementUpdate: {},
assignmentUpdate: {
hoursPerDay: 6,
percentage: 75,
dailyCostCents: 30000,
status: AllocationStatus.ACTIVE,
},
},
);
expect(result.strategy).toBe("explicit_assignment");
expect(result.allocation.id).toBe("assignment_1");
expect(assignmentUpdate).toHaveBeenCalledWith(
expect.objectContaining({
where: { id: "assignment_1" },
}),
);
});
it("throws NOT_FOUND when the id does not match any demand or assignment", async () => {
const demandRequirementFindUnique = vi.fn().mockResolvedValue(null);
const assignmentFindUnique = vi.fn().mockResolvedValue(null);
await expect(
updateAllocationEntry(
{
demandRequirement: {
findUnique: demandRequirementFindUnique,
},
assignment: {
findUnique: assignmentFindUnique,
},
} as never,
{
id: "nonexistent_id",
demandRequirementUpdate: {
status: AllocationStatus.CONFIRMED,
},
assignmentUpdate: {},
},
),
).rejects.toMatchObject({
code: "NOT_FOUND",
message: "Allocation not found",
});
});
});