ulthar-framework/packages/fabric/core/variant/variant.test.ts

33 lines
937 B
TypeScript

import { expect } from "jsr:@std/expect";
import { type TaggedVariant, Variant, VariantTag } from "./variant.ts";
interface SuccessVariant extends TaggedVariant<"success"> {
[VariantTag]: "success";
data: string;
}
interface ErrorVariant extends TaggedVariant<"error"> {
[VariantTag]: "error";
message: string;
}
const successVariant = {
[VariantTag]: "success",
data: "Operation successful",
} as SuccessVariant | ErrorVariant;
const errorVariant = {
[VariantTag]: "error",
message: "Operation failed",
} as SuccessVariant | ErrorVariant;
Deno.test("is() should return true for a matching tag", () => {
expect(Variant.is(successVariant, "success")).toBe(true);
expect(Variant.is(errorVariant, "error")).toBe(true);
});
Deno.test("is() should return false for a non-matching tag", () => {
expect(Variant.is(successVariant, "error")).toBe(false);
expect(Variant.is(errorVariant, "success")).toBe(false);
});