Protect referenced feeder structures from deletion
This commit is contained in:
parent
b893c72534
commit
855a04e655
13 changed files with 369 additions and 0 deletions
|
|
@ -14,6 +14,7 @@ import { circuitDeviceRows } from "../src/db/schema/circuit-device-rows.js";
|
|||
import { circuitProtectionDevices } from "../src/db/schema/circuit-protection-devices.js";
|
||||
import { circuitSections } from "../src/db/schema/circuit-sections.js";
|
||||
import { circuits } from "../src/db/schema/circuits.js";
|
||||
import { distributionBoards } from "../src/db/schema/distribution-boards.js";
|
||||
import { projectDevices } from "../src/db/schema/project-devices.js";
|
||||
import { projectRevisions } from "../src/db/schema/project-revisions.js";
|
||||
import { projects } from "../src/db/schema/projects.js";
|
||||
|
|
@ -442,6 +443,48 @@ describe("circuit structure project-command repository", () => {
|
|||
}
|
||||
});
|
||||
|
||||
it("blocks deleting a circuit that feeds a distribution board", () => {
|
||||
const fixture = createTestDatabase();
|
||||
try {
|
||||
const downstream = new DistributionBoardFixtureRepository(
|
||||
fixture.context.db
|
||||
).createWithCircuitListAndDefaultSections("project-1", "UV Unterverteiler");
|
||||
fixture.context.db
|
||||
.update(distributionBoards)
|
||||
.set({
|
||||
boardNumber: "UV-02",
|
||||
feedingDistributionBoardId: fixture.circuitListId,
|
||||
feedingCircuitId: "circuit-existing",
|
||||
})
|
||||
.where(eq(distributionBoards.id, downstream.id))
|
||||
.run();
|
||||
|
||||
const store = new CircuitStructureProjectCommandRepository(
|
||||
fixture.context.db
|
||||
);
|
||||
assert.throws(
|
||||
() =>
|
||||
store.execute({
|
||||
projectId: "project-1",
|
||||
expectedRevision: 0,
|
||||
source: "user",
|
||||
command: createCircuitDeleteProjectCommand(
|
||||
"circuit-existing",
|
||||
fixture.circuitListId
|
||||
),
|
||||
}),
|
||||
/Speist UV-02 – erst Einspeisung ändern\./
|
||||
);
|
||||
assert.ok(getCircuit(fixture.context, "circuit-existing"));
|
||||
assert.equal(
|
||||
fixture.context.db.select().from(projectRevisions).all().length,
|
||||
0
|
||||
);
|
||||
} finally {
|
||||
fixture.context.close();
|
||||
}
|
||||
});
|
||||
|
||||
it("rolls back insert and delete for late history failures", () => {
|
||||
const fixture = createTestDatabase();
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue