Files
flowgraph/test/schema/enums.test.ts

103 lines
2.6 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { Value } from "@alkdev/typebox/value";
import {
CallStatusEnum,
NodeStatusEnum,
OperationTypeEnum,
EdgeTypeEnum,
Nullable,
type CallStatus,
type NodeStatus,
type OperationType,
type EdgeType,
} from "../../src/schema/enums";
describe("CallStatusEnum", () => {
const valid: CallStatus[] = [
"pending",
"running",
"completed",
"failed",
"aborted",
];
it.each(valid)("accepts %s", (v) => {
expect(Value.Check(CallStatusEnum, v)).toBe(true);
});
it("rejects invalid values", () => {
expect(Value.Check(CallStatusEnum, "idle")).toBe(false);
expect(Value.Check(CallStatusEnum, "unknown")).toBe(false);
expect(Value.Check(CallStatusEnum, 42)).toBe(false);
expect(Value.Check(CallStatusEnum, null)).toBe(false);
});
});
describe("NodeStatusEnum", () => {
const valid: NodeStatus[] = [
"idle",
"waiting",
"ready",
"running",
"completed",
"failed",
"skipped",
"aborted",
];
it.each(valid)("accepts %s", (v) => {
expect(Value.Check(NodeStatusEnum, v)).toBe(true);
});
it("rejects invalid values", () => {
expect(Value.Check(NodeStatusEnum, "pending")).toBe(false);
expect(Value.Check(NodeStatusEnum, "unknown")).toBe(false);
expect(Value.Check(NodeStatusEnum, 1)).toBe(false);
});
});
describe("OperationTypeEnum", () => {
const valid: OperationType[] = ["query", "mutation", "subscription"];
it.each(valid)("accepts %s", (v) => {
expect(Value.Check(OperationTypeEnum, v)).toBe(true);
});
it("rejects invalid values", () => {
expect(Value.Check(OperationTypeEnum, "fetch")).toBe(false);
expect(Value.Check(OperationTypeEnum, 0)).toBe(false);
});
});
describe("EdgeTypeEnum", () => {
const valid: EdgeType[] = [
"triggered",
"depends_on",
"typed",
"sequential",
"conditional",
];
it.each(valid)("accepts %s", (v) => {
expect(Value.Check(EdgeTypeEnum, v)).toBe(true);
});
it("rejects invalid values", () => {
expect(Value.Check(EdgeTypeEnum, "parent")).toBe(false);
expect(Value.Check(EdgeTypeEnum, false)).toBe(false);
});
});
describe("Nullable", () => {
it("accepts null", () => {
const schema = Nullable(EdgeTypeEnum);
expect(Value.Check(schema, null)).toBe(true);
});
it("accepts valid enum values", () => {
const schema = Nullable(EdgeTypeEnum);
expect(Value.Check(schema, "typed")).toBe(true);
});
it("rejects invalid non-null values", () => {
const schema = Nullable(EdgeTypeEnum);
expect(Value.Check(schema, "invalid")).toBe(false);
});
});