feat(import): harden workbook parser boundaries

This commit is contained in:
2026-03-31 22:48:30 +02:00
parent 3e8b1702bc
commit db50e2e555
20 changed files with 936 additions and 174 deletions
@@ -230,8 +230,8 @@ describe("dispo import", () => {
});
expect(report.resourceCount).toBeGreaterThan(500);
expect(report.canCommitWithStrictSourceData).toBe(true);
expect(report.canCommitWithFallbacks).toBe(true);
expect(report.canCommitWithStrictSourceData).toBe(false);
expect(report.canCommitWithFallbacks).toBe(false);
expect(report.issues.find((issue) => issue.code === "FALLBACK_EMAIL_REQUIRED")).toBeUndefined();
expect(report.issues.find((issue) => issue.code === "FALLBACK_LCR_REQUIRED")).toBeUndefined();
expect(report.issues.find((issue) => issue.code === "FALLBACK_UCR_REQUIRED")).toBeUndefined();
@@ -247,6 +247,10 @@ describe("dispo import", () => {
);
expect(report.issues).toEqual(
expect.arrayContaining([
expect.objectContaining({
code: "PUBLIC_HOLIDAY_IMPORT_REQUIRES_CALENDAR_SYNC",
severity: "blocker",
}),
expect.objectContaining({
code: "UNRESOLVED_RECORDS_PRESENT",
severity: "warning",
@@ -740,7 +744,7 @@ describe("dispo import", () => {
expect(result.counts.stagedResources).toBeGreaterThan(800);
expect(result.counts.stagedRosterResources).toBeGreaterThan(500);
expect(result.counts.stagedAssignments).toBeGreaterThan(1000);
expect(result.readiness.canCommitWithStrictSourceData).toBe(true);
expect(result.readiness.canCommitWithStrictSourceData).toBe(false);
expect(result.readiness.issues).not.toEqual(
expect.arrayContaining([
expect.objectContaining({
@@ -754,7 +758,7 @@ describe("dispo import", () => {
data: expect.objectContaining({
summary: expect.objectContaining({
readiness: expect.objectContaining({
canCommitWithStrictSourceData: true,
canCommitWithStrictSourceData: false,
}),
}),
}),