import { describe, expect, it } from "vitest";
import {
  DialogRootPropsSchema,
  DialogContentPropsSchema,
  DialogMeta,
} from "../../../src/components/dialog/dialog.props";

describe("Dialog Zod schemas", () => {
  it("validates correct root props", () => {
    const result = DialogRootPropsSchema.safeParse({ open: true, modal: false });
    expect(result.success).toBe(true);
  });

  it("validates empty root props (all optional)", () => {
    const result = DialogRootPropsSchema.safeParse({});
    expect(result.success).toBe(true);
  });

  it("rejects invalid root props", () => {
    const result = DialogRootPropsSchema.safeParse({ open: "yes" });
    expect(result.success).toBe(false);
  });

  it("validates content props", () => {
    const result = DialogContentPropsSchema.safeParse({ forceMount: true });
    expect(result.success).toBe(true);
  });

  it("exposes meta with required parts", () => {
    expect(DialogMeta.name).toBe("Dialog");
    expect(DialogMeta.parts).toContain("Root");
    expect(DialogMeta.parts).toContain("Content");
    expect(DialogMeta.parts).toContain("Title");
    expect(DialogMeta.requiredParts).toContain("Root");
    expect(DialogMeta.requiredParts).toContain("Content");
    expect(DialogMeta.requiredParts).toContain("Title");
  });

  it("schema has descriptions on all fields", () => {
    const shape = DialogRootPropsSchema.shape;
    expect(shape.open.description).toBeDefined();
    expect(shape.modal.description).toBeDefined();
  });
});
