diff --git a/ui/src/Components/MainModal/index.js b/ui/src/Components/MainModal/index.js
index af98d9d11..dbe27f815 100644
--- a/ui/src/Components/MainModal/index.js
+++ b/ui/src/Components/MainModal/index.js
@@ -9,6 +9,7 @@ import { faCog } from "@fortawesome/free-solid-svg-icons/faCog";
import { AlertStore } from "Stores/AlertStore";
import { Settings } from "Stores/Settings";
+import { MountFade } from "Components/Animations/MountFade";
import { MainModalContent } from "./MainModalContent";
const MainModal = observer(
@@ -49,13 +50,13 @@ const MainModal = observer(
- {this.toggle.show ? (
+
- ) : null}
+
);
}
diff --git a/ui/src/Components/MainModal/index.test.js b/ui/src/Components/MainModal/index.test.js
index fc0a699d6..daed8ce4c 100644
--- a/ui/src/Components/MainModal/index.test.js
+++ b/ui/src/Components/MainModal/index.test.js
@@ -1,6 +1,6 @@
import React from "react";
-import { shallow, mount } from "enzyme";
+import { mount } from "enzyme";
import { AlertStore } from "Stores/AlertStore";
import { Settings } from "Stores/Settings";
@@ -9,17 +9,15 @@ import { MainModal } from ".";
let alertStore;
let settingsStore;
+beforeAll(() => {
+ jest.useFakeTimers();
+});
+
beforeEach(() => {
alertStore = new AlertStore([]);
settingsStore = new Settings();
});
-const ShallowMainModal = () => {
- return shallow(
-
- );
-};
-
const MountedMainModal = () => {
return mount(
@@ -28,33 +26,46 @@ const MountedMainModal = () => {
describe("", () => {
it("only renders FontAwesomeIcon when modal is not shown", () => {
- const tree = ShallowMainModal();
- expect(tree.text()).toBe("");
+ const tree = MountedMainModal();
+ expect(tree.find("FontAwesomeIcon")).toHaveLength(1);
+ expect(tree.find("MainModalContent")).toHaveLength(0);
});
it("renders the modal when it is shown", () => {
- const tree = ShallowMainModal();
+ const tree = MountedMainModal();
const toggle = tree.find(".nav-link");
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ expect(tree.find("FontAwesomeIcon")).not.toHaveLength(0);
+ expect(tree.find("MainModalContent")).toHaveLength(1);
});
it("hides the modal when toggle() is called twice", () => {
- const tree = ShallowMainModal();
+ const tree = MountedMainModal();
const toggle = tree.find(".nav-link");
+
toggle.simulate("click");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("MainModalContent")).toHaveLength(1);
+
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("MainModalContent")).toHaveLength(0);
});
it("hides the modal when hide() is called", () => {
- const tree = ShallowMainModal();
+ const tree = MountedMainModal();
const toggle = tree.find(".nav-link");
+
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ expect(tree.find("MainModalContent")).toHaveLength(1);
+
const instance = tree.instance();
instance.toggle.hide();
- expect(tree.text()).toBe("");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("MainModalContent")).toHaveLength(0);
});
it("'modal-open' class is appended to body node when modal is visible", () => {
diff --git a/ui/src/Components/SilenceModal/index.js b/ui/src/Components/SilenceModal/index.js
index 5ada556d4..b1f8b43d3 100644
--- a/ui/src/Components/SilenceModal/index.js
+++ b/ui/src/Components/SilenceModal/index.js
@@ -6,6 +6,7 @@ import { observer } from "mobx-react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faBellSlash } from "@fortawesome/free-solid-svg-icons/faBellSlash";
+import { MountFade } from "Components/Animations/MountFade";
import { SilenceModalContent } from "./SilenceModalContent";
import "./index.css";
@@ -53,14 +54,14 @@ const SilenceModal = observer(
- {silenceFormStore.toggle.visible ? (
+
- ) : null}
+
);
}
diff --git a/ui/src/Components/SilenceModal/index.test.js b/ui/src/Components/SilenceModal/index.test.js
index b1aa3d359..5205a0a67 100644
--- a/ui/src/Components/SilenceModal/index.test.js
+++ b/ui/src/Components/SilenceModal/index.test.js
@@ -1,6 +1,6 @@
import React from "react";
-import { shallow, mount } from "enzyme";
+import { mount } from "enzyme";
import { AlertStore } from "Stores/AlertStore";
import { Settings } from "Stores/Settings";
@@ -12,6 +12,7 @@ let settingsStore;
let silenceFormStore;
beforeAll(() => {
+ jest.useFakeTimers();
fetch.mockResponse(JSON.stringify([]));
});
@@ -21,16 +22,6 @@ beforeEach(() => {
silenceFormStore = new SilenceFormStore();
});
-const ShallowSilenceModal = () => {
- return shallow(
-
- );
-};
-
const MountedSilenceModal = () => {
return mount(
{
describe("", () => {
it("only renders FontAwesomeIcon when modal is not shown", () => {
- const tree = ShallowSilenceModal();
- expect(tree.text()).toBe("");
+ const tree = MountedSilenceModal();
+ expect(tree.find("FontAwesomeIcon")).toHaveLength(1);
+ expect(tree.find("SilenceModalContent")).toHaveLength(0);
});
it("renders the modal when it is shown", () => {
- const tree = ShallowSilenceModal();
+ const tree = MountedSilenceModal();
const toggle = tree.find(".nav-link");
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ expect(tree.find("FontAwesomeIcon")).not.toHaveLength(0);
+ expect(tree.find("SilenceModalContent")).toHaveLength(1);
});
it("hides the modal when toggle() is called twice", () => {
- const tree = ShallowSilenceModal();
+ const tree = MountedSilenceModal();
const toggle = tree.find(".nav-link");
+
toggle.simulate("click");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("SilenceModalContent")).toHaveLength(1);
+
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("SilenceModalContent")).toHaveLength(0);
});
it("hides the modal when hide() is called", () => {
- const tree = ShallowSilenceModal();
+ const tree = MountedSilenceModal();
const toggle = tree.find(".nav-link");
+
toggle.simulate("click");
- expect(tree.text()).toBe("");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("SilenceModalContent")).toHaveLength(1);
+
silenceFormStore.toggle.hide();
- expect(tree.text()).toBe("");
+ jest.runOnlyPendingTimers();
+ tree.update();
+ expect(tree.find("SilenceModalContent")).toHaveLength(0);
});
it("'modal-open' class is appended to body node when modal is visible", () => {