Farmbot-Web-App/frontend/farm_designer/point_groups/criteria/__tests__/subcriteria_test.tsx

87 lines
2.6 KiB
TypeScript

jest.mock("../edit", () => ({
toggleAndEditEqCriteria: jest.fn(),
}));
import React from "react";
import { mount } from "enzyme";
import { toggleAndEditEqCriteria } from "..";
import { CheckboxListProps, SubCriteriaSectionProps } from "../interfaces";
import {
fakePointGroup,
} from "../../../../__test_support__/fake_state/resources";
import { CheckboxList, SubCriteriaSection } from "../subcriteria";
describe("<SubCriteriaSection />", () => {
const fakeProps = (): SubCriteriaSectionProps => ({
dispatch: Function,
group: fakePointGroup(),
disabled: false,
pointerTypes: [],
slugs: [],
});
it("doesn't return criteria", () => {
const p = fakeProps();
p.pointerTypes = [];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text()).toEqual("");
});
it("doesn't return incompatible criteria", () => {
const p = fakeProps();
p.pointerTypes = ["Plant", "Weed"];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text()).toEqual("");
});
it("returns plant criteria", () => {
const p = fakeProps();
p.pointerTypes = ["Plant"];
p.slugs = ["strawberry-guava"];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text().toLowerCase()).toContain("stage");
expect(wrapper.text()).toContain("Strawberry guava");
});
it("returns point criteria", () => {
const p = fakeProps();
p.pointerTypes = ["GenericPointer"];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text().toLowerCase()).toContain("color");
});
it("returns weed criteria", () => {
const p = fakeProps();
p.pointerTypes = ["Weed"];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text().toLowerCase()).toContain("source");
});
it("returns tool slot criteria", () => {
const p = fakeProps();
p.pointerTypes = ["ToolSlot"];
const wrapper = mount(<SubCriteriaSection {...p} />);
expect(wrapper.text().toLowerCase()).toContain("direction");
});
});
describe("<CheckboxList />", () => {
const fakeProps = (): CheckboxListProps<string> => ({
criteriaKey: "openfarm_slug",
list: [{ label: "label", value: "value" }],
dispatch: jest.fn(),
group: fakePointGroup(),
pointerType: "Plant",
disabled: false,
});
it("toggles criteria", () => {
const p = fakeProps();
const wrapper = mount(<CheckboxList {...p} />);
expect(wrapper.text()).toContain("label");
wrapper.find("input").first().simulate("change");
expect(toggleAndEditEqCriteria).toHaveBeenCalledWith(
p.group, "openfarm_slug", "value");
});
});