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
@@ -21,11 +21,9 @@ import { ProjectRevisionConflictError } from "../src/domain/errors/project-revis
import {
createDistributionBoardInsertProjectCommand,
createDistributionBoardStructureSnapshot,
type DistributionBoardStructureProjectCommand,
} from "../src/domain/models/distribution-board-structure-project-command.model.js";
import {
createDistributionBoardUpdateProjectCommand,
type DistributionBoardUpdateProjectCommand,
} from "../src/domain/models/distribution-board-project-command.model.js";
import {
copyDistributionBoard,
@@ -62,43 +60,6 @@ function getStructureCounts(context: DatabaseContext) {
};
}
function legacySections(circuitListId: string) {
return [
{
id: "legacy-lighting",
circuitListId,
key: "lighting",
displayName: "Lighting",
prefix: "-1F",
sortOrder: 10,
},
{
id: "legacy-single-phase",
circuitListId,
key: "single_phase",
displayName: "Single-phase circuits",
prefix: "-2F",
sortOrder: 20,
},
{
id: "legacy-three-phase",
circuitListId,
key: "three_phase",
displayName: "Three-phase circuits",
prefix: "-3F",
sortOrder: 30,
},
{
id: "legacy-unassigned",
circuitListId,
key: "unassigned",
displayName: "Unassigned",
prefix: "-UF",
sortOrder: 90,
},
];
}
describe("distribution-board structure project command", () => {
it("builds the fixed setup and sends the expected frontend revision", async () => {
const structure = createDistributionBoardStructureSnapshot(
@@ -308,104 +269,6 @@ describe("distribution-board structure project command", () => {
}
});
it("applies stored version-one setup commands with unassigned new fields", () => {
const context = createTestDatabase();
try {
const repository =
new DistributionBoardStructureProjectCommandRepository(
context.db
);
const current = createDistributionBoardStructureSnapshot(
"project-1",
"UV Alt",
{ floorId: null, supplyType: null }
);
const {
floorId: _floorId,
supplyType: _supplyType,
...legacyBoard
} = current.distributionBoard;
const legacyCommand = {
schemaVersion: 1,
type: "distribution-board.insert",
payload: {
structure: {
distributionBoard: legacyBoard,
circuitList: current.circuitList,
sections: legacySections(current.circuitList.id),
},
},
} as unknown as DistributionBoardStructureProjectCommand;
repository.execute({
projectId: "project-1",
expectedRevision: 0,
source: "user",
command: legacyCommand,
});
const inserted = context.db
.select()
.from(distributionBoards)
.get();
assert.equal(inserted?.floorId, null);
assert.equal(inserted?.supplyType, null);
assert.equal(
context.db.select().from(circuitSections).all().length,
4
);
assert.equal(
context.db.select().from(distributionBoardComponents).all()
.length,
0
);
} finally {
context.close();
}
});
it("keeps stored version-two setup commands component-free", () => {
const context = createTestDatabase();
try {
const repository =
new DistributionBoardStructureProjectCommandRepository(
context.db
);
const current = createDistributionBoardStructureSnapshot(
"project-1",
"UV Version 2"
);
const command = {
schemaVersion: 2,
type: "distribution-board.insert",
payload: {
structure: {
distributionBoard: current.distributionBoard,
circuitList: current.circuitList,
sections: legacySections(current.circuitList.id),
},
},
} as DistributionBoardStructureProjectCommand;
const inserted = repository.execute({
projectId: "project-1",
expectedRevision: 0,
source: "user",
command,
});
assert.equal(inserted.inverse.schemaVersion, 2);
assert.equal(
context.db.select().from(circuitSections).all().length,
4
);
assert.equal(
context.db.select().from(distributionBoardComponents).all()
.length,
0
);
} finally {
context.close();
}
});
it("updates floor, supply type and simultaneity factor with persisted undo", () => {
const context = createTestDatabase();
try {
@@ -524,52 +387,6 @@ describe("distribution-board structure project command", () => {
}
});
it("keeps stored version-one board updates executable", () => {
const context = createTestDatabase();
try {
const repository =
new DistributionBoardStructureProjectCommandRepository(
context.db
);
const structure = createDistributionBoardStructureSnapshot(
"project-1",
"UV Alt",
{ supplyType: "AV" }
);
repository.execute({
projectId: "project-1",
expectedRevision: 0,
source: "user",
command:
createDistributionBoardInsertProjectCommand(structure),
});
const legacyUpdate = {
schemaVersion: 1,
type: "distribution-board.update",
payload: {
distributionBoardId: structure.distributionBoard.id,
changes: [{ field: "supplyType", value: "SV" }],
},
} as DistributionBoardUpdateProjectCommand;
repository.executeUpdate({
projectId: "project-1",
expectedRevision: 1,
source: "user",
command: legacyUpdate,
});
const board = context.db
.select()
.from(distributionBoards)
.get();
assert.equal(board?.supplyType, "SV");
assert.equal(board?.simultaneityFactor, 1);
} finally {
context.close();
}
});
it("sends distribution-board writes to the revision-safe API", async () => {
const requests: Array<{ url: string; method: string; body: unknown }> = [];
const originalFetch = globalThis.fetch;