diff --git a/src/renderer/components/layout/__tests__/topbar.test.tsx b/src/renderer/components/layout/__tests__/topbar.test.tsx
index a8e69ed302..499a52bc66 100644
--- a/src/renderer/components/layout/__tests__/topbar.test.tsx
+++ b/src/renderer/components/layout/__tests__/topbar.test.tsx
@@ -20,11 +20,46 @@
*/
import React from "react";
-import { render } from "@testing-library/react";
+import { render, fireEvent } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";
import { TopBar } from "../topbar";
import { TopBarRegistry } from "../../../../extensions/registries";
+jest.mock(
+ "electron",
+ () => ({
+ ipcRenderer: {
+ on: jest.fn(
+ (channel: string, listener: (event: any, ...args: any[]) => void) => {
+ if (channel === "history:can-go-back") {
+ listener({}, true);
+ }
+
+ if (channel === "history:can-go-forward") {
+ listener({}, true);
+ }
+ }
+ ),
+ },
+ })
+);
+
+const goBack = jest.fn();
+const goForward = jest.fn();
+
+jest.mock("@electron/remote", () => {
+ return {
+ webContents: {
+ getFocusedWebContents: () => {
+ return {
+ goBack,
+ goForward
+ };
+ }
+ }
+ };
+});
+
describe("", () => {
beforeEach(() => {
TopBarRegistry.createInstance();
@@ -35,15 +70,38 @@ describe("", () => {
});
it("renders w/o errors", () => {
- const { container } = render();
+ const { container } = render();
expect(container).toBeInstanceOf(HTMLElement);
});
- it("renders title", async () => {
- const { getByTestId } = render();
+ it("renders history arrows", async () => {
+ const { getByTestId } = render();
- expect(await getByTestId("topbarLabel")).toHaveTextContent("topbar");
+ expect(await getByTestId("history-back")).toBeInTheDocument();
+ expect(await getByTestId("history-forward")).toBeInTheDocument();
+ });
+
+ it("enables arrow by ipc event", async () => {
+ const { getByTestId } = render();
+
+ expect(await getByTestId("history-back")).not.toHaveClass("disabled");
+ expect(await getByTestId("history-forward")).not.toHaveClass("disabled");
+ });
+
+ it("triggers browser history back and forward", async () => {
+ const { getByTestId } = render();
+
+ const prevButton = await getByTestId("history-back");
+ const nextButton = await getByTestId("history-forward");
+
+ fireEvent.click(prevButton);
+
+ expect(goBack).toBeCalled();
+
+ fireEvent.click(nextButton);
+
+ expect(goForward).toBeCalled();
});
it("renders items", async () => {
@@ -58,7 +116,7 @@ describe("", () => {
}
]);
- const { getByTestId } = render();
+ const { getByTestId } = render();
expect(await getByTestId(testId)).toHaveTextContent(text);
});
diff --git a/src/renderer/components/layout/topbar.tsx b/src/renderer/components/layout/topbar.tsx
index 8fb5aba39c..0456951532 100644
--- a/src/renderer/components/layout/topbar.tsx
+++ b/src/renderer/components/layout/topbar.tsx
@@ -85,8 +85,20 @@ export const TopBar = observer(({ children, ...rest }: Props) => {
return (
-
-
+
+
{renderRegisteredItems()}