Create clean release database baseline

This commit is contained in:
2026-07-31 14:07:26 +02:00
parent 5bee3cb103
commit 734a2bcfc4
129 changed files with 2121 additions and 30607 deletions
+8 -88
View File
@@ -172,18 +172,6 @@ function createTestDatabase(): DatabaseContext {
return context;
}
function removeVersionSevenFields(state: Record<string, unknown>) {
delete state.distributionBoardComponents;
delete state.circuitProtectionDevices;
delete state.distributionBoardComponentProtectionDevices;
for (const section of state.circuitSections as Array<
Record<string, unknown>
>) {
delete section.category;
delete section.groupNumber;
}
}
describe("project snapshot repository", () => {
it("captures, hashes and lists a complete named logical snapshot", () => {
const context = createTestDatabase();
@@ -354,41 +342,23 @@ describe("project snapshot repository", () => {
) as Record<string, unknown> & {
project: Record<string, unknown>;
};
currentPayload.schemaVersion = 1;
removeVersionSevenFields(currentPayload);
delete currentPayload.project.internalProjectNumber;
delete currentPayload.project.externalProjectNumber;
delete currentPayload.project.buildingOwner;
delete currentPayload.project.description;
delete currentPayload.project.enabledDistributionBoardSupplyTypes;
for (const board of currentPayload.distributionBoards as Array<
Record<string, unknown>
>) {
delete board.floorId;
delete board.supplyType;
delete board.simultaneityFactor;
}
const legacyPayloadJson = JSON.stringify(currentPayload);
currentPayload.schemaVersion = 99;
const unsupportedPayloadJson = JSON.stringify(currentPayload);
context.db
.update(projectSnapshots)
.set({
schemaVersion: 1,
payloadJson: legacyPayloadJson,
schemaVersion: 99,
payloadJson: unsupportedPayloadJson,
payloadSha256: crypto
.createHash("sha256")
.update(legacyPayloadJson)
.update(unsupportedPayloadJson)
.digest("hex"),
})
.where(eq(projectSnapshots.id, snapshot.id))
.run();
const legacyPrepared = repository.prepareRestore(
"project-1",
snapshot.id
);
assert.ok(legacyPrepared);
assert.equal(
legacyPrepared.command.payload.targetState.project.buildingOwner,
null
assert.throws(
() => repository.prepareRestore("project-1", snapshot.id),
/schema version is not supported/
);
context.db
.update(projectSnapshots)
@@ -474,10 +444,6 @@ describe("portable project transfer", () => {
copied.state.distributionBoards[0].simultaneityFactor,
0.65
);
assert.equal(
copied.state.circuits[0].deviceRows[0].legacyConsumerId,
null
);
} finally {
context.close();
}
@@ -512,52 +478,6 @@ describe("portable project transfer", () => {
}
});
it("imports a checksum-valid version-two project transfer", () => {
const context = createTestDatabase();
try {
const repository = new ProjectTransferRepository(context.db);
const current = repository.exportProject("project-1");
assert.ok(current);
const legacyState = structuredClone(
current.projectState
) as unknown as Record<string, unknown> & {
distributionBoards: Array<Record<string, unknown>>;
};
legacyState.schemaVersion = 2;
removeVersionSevenFields(legacyState);
delete (
legacyState.project as Record<string, unknown>
).enabledDistributionBoardSupplyTypes;
for (const board of legacyState.distributionBoards) {
delete board.floorId;
delete board.supplyType;
delete board.simultaneityFactor;
}
const legacyPayloadJson = JSON.stringify(legacyState);
const duplicate = repository.importDuplicate({
...current,
projectState: legacyState,
payloadSha256: crypto
.createHash("sha256")
.update(legacyPayloadJson)
.digest("hex"),
});
const copied = readProjectStateSnapshot(
context.db,
duplicate.projectId
);
assert.ok(copied);
assert.equal(copied.state.distributionBoards[0].floorId, null);
assert.equal(copied.state.distributionBoards[0].supplyType, null);
assert.equal(
copied.state.distributionBoards[0].simultaneityFactor,
1
);
} finally {
context.close();
}
});
it("rolls back a duplicate when a late project-state insert fails", () => {
const context = createTestDatabase();
try {