29 lines
1.8 KiB
TypeScript
29 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { TooltipRootPropsSchema, TooltipMeta } from "../../src/components/tooltip/tooltip.props";
|
|
import { PopoverRootPropsSchema, PopoverMeta } from "../../src/components/popover/popover.props";
|
|
import { HoverCardRootPropsSchema, HoverCardMeta } from "../../src/components/hover-card/hover-card.props";
|
|
import { DrawerRootPropsSchema, DrawerMeta } from "../../src/components/drawer/drawer.props";
|
|
import { ToastRegionPropsSchema, ToastMeta } from "../../src/components/toast/toast.props";
|
|
const ok = (schema: { safeParse: (v: unknown) => { success: boolean } }, v: unknown) => schema.safeParse(v).success;
|
|
describe("Overlay component schemas", () => {
|
|
it("Tooltip validates delays", () => { expect(ok(TooltipRootPropsSchema, { openDelay: 500, closeDelay: 200 })).toBe(true); });
|
|
it("Popover validates modal", () => { expect(ok(PopoverRootPropsSchema, { open: true, modal: true })).toBe(true); });
|
|
it("HoverCard validates delays", () => { expect(ok(HoverCardRootPropsSchema, { openDelay: 300 })).toBe(true); });
|
|
it("Drawer validates side enum", () => {
|
|
expect(ok(DrawerRootPropsSchema, { side: "left" })).toBe(true);
|
|
expect(ok(DrawerRootPropsSchema, { side: "center" })).toBe(false);
|
|
});
|
|
it("Toast validates placement", () => {
|
|
expect(ok(ToastRegionPropsSchema, { placement: "top-center", duration: 3000, limit: 5 })).toBe(true);
|
|
expect(ok(ToastRegionPropsSchema, { placement: "middle" })).toBe(false);
|
|
});
|
|
it("all Meta objects valid", () => {
|
|
for (const meta of [TooltipMeta, PopoverMeta, HoverCardMeta, DrawerMeta, ToastMeta]) {
|
|
expect(meta.name).toBeTruthy();
|
|
expect(meta.description).toBeTruthy();
|
|
expect(meta.parts.length).toBeGreaterThan(0);
|
|
expect(meta.requiredParts.length).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
});
|