Files
dbx/apps/desktop/src/lib/__tests__/database/databaseObjectDependencies.spec.ts
T

33 lines
1.4 KiB
TypeScript
Vendored

import { describe, expect, it } from "vitest";
import { canViewDatabaseObjectDependencies, databaseDependencyProviderFor } from "@/lib/database/databaseObjectDependencies";
const node = (overrides: Record<string, unknown> = {}) => ({
type: "table" as const,
schema: "APP",
objectName: "ORDERS",
label: "ORDERS",
...overrides,
});
describe("database dependency providers", () => {
it("resolves only providers registered for the requested database", () => {
expect(databaseDependencyProviderFor("xugu")?.databaseType).toBe("xugu");
expect(databaseDependencyProviderFor("postgres")).toBeNull();
expect(databaseDependencyProviderFor(undefined)).toBeNull();
});
it("keeps the UI capability check database-agnostic", () => {
expect(canViewDatabaseObjectDependencies("xugu", node())).toBe(true);
expect(canViewDatabaseObjectDependencies("postgres", node())).toBe(false);
});
it("does not expose package members or incomplete nodes", () => {
const provider = databaseDependencyProviderFor("xugu");
expect(provider).not.toBeNull();
expect(provider!.supports(node({ type: "procedure", parentType: "package", parentName: "PKG" }))).toBe(false);
expect(provider!.supports(node({ type: "package-body" }))).toBe(false);
expect(provider!.buildQuery(node({ schema: undefined }))).toBeNull();
expect(provider!.buildQuery(node({ type: "sequence" }))).toBeNull();
});
});