diff --git a/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx b/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx
deleted file mode 100644
index 7f606a31be..0000000000
--- a/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Copyright (c) OpenLens Authors. All rights reserved.
- * Licensed under MIT License. See LICENSE in root directory for more information.
- */
-
-import React from "react";
-import { fireEvent } from "@testing-library/react";
-import "@testing-library/jest-dom/extend-expect";
-import { TopBar } from "./top-bar";
-import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
-import type { DiRender } from "../../test-utils/renderFor";
-import { renderFor } from "../../test-utils/renderFor";
-import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
-import mockFs from "mock-fs";
-import { emitOpenAppMenuAsContextMenu, requestWindowAction } from "../../../ipc";
-import isLinuxInjectable from "../../../../common/vars/is-linux.injectable";
-import isMacInjectable from "../../../../common/vars/is-mac.injectable";
-import isWindowsInjectable from "../../../../common/vars/is-windows.injectable";
-import type { DiContainer } from "@ogre-tools/injectable";
-
-jest.mock("../../../../common/ipc");
-jest.mock("../../../ipc");
-
-describe(" in Windows and Linux", () => {
- let render: DiRender;
- let di: DiContainer;
-
- beforeEach(() => {
- di = getDiForUnitTesting({ doGeneralOverrides: true });
-
- di.override(isMacInjectable, () => false);
-
- di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
-
- mockFs();
-
- render = renderFor(di);
- });
-
- afterEach(() => {
- mockFs.restore();
- });
-
- it("shows window controls on Windows", () => {
- di.override(isWindowsInjectable, () => true);
-
- const { getByTestId } = render();
-
- expect(getByTestId("window-menu")).toBeInTheDocument();
- expect(getByTestId("window-minimize")).toBeInTheDocument();
- expect(getByTestId("window-maximize")).toBeInTheDocument();
- expect(getByTestId("window-close")).toBeInTheDocument();
- });
-
- it("shows window controls on Linux", () => {
- di.override(isLinuxInjectable, () => true);
-
- const { getByTestId } = render();
-
- expect(getByTestId("window-menu")).toBeInTheDocument();
- expect(getByTestId("window-minimize")).toBeInTheDocument();
- expect(getByTestId("window-maximize")).toBeInTheDocument();
- expect(getByTestId("window-close")).toBeInTheDocument();
- });
-
- it("triggers ipc events on click", () => {
- di.override(isWindowsInjectable, () => true);
-
- const { getByTestId } = render();
-
- const menu = getByTestId("window-menu");
- const minimize = getByTestId("window-minimize");
- const maximize = getByTestId("window-maximize");
- const close = getByTestId("window-close");
-
- fireEvent.click(menu);
- expect(emitOpenAppMenuAsContextMenu).toHaveBeenCalledWith();
-
- fireEvent.click(minimize);
- expect(requestWindowAction).toHaveBeenCalledWith("minimize");
-
- fireEvent.click(maximize);
- expect(requestWindowAction).toHaveBeenCalledWith("toggle-maximize");
-
- fireEvent.click(close);
- expect(requestWindowAction).toHaveBeenCalledWith("close");
- });
-});
diff --git a/src/renderer/components/layout/top-bar/top-bar.test.tsx b/src/renderer/components/layout/top-bar/top-bar.test.tsx
index 2a8ce964a1..a32529cb91 100644
--- a/src/renderer/components/layout/top-bar/top-bar.test.tsx
+++ b/src/renderer/components/layout/top-bar/top-bar.test.tsx
@@ -13,8 +13,6 @@ import type { DiRender } from "../../test-utils/renderFor";
import { renderFor } from "../../test-utils/renderFor";
import topBarItemsInjectable from "./top-bar-items/top-bar-items.injectable";
import { computed, observable } from "mobx";
-import isLinuxInjectable from "../../../../common/vars/is-linux.injectable";
-import isWindowsInjectable from "../../../../common/vars/is-windows.injectable";
import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
import closeWindowInjectable from "./close-window.injectable";
import goBackInjectable from "./go-back.injectable";
@@ -23,23 +21,28 @@ import maximizeWindowInjectable from "./maximize-window.injectable";
import openAppContextMenuInjectable from "./open-app-context-menu.injectable";
import toggleMaximizeWindowInjectable from "./toggle-maximize-window.injectable";
import topBarStateInjectable from "./state.injectable";
+import platformInjectable from "../../../../common/vars/platform.injectable";
describe("", () => {
let di: DiContainer;
let render: DiRender;
let goBack: jest.MockedFunction<() => void>;
let goForward: jest.MockedFunction<() => void>;
+ let openAppContextMenu: jest.MockedFunction<() => void>;
+ let closeWindow: jest.MockedFunction<() => void>;
+ let maximizeWindow: jest.MockedFunction<() => void>;
+ let toggleMaximizeWindow: jest.MockedFunction<() => void>;
beforeEach(() => {
di = getDiForUnitTesting({ doGeneralOverrides: true });
di.override(rendererExtensionsInjectable, () => computed(() => []));
- di.override(openAppContextMenuInjectable, () => jest.fn());
+ di.override(openAppContextMenuInjectable, () => openAppContextMenu = jest.fn());
di.override(goBackInjectable, () => goBack = jest.fn());
di.override(goForwardInjectable, () => goForward = jest.fn());
- di.override(closeWindowInjectable, () => jest.fn());
- di.override(maximizeWindowInjectable, () => jest.fn());
- di.override(toggleMaximizeWindowInjectable, () => jest.fn());
+ di.override(closeWindowInjectable, () => closeWindow = jest.fn());
+ di.override(maximizeWindowInjectable, () => maximizeWindow = jest.fn());
+ di.override(toggleMaximizeWindowInjectable, () => toggleMaximizeWindow = jest.fn());
render = renderFor(di);
});
@@ -109,28 +112,91 @@ describe("", () => {
expect(await findByTestId(testId)).toHaveTextContent(text);
});
- it("doesn't show windows title buttons on macos", () => {
- di.override(isLinuxInjectable, () => false);
- di.override(isWindowsInjectable, () => false);
+ describe("on macos", () => {
+ beforeEach(() => {
+ di.override(platformInjectable, () => "darwin");
+ });
- const { queryByTestId } = render();
+ it("doesn't show windows title", () => {
+ const { queryByTestId } = render();
- expect(queryByTestId("window-menu")).not.toBeInTheDocument();
- expect(queryByTestId("window-minimize")).not.toBeInTheDocument();
- expect(queryByTestId("window-maximize")).not.toBeInTheDocument();
- expect(queryByTestId("window-close")).not.toBeInTheDocument();
+ expect(queryByTestId("window-menu")).not.toBeInTheDocument();
+ expect(queryByTestId("window-minimize")).not.toBeInTheDocument();
+ expect(queryByTestId("window-maximize")).not.toBeInTheDocument();
+ expect(queryByTestId("window-close")).not.toBeInTheDocument();
+ });
});
- it("does show windows title buttons on linux", () => {
- di.override(isLinuxInjectable, () => true);
- di.override(isWindowsInjectable, () => false);
+ describe("on linux", () => {
+ beforeEach(() => {
+ di.override(platformInjectable, () => "linux");
+ });
- const { queryByTestId } = render();
+ it("does show windows title buttons", () => {
+ const { queryByTestId } = render();
- expect(queryByTestId("window-menu")).toBeInTheDocument();
- expect(queryByTestId("window-minimize")).toBeInTheDocument();
- expect(queryByTestId("window-maximize")).toBeInTheDocument();
- expect(queryByTestId("window-close")).toBeInTheDocument();
+ expect(queryByTestId("window-menu")).toBeInTheDocument();
+ expect(queryByTestId("window-minimize")).toBeInTheDocument();
+ expect(queryByTestId("window-maximize")).toBeInTheDocument();
+ expect(queryByTestId("window-close")).toBeInTheDocument();
+ });
+
+ it("triggers ipc events on click", () => {
+ const { getByTestId } = render();
+
+ const menu = getByTestId("window-menu");
+ const minimize = getByTestId("window-minimize");
+ const maximize = getByTestId("window-maximize");
+ const close = getByTestId("window-close");
+
+ fireEvent.click(menu);
+ expect(openAppContextMenu).toBeCalled();
+
+ fireEvent.click(minimize);
+ expect(maximizeWindow).toBeCalled();
+
+ fireEvent.click(maximize);
+ expect(toggleMaximizeWindow).toBeCalled();
+
+ fireEvent.click(close);
+ expect(closeWindow).toBeCalled();
+ });
+ });
+
+ describe("on windows", () => {
+ beforeEach(() => {
+ di.override(platformInjectable, () => "win32");
+ });
+
+ it("does show windows title buttons", () => {
+ const { queryByTestId } = render();
+
+ expect(queryByTestId("window-menu")).toBeInTheDocument();
+ expect(queryByTestId("window-minimize")).toBeInTheDocument();
+ expect(queryByTestId("window-maximize")).toBeInTheDocument();
+ expect(queryByTestId("window-close")).toBeInTheDocument();
+ });
+
+ it("triggers ipc events on click", () => {
+ const { getByTestId } = render();
+
+ const menu = getByTestId("window-menu");
+ const minimize = getByTestId("window-minimize");
+ const maximize = getByTestId("window-maximize");
+ const close = getByTestId("window-close");
+
+ fireEvent.click(menu);
+ expect(openAppContextMenu).toBeCalled();
+
+ fireEvent.click(minimize);
+ expect(maximizeWindow).toBeCalled();
+
+ fireEvent.click(maximize);
+ expect(toggleMaximizeWindow).toBeCalled();
+
+ fireEvent.click(close);
+ expect(closeWindow).toBeCalled();
+ });
});
});
});
diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx
index e42ccdaced..c58511d2bc 100644
--- a/src/renderer/getDiForUnitTesting.tsx
+++ b/src/renderer/getDiForUnitTesting.tsx
@@ -26,9 +26,6 @@ import type { ClusterStore } from "../common/cluster-store/cluster-store";
import type { Cluster } from "../common/cluster/cluster";
import userStoreInjectable from "../common/user-store/user-store.injectable";
import type { UserStore } from "../common/user-store";
-import isMacInjectable from "../common/vars/is-mac.injectable";
-import isWindowsInjectable from "../common/vars/is-windows.injectable";
-import isLinuxInjectable from "../common/vars/is-linux.injectable";
import getAbsolutePathInjectable from "../common/path/get-absolute-path.injectable";
import { getAbsolutePathFake } from "../common/test-utils/get-absolute-path-fake";
import joinPathsInjectable from "../common/path/join-paths.injectable";
@@ -52,6 +49,7 @@ import requestAnimationFrameInjectable from "./components/animate/request-animat
import getRandomIdInjectable from "../common/utils/get-random-id.injectable";
import getFilePathsInjectable from "./components/+preferences/kubernetes/helm-charts/adding-of-custom-helm-repository/helm-file-input/get-file-paths.injectable";
import callForPublicHelmRepositoriesInjectable from "./components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable";
+import platformInjectable from "../common/vars/platform.injectable";
export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {}) => {
const {
@@ -75,9 +73,7 @@ export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {})
if (doGeneralOverrides) {
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
- di.override(isMacInjectable, () => true);
- di.override(isWindowsInjectable, () => false);
- di.override(isLinuxInjectable, () => false);
+ di.override(platformInjectable, () => "darwin");
di.override(terminalSpawningPoolInjectable, () => document.createElement("div"));
di.override(hostedClusterIdInjectable, () => undefined);