Files
ThothII/backend/test/catalog-operation-coordinator.test.ts
T

21 lines
902 B
TypeScript

import { expect, test } from "vitest";
import { CatalogOperationCoordinator } from "../src/catalog/operation-coordinator.js";
test("releases earlier database reservations when a batch reservation cannot be completed", async () => {
const coordinator = new CatalogOperationCoordinator();
const releaseBusyDatabase = coordinator.reserve("database-b");
await expect(coordinator.runMany(["database-a", "database-b"], async () => "unreachable"))
.rejects.toThrow("A database operation is already in progress");
expect(await coordinator.run("database-a", async () => "available")).toBe("available");
releaseBusyDatabase();
});
test("reserves duplicate database ids only once for a batch operation", async () => {
const coordinator = new CatalogOperationCoordinator();
expect(await coordinator.runMany(["database-a", "database-a"], async () => "completed"))
.toBe("completed");
});