let mockPath = "/app/designer/plants"; jest.mock("../../../../../history", () => ({ getPathArray: jest.fn(() => mockPath.split("/")) })); import * as React from "react"; import { PlantLayer } from "../plant_layer"; import { fakePlant, fakePlantTemplate, } from "../../../../../__test_support__/fake_state/resources"; import { PlantLayerProps } from "../../../interfaces"; import { fakeMapTransformProps, } from "../../../../../__test_support__/map_transform_props"; import { svgMount } from "../../../../../__test_support__/svg_mount"; import { shallow } from "enzyme"; import { GardenPlant } from "../garden_plant"; describe("", () => { const fakeProps = (): PlantLayerProps => ({ visible: true, plants: [fakePlant()], mapTransformProps: fakeMapTransformProps(), currentPlant: undefined, dragging: false, editing: false, boxSelected: undefined, groupSelected: [], dispatch: jest.fn(), zoomLvl: 1, activeDragXY: { x: undefined, y: undefined, z: undefined }, animate: true, hoveredPlant: undefined, interactions: true, }); it("shows plants", () => { const p = fakeProps(); const wrapper = svgMount(); const layer = wrapper.find("#plant-layer"); expect(layer.find(".plant-link-wrapper").length).toEqual(2); ["soil-cloud", "plant-icon", "image visibility=\"visible\"", "/app-resources/img/generic-plant.svg", "height=\"50\" width=\"50\" x=\"75\" y=\"175\"", "drag-helpers", "plant-icon", ].map(string => expect(layer.html()).toContain(string)); }); it("toggles visibility off", () => { const p = fakeProps(); p.visible = false; const wrapper = svgMount(); expect(wrapper.html()).toEqual(""); }); it("is in clickable mode", () => { mockPath = "/app/designer/plants"; const p = fakeProps(); p.interactions = true; p.plants[0].body.id = 1; const wrapper = svgMount(); expect(wrapper.find("Link").props().style).toEqual({ cursor: "pointer" }); }); it("is in non-clickable mode", () => { mockPath = "/app/designer/plants/crop_search/mint/add"; const p = fakeProps(); p.interactions = false; p.plants[0].body.id = 1; const wrapper = svgMount(); expect(wrapper.find("Link").props().style) .toEqual({ pointerEvents: "none" }); }); it("has link to plant", () => { mockPath = "/app/designer/plants"; const p = fakeProps(); p.plants[0].body.id = 5; const wrapper = svgMount(); expect(wrapper.find("Link").props().to) .toEqual("/app/designer/plants/5"); }); it("has link to plant template", () => { mockPath = "/app/designer/plants"; const p = fakeProps(); p.plants = [fakePlantTemplate()]; p.plants[0].body.id = 5; const wrapper = svgMount(); expect(wrapper.find("Link").props().to) .toEqual("/app/designer/gardens/templates/5"); }); it("has hovered plant", () => { mockPath = "/app/designer/plants"; const p = fakeProps(); const plant = fakePlant(); p.plants = [plant]; p.hoveredPlant = plant; const wrapper = shallow(); expect(wrapper.find(GardenPlant).props().hovered).toEqual(true); }); it("has plant selected by selection box", () => { mockPath = "/app/designer/plants"; const p = fakeProps(); const plant = fakePlant(); p.plants = [plant]; p.boxSelected = [plant.uuid]; const wrapper = svgMount(); expect(wrapper.find("GardenPlant").props().selected).toEqual(true); }); it("doesn't allow clicking of unsaved plants", () => { const p = fakeProps(); p.interactions = false; p.plants[0].body.id = 0; const wrapper = svgMount(); expect(wrapper.find("Link").props().style) .toEqual({ pointerEvents: "none" }); }); it("wraps the component in (instead of ", () => { mockPath = "/app/designer/groups/15"; const p = fakeProps(); const wrapper = svgMount(); expect(wrapper.find("a").length).toBe(0); expect(wrapper.find("g").length).toBeGreaterThan(0); }); });