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,92 @@
import { describe, expect, it } from "vitest";
import {
DISPO_INTERNAL_PROJECT_BUCKETS,
DISPO_REQUIRED_ROLE_SEEDS,
createWeekdayAvailabilityFromFte,
normalizeDispoChapterToken,
normalizeDispoRoleToken,
normalizeDispoUtilizationToken,
resolveCanonicalResourceIdentity,
} from "../index.js";
describe("dispo import normalization", () => {
it("normalizes canonical identity and detects enterprise/eid conflicts", () => {
expect(resolveCanonicalResourceIdentity(" Alice.Example ", "alice.example")).toEqual({
canonicalId: "alice.example",
normalizedEnterpriseId: "alice.example",
normalizedEid: "alice.example",
conflict: false,
});
expect(resolveCanonicalResourceIdentity("alice.example", "bob.example")).toEqual({
canonicalId: null,
normalizedEnterpriseId: "alice.example",
normalizedEid: "bob.example",
conflict: true,
});
});
it("maps chapter, role, and utilization tokens to canonical values", () => {
expect(normalizeDispoChapterToken("3d")).toBe("Digital Content Production");
expect(normalizeDispoRoleToken(" pm ")).toBe("Project Manager");
expect(normalizeDispoUtilizationToken("md")).toBe("MD&I");
expect(normalizeDispoUtilizationToken("un")).toBeNull();
expect(normalizeDispoRoleToken("unknown")).toBeNull();
});
it("creates the default weekday fallback availability from fte", () => {
expect(createWeekdayAvailabilityFromFte(1)).toEqual({
monday: 8,
tuesday: 8,
wednesday: 8,
thursday: 8,
friday: 8,
});
expect(createWeekdayAvailabilityFromFte(0.5)).toEqual({
monday: 4,
tuesday: 4,
wednesday: 4,
thursday: 4,
friday: 4,
});
expect(createWeekdayAvailabilityFromFte(0.8)).toEqual({
monday: 6.4,
tuesday: 6.4,
wednesday: 6.4,
thursday: 6.4,
friday: 6.4,
});
});
it("keeps canonical bucket and role seed definitions stable", () => {
expect(DISPO_INTERNAL_PROJECT_BUCKETS).toEqual([
{
sourceToken: "MO",
shortCode: "INT-MO",
name: "Management & Operations",
utilizationCategoryCode: "M&O",
},
{
sourceToken: "MD",
shortCode: "INT-MD",
name: "Market Development & Initiatives",
utilizationCategoryCode: "MD&I",
},
{
sourceToken: "PD",
shortCode: "INT-PD",
name: "People Development & Recruitment",
utilizationCategoryCode: "PD&R",
},
]);
expect(DISPO_REQUIRED_ROLE_SEEDS.map((role) => role.name)).toEqual([
"2D Artist",
"3D Artist",
"Project Manager",
"Art Director",
]);
});
});