Inject application database contexts

This commit is contained in:
2026-07-26 12:30:42 +02:00
parent 859fa4a42a
commit d7b98de56a
26 changed files with 201 additions and 63 deletions
+77
View File
@@ -10,6 +10,15 @@ import {
verifyDatabaseFile,
} from "../src/db/database-backup.js";
import { createDatabaseContext } from "../src/db/database-context.js";
import { CircuitDeviceRowRepository } from "../src/db/repositories/circuit-device-row.repository.js";
import { CircuitListRepository } from "../src/db/repositories/circuit-list.repository.js";
import { CircuitSectionRepository } from "../src/db/repositories/circuit-section.repository.js";
import { CircuitRepository } from "../src/db/repositories/circuit.repository.js";
import { FloorRepository } from "../src/db/repositories/floor.repository.js";
import { GlobalDeviceRepository } from "../src/db/repositories/global-device.repository.js";
import { ProjectDeviceRepository } from "../src/db/repositories/project-device.repository.js";
import { ProjectRepository } from "../src/db/repositories/project.repository.js";
import { RoomRepository } from "../src/db/repositories/room.repository.js";
import { projects } from "../src/db/schema/projects.js";
describe("database backup and restore", () => {
@@ -86,3 +95,71 @@ describe("database backup and restore", () => {
}
});
});
describe("application repository database contexts", () => {
it("keep reads and writes inside their injected database", async () => {
const first = createDatabaseContext(":memory:");
const second = createDatabaseContext(":memory:");
try {
for (const context of [first, second]) {
migrate(context.db, {
migrationsFolder: path.resolve("src", "db", "migrations"),
});
}
const firstProjects = new ProjectRepository(first.db);
const secondProjects = new ProjectRepository(second.db);
const project = await firstProjects.create({ name: "Nur in Datenbank A" });
assert.equal((await firstProjects.list()).length, 1);
assert.deepEqual(await secondProjects.list(), []);
const firstGlobalDevices = new GlobalDeviceRepository(first.db);
const secondGlobalDevices = new GlobalDeviceRepository(second.db);
await firstGlobalDevices.create({
name: "Steckdose",
displayName: "Steckdose",
quantity: 1,
installedPowerPerUnitKw: 0.2,
demandFactor: 1,
});
assert.equal((await firstGlobalDevices.list()).length, 1);
assert.deepEqual(await secondGlobalDevices.list(), []);
assert.deepEqual(
await new CircuitListRepository(first.db).listByProject(project.id),
[]
);
assert.deepEqual(
await new CircuitSectionRepository(first.db).listByCircuitList(
"unknown-list"
),
[]
);
assert.deepEqual(
await new CircuitRepository(first.db).listByCircuitList("unknown-list"),
[]
);
assert.deepEqual(
await new CircuitDeviceRowRepository(first.db).listByCircuitList([]),
[]
);
assert.deepEqual(
await new FloorRepository(first.db).listByProject(project.id),
[]
);
assert.deepEqual(
await new RoomRepository(first.db).listByProject(project.id),
[]
);
assert.deepEqual(
await new ProjectDeviceRepository(first.db).listByProject(project.id),
[]
);
} finally {
first.close();
second.close();
}
});
});