Farmbot-Web-App/frontend/farm_designer/zones/__tests__/edit_zone_test.tsx

66 lines
1.9 KiB
TypeScript

let mockPath = "/app/designer/zones/1";
jest.mock("../../../history", () => ({
getPathArray: jest.fn(() => mockPath.split("/")),
history: { push: jest.fn() }
}));
jest.mock("../../../api/crud", () => ({
edit: jest.fn(),
save: jest.fn(),
}));
import * as React from "react";
import { mount, shallow } from "enzyme";
import {
RawEditZone as EditZone, EditZoneProps, mapStateToProps
} from "../edit_zone";
import { fakeState } from "../../../__test_support__/fake_state";
import { fakePointGroup } from "../../../__test_support__/fake_state/resources";
import {
buildResourceIndex
} from "../../../__test_support__/resource_index_builder";
import { save, edit } from "../../../api/crud";
describe("<EditZone />", () => {
const fakeProps = (): EditZoneProps => ({
dispatch: jest.fn(),
findZone: () => undefined,
});
it("redirects", () => {
mockPath = "/app/designer/zones";
const wrapper = mount(<EditZone {...fakeProps()} />);
expect(wrapper.text()).toContain("Redirecting...");
});
it("renders", () => {
mockPath = "/app/designer/zones/1";
const p = fakeProps();
p.findZone = () => fakePointGroup();
const wrapper = mount(<EditZone {...p} />);
expect(wrapper.text().toLowerCase()).toContain("edit");
});
it("changes name", () => {
mockPath = "/app/designer/zones/1";
const p = fakeProps();
const group = fakePointGroup();
p.findZone = () => group;
const wrapper = shallow(<EditZone {...p} />);
wrapper.find("input").first().simulate("blur", {
currentTarget: { value: "new name" }
});
expect(edit).toHaveBeenCalledWith(group, { name: "new name" });
expect(save).toHaveBeenCalledWith(group.uuid);
});
});
describe("mapStateToProps()", () => {
it("returns props", () => {
const state = fakeState();
state.resources = buildResourceIndex([fakePointGroup()]);
const props = mapStateToProps(state);
expect(props.findZone(1)).toEqual(undefined);
});
});