import React from "react"; import { Provider } from "mobx-react"; import { mount } from "enzyme"; import { MockAlertGroup, MockAlert } from "__mocks__/Alerts.js"; import { AlertStore } from "Stores/AlertStore"; import { SilenceFormStore } from "Stores/SilenceFormStore"; import { AlertMenu, MenuContent } from "./AlertMenu"; let alertStore; let silenceFormStore; let alert; let group; beforeEach(() => { alertStore = new AlertStore([]); silenceFormStore = new SilenceFormStore(); alert = MockAlert([], { foo: "bar" }, "active"); group = MockAlertGroup({ alertname: "Fake Alert" }, [alert], [], {}, {}); }); const MockAfterClick = jest.fn(); const MountedAlertMenu = group => { return mount( ).find("AlertMenu"); }; describe("", () => { it("is collapsed by default", () => { const tree = MountedAlertMenu(group); expect(tree.instance().collapse.value).toBe(true); }); it("clicking toggle sets collapse value to 'false'", () => { const tree = MountedAlertMenu(group); const toggle = tree.find(".cursor-pointer"); toggle.simulate("click"); expect(tree.instance().collapse.value).toBe(false); }); it("handleClickOutside() call sets collapse value to 'true'", () => { const tree = MountedAlertMenu(group); const toggle = tree.find(".cursor-pointer"); toggle.simulate("click"); expect(tree.instance().collapse.value).toBe(false); tree.instance().handleClickOutside(); expect(tree.instance().collapse.value).toBe(true); }); }); const MountedMenuContent = group => { return mount( ); }; describe("", () => { it("clicking on 'Silence' icon opens the silence form modal", () => { const tree = MountedMenuContent(group); const button = tree.find(".dropdown-item").at(1); button.simulate("click"); expect(silenceFormStore.toggle.visible).toBe(true); }); it("source link points at alert source", () => { const tree = MountedMenuContent(group); const link = tree.find("a.dropdown-item[href='localhost/prometheus']"); expect(link.text()).toBe("default"); }); });