mirror of
https://github.com/Kir-Antipov/mc-publish.git
synced 2024-11-23 00:40:59 -05:00
34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
|
import { getEnumDescriptorByUnderlyingType, inferEnumDescriptorOrThrow } from "@/utils/enum/descriptors/enum-descriptor";
|
||
|
|
||
|
describe("getEnumDescriptorByUnderlyingType", () => {
|
||
|
test("returns the correct descriptor for a known type", () => {
|
||
|
const knownTypes = ["number", "bigint", "boolean", "string"] as const;
|
||
|
for (const knowType of knownTypes) {
|
||
|
expect(getEnumDescriptorByUnderlyingType(knowType)?.name).toBe(knowType);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("returns undefined for an unknown type", () => {
|
||
|
expect(getEnumDescriptorByUnderlyingType("unknownType" as "string")).toBeUndefined();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("inferEnumDescriptorOrThrow", () => {
|
||
|
test("infers correct descriptor based on enum values", () => {
|
||
|
expect(inferEnumDescriptorOrThrow([1, 2, 3]).name).toBe("number");
|
||
|
expect(inferEnumDescriptorOrThrow(["a", "b", "c"]).name).toBe("string");
|
||
|
});
|
||
|
|
||
|
test("throws error if enum contains objects of different types", () => {
|
||
|
expect(() => inferEnumDescriptorOrThrow([1, "b", 3])).toThrow("The enum must contain objects of the same type.");
|
||
|
});
|
||
|
|
||
|
test("throws error if enum has an invalid underlying type", () => {
|
||
|
expect(() => inferEnumDescriptorOrThrow([{}])).toThrow("'object' is not an acceptable enum type.");
|
||
|
});
|
||
|
|
||
|
test("returns a number descriptor for an empty array", () => {
|
||
|
expect(inferEnumDescriptorOrThrow([]).name).toBe("number");
|
||
|
});
|
||
|
});
|