Add optional room areas

This commit is contained in:
Julian Appel 2026-09-27 20:00:03 +02:00
parent a6500e2b26
commit dce31ee143
26 changed files with 3669 additions and 78 deletions

View file

@ -91,7 +91,14 @@ function minimalSnapshot() {
sortOrder: number;
buildingId: string | null;
}>,
rooms: [],
rooms: [] as Array<{
id: string;
projectId: string;
floorId: string | null;
roomNumber: string;
roomName: string;
areaM2: number | null;
}>,
};
}
@ -443,6 +450,26 @@ describe("project state snapshot model", () => {
assert.throws(() => parseProjectStateSnapshot(floorWithoutBuildingField));
});
it("keeps room areas and upgrades snapshot version 7 with an empty area", () => {
const current = minimalSnapshot();
current.rooms.push({
id: "room-1",
projectId: "project-1",
floorId: null,
roomNumber: "001",
roomName: "Technik",
areaM2: 23.456,
});
assert.equal(parseProjectStateSnapshot(current).rooms[0]?.areaM2, 23.456);
const previous = structuredClone(current);
previous.schemaVersion = 7 as typeof previous.schemaVersion;
delete (previous.rooms[0] as Partial<(typeof previous.rooms)[number]>).areaM2;
const upgraded = parseProjectStateSnapshot(previous);
assert.equal(upgraded.schemaVersion, projectStateSnapshotSchemaVersion);
assert.equal(upgraded.rooms[0]?.areaM2, null);
});
it("upgrades snapshot version 6 without buildings", () => {
const snapshot = minimalSnapshot();
snapshot.floors.push({