46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
|
|
function readSource(path: string) {
|
|
return readFileSync(path, "utf8");
|
|
}
|
|
|
|
function assertEnvironmentCleanupBeforeServerDelete(source: string) {
|
|
const environmentCleanup = source.indexOf("tx.environment.deleteMany");
|
|
const serverDelete = source.indexOf("tx.server.delete");
|
|
|
|
assert.notEqual(environmentCleanup, -1);
|
|
assert.notEqual(serverDelete, -1);
|
|
assert.ok(
|
|
environmentCleanup < serverDelete,
|
|
"server deletion must remove environments before deleting servers",
|
|
);
|
|
}
|
|
|
|
function assertStorageDestinationCleanupBeforeServerDelete(source: string) {
|
|
const storageCleanup = source.indexOf("tx.userStorageDestination.deleteMany");
|
|
const serverDelete = source.indexOf("tx.server.delete");
|
|
|
|
assert.notEqual(storageCleanup, -1);
|
|
assert.notEqual(serverDelete, -1);
|
|
assert.ok(
|
|
storageCleanup < serverDelete,
|
|
"server deletion must remove server-specific storage destinations before deleting servers",
|
|
);
|
|
}
|
|
|
|
test("server deletion removes dependent records before deleting the server", () => {
|
|
const source = readSource("src/server/routes/servers.ts");
|
|
|
|
assertEnvironmentCleanupBeforeServerDelete(source);
|
|
assertStorageDestinationCleanupBeforeServerDelete(source);
|
|
});
|
|
|
|
test("organization deletion removes dependent records before deleting servers", () => {
|
|
const source = readSource("src/server/routes/organizations.ts");
|
|
|
|
assertEnvironmentCleanupBeforeServerDelete(source);
|
|
assertStorageDestinationCleanupBeforeServerDelete(source);
|
|
});
|