mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-15 20:17:22 +00:00
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { EnumField } from "../../../../src/data";
|
|
import { runBaseFieldTests, transformPersist } from "./inc";
|
|
|
|
function options(strings: string[]) {
|
|
return { type: "strings", values: strings };
|
|
}
|
|
|
|
describe("[data] EnumField", async () => {
|
|
runBaseFieldTests(
|
|
EnumField,
|
|
{ defaultValue: "a", schemaType: "text" },
|
|
{ options: options(["a", "b", "c"]) }
|
|
);
|
|
|
|
test("yields if no options", async () => {
|
|
expect(() => new EnumField("test", { options: options([]) })).toThrow();
|
|
});
|
|
|
|
test("yields if default value is not a valid option", async () => {
|
|
expect(
|
|
() => new EnumField("test", { options: options(["a", "b"]), default_value: "c" })
|
|
).toThrow();
|
|
});
|
|
|
|
test("transformPersist (config)", async () => {
|
|
const field = new EnumField("test", { options: options(["a", "b", "c"]) });
|
|
|
|
expect(transformPersist(field, null)).resolves.toBeUndefined();
|
|
expect(transformPersist(field, "a")).resolves.toBe("a");
|
|
expect(transformPersist(field, "d")).rejects.toThrow();
|
|
});
|
|
|
|
test("transformRetrieve", async () => {
|
|
const field = new EnumField("test", {
|
|
options: options(["a", "b", "c"]),
|
|
default_value: "a",
|
|
required: true
|
|
});
|
|
|
|
expect(field.transformRetrieve(null)).toBe("a");
|
|
expect(field.transformRetrieve("d")).toBe("a");
|
|
});
|
|
});
|