Inject application database contexts
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user