Skip to content
Snippets Groups Projects
createFormHelpers.ts 1.48 KiB
Newer Older
import { isRequired } from "ra-core";

import { createFormHelpers } from "../createFormHelpers";

const schema = {
  entities: {
    User: {
      login: { type: "String", required: true } as const,
      address: { type: "String" } as const,
      active: { type: "Boolean", default: true } as const,
    },
  },
  relationsDefinitions: [],
};

describe("FormHelper", () => {
  const formHelpers = createFormHelpers(schema);
  describe("getInputProps", () => {
    it("returns first argument as source property", () => {
      const props = formHelpers.User.getInputProps("login");
      expect(props.source).toBe("login");
    });

    it("returns validate props for which isRequired returns false when attribute is not required", () => {
      const props = formHelpers.User.getInputProps("address");
      expect(isRequired(props.validate)).toBe(false);
    });

    it("returns validate props for which isRequired returns true when attribute is required", () => {
      const props = formHelpers.User.getInputProps("login");
      expect(isRequired(props.validate)).toBe(true);
    });

    it("returns an 'initialValue' property when the attribute has a default value", () => {
      const props = formHelpers.User.getInputProps("active");
      expect(props.initialValue).toBe(true);
    });

    it("returns no 'initialValue' property when the attribute has no default value", () => {
      const props = formHelpers.User.getInputProps("active");
      expect(props.initialValue).toBe(true);
    });