Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/apps/web/app/services/admin/deploy-admin.server.test.ts
T

59 lines
2.2 KiB
TypeScript

// @vitest-environment node
import { describe, expect, it } from "vitest";
import { buildDeployMetadata, getDeployAdminSnapshot } from "./deploy-admin.server";
describe("admin deploy snapshot service", () => {
it("builds deploy metadata from runtime env", () => {
expect(
buildDeployMetadata({
NODE_ENV: "production",
SENTRY_ENVIRONMENT: "staging",
APP_REVISION: "abc123",
SENTRY_RELEASE: "rel-1",
GIT_BRANCH: "main",
DOCKER_IMAGE: "git.tool-ctrl.de/toolctrl-labs/hivegrid-web:abc123",
BUILD_TIME: "2026-07-09T00:00:00.000Z",
})
).toEqual({
environment: "staging",
nodeEnv: "production",
release: "rel-1",
revision: "abc123",
branch: "main",
image: "git.tool-ctrl.de/toolctrl-labs/hivegrid-web:abc123",
buildTime: "2026-07-09T00:00:00.000Z",
});
});
it("merges repo migrations with applied DB state", async () => {
const snapshot = await getDeployAdminSnapshot({
env: { NODE_ENV: "production", APP_REVISION: "abc123" },
listMigrationNames: () => ["20260701000000_init", "20260702000000_next", "20260703000000_failed"],
listAppliedMigrations: async () => [
{ migration_name: "20260701000000_init", finished_at: new Date("2026-07-01T00:00:00.000Z"), rolled_back_at: null, logs: null },
{ migration_name: "20260703000000_failed", finished_at: null, rolled_back_at: null, logs: "failed" },
],
});
expect(snapshot.migrationDbReachable).toBe(true);
expect(snapshot.migrations.map((migration) => [migration.name, migration.state])).toEqual([
["20260703000000_failed", "failed"],
["20260702000000_next", "pending"],
["20260701000000_init", "applied"],
]);
});
it("falls back to unknown migration state when DB is unreachable", async () => {
const snapshot = await getDeployAdminSnapshot({
env: { NODE_ENV: "development" },
listMigrationNames: () => ["20260701000000_init"],
listAppliedMigrations: async () => {
throw new Error("db unavailable");
},
});
expect(snapshot.migrationDbReachable).toBe(false);
expect(snapshot.migrations).toEqual([{ name: "20260701000000_init", state: "unknown" }]);
});
});