39 lines
2.1 KiB
TypeScript
39 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { SelectRootPropsSchema, SelectMeta } from "../../src/components/select/select.props";
|
|
import { ComboboxRootPropsSchema, ComboboxMeta } from "../../src/components/combobox/combobox.props";
|
|
import { DropdownMenuRootPropsSchema, DropdownMenuMeta } from "../../src/components/dropdown-menu/dropdown-menu.props";
|
|
import { ListboxRootPropsSchema, ListboxMeta } from "../../src/components/listbox/listbox.props";
|
|
import { SeparatorPropsSchema, SeparatorMeta } from "../../src/components/separator/separator.props";
|
|
import { PaginationRootPropsSchema, PaginationMeta } from "../../src/components/pagination/pagination.props";
|
|
describe("Collection component schemas", () => {
|
|
it("Select validates", () => {
|
|
expect(SelectRootPropsSchema.safeParse({ value: "opt1", placeholder: "Choose..." }).success).toBe(true);
|
|
});
|
|
it("Combobox validates", () => {
|
|
expect(ComboboxRootPropsSchema.safeParse({ inputValue: "search", allowCustomValue: true }).success).toBe(true);
|
|
});
|
|
it("DropdownMenu validates", () => {
|
|
expect(DropdownMenuRootPropsSchema.safeParse({ open: true }).success).toBe(true);
|
|
});
|
|
it("Listbox validates", () => {
|
|
expect(ListboxRootPropsSchema.safeParse({ value: "a" }).success).toBe(true);
|
|
expect(ListboxRootPropsSchema.safeParse({ value: ["a", "b"], multiple: true }).success).toBe(true);
|
|
});
|
|
it("Separator validates", () => {
|
|
expect(SeparatorPropsSchema.safeParse({ orientation: "vertical" }).success).toBe(true);
|
|
expect(SeparatorPropsSchema.safeParse({ orientation: "angled" }).success).toBe(false);
|
|
});
|
|
it("Pagination validates", () => {
|
|
expect(PaginationRootPropsSchema.safeParse({ page: 3, count: 10, siblingCount: 2 }).success).toBe(true);
|
|
});
|
|
it("all Meta objects valid", () => {
|
|
const metas = [SelectMeta, ComboboxMeta, DropdownMenuMeta, ListboxMeta, SeparatorMeta, PaginationMeta];
|
|
for (const meta of metas) {
|
|
expect(meta.name).toBeTruthy();
|
|
expect(meta.description).toBeTruthy();
|
|
expect(meta.parts.length).toBeGreaterThan(0);
|
|
expect(meta.requiredParts.length).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
});
|