jest.mock("../../config_storage/actions", () => ({ getWebAppConfigValue: jest.fn(x => { x(); return jest.fn(() => true); }), setWebAppConfigValue: jest.fn(), })); import * as React from "react"; import { mount, ReactWrapper } from "enzyme"; import { RawDesignerSettings as DesignerSettings, DesignerSettingsProps, mapStateToProps, } from "../settings"; import { fakeState } from "../../__test_support__/fake_state"; import { BooleanSetting, NumericSetting } from "../../session_keys"; import { setWebAppConfigValue } from "../../config_storage/actions"; const getSetting = (wrapper: ReactWrapper, position: number, containsString: string) => { const setting = wrapper.find(".designer-setting").at(position); expect(setting.text().toLowerCase()) .toContain(containsString.toLowerCase()); return setting; }; describe("", () => { const fakeProps = (): DesignerSettingsProps => ({ dispatch: jest.fn(), getConfigValue: jest.fn(), }); it("renders settings", () => { const wrapper = mount(); expect(wrapper.text()).toContain("size"); const settings = wrapper.find(".designer-setting"); expect(settings.length).toEqual(7); }); it("renders defaultOn setting", () => { const p = fakeProps(); p.getConfigValue = () => undefined; const wrapper = mount(); const confirmDeletion = getSetting(wrapper, 6, "confirm plant"); expect(confirmDeletion.find("button").text()).toEqual("on"); }); it("toggles setting", () => { const wrapper = mount(); const trailSetting = getSetting(wrapper, 1, "trail"); trailSetting.find("button").simulate("click"); expect(setWebAppConfigValue) .toHaveBeenCalledWith(BooleanSetting.display_trail, true); }); it("changes origin", () => { const p = fakeProps(); p.getConfigValue = () => 2; const wrapper = mount(); const originSetting = getSetting(wrapper, 5, "origin"); originSetting.find("div").last().simulate("click"); expect(setWebAppConfigValue).toHaveBeenCalledWith( NumericSetting.bot_origin_quadrant, 4); }); }); describe("mapStateToProps()", () => { it("returns props", () => { const props = mapStateToProps(fakeState()); const value = props.getConfigValue(BooleanSetting.show_plants); expect(value).toEqual(true); }); });