mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Move all top-bar tests into one file
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
fe14090d66
commit
bd97862ea4
@ -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("<TopBar/> 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(<TopBar />);
|
|
||||||
|
|
||||||
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(<TopBar />);
|
|
||||||
|
|
||||||
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(<TopBar />);
|
|
||||||
|
|
||||||
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");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -13,8 +13,6 @@ import type { DiRender } from "../../test-utils/renderFor";
|
|||||||
import { renderFor } from "../../test-utils/renderFor";
|
import { renderFor } from "../../test-utils/renderFor";
|
||||||
import topBarItemsInjectable from "./top-bar-items/top-bar-items.injectable";
|
import topBarItemsInjectable from "./top-bar-items/top-bar-items.injectable";
|
||||||
import { computed, observable } from "mobx";
|
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 rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
|
||||||
import closeWindowInjectable from "./close-window.injectable";
|
import closeWindowInjectable from "./close-window.injectable";
|
||||||
import goBackInjectable from "./go-back.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 openAppContextMenuInjectable from "./open-app-context-menu.injectable";
|
||||||
import toggleMaximizeWindowInjectable from "./toggle-maximize-window.injectable";
|
import toggleMaximizeWindowInjectable from "./toggle-maximize-window.injectable";
|
||||||
import topBarStateInjectable from "./state.injectable";
|
import topBarStateInjectable from "./state.injectable";
|
||||||
|
import platformInjectable from "../../../../common/vars/platform.injectable";
|
||||||
|
|
||||||
describe("<TopBar/>", () => {
|
describe("<TopBar/>", () => {
|
||||||
let di: DiContainer;
|
let di: DiContainer;
|
||||||
let render: DiRender;
|
let render: DiRender;
|
||||||
let goBack: jest.MockedFunction<() => void>;
|
let goBack: jest.MockedFunction<() => void>;
|
||||||
let goForward: 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(() => {
|
beforeEach(() => {
|
||||||
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
di.override(rendererExtensionsInjectable, () => computed(() => []));
|
di.override(rendererExtensionsInjectable, () => computed(() => []));
|
||||||
di.override(openAppContextMenuInjectable, () => jest.fn());
|
di.override(openAppContextMenuInjectable, () => openAppContextMenu = jest.fn());
|
||||||
di.override(goBackInjectable, () => goBack = jest.fn());
|
di.override(goBackInjectable, () => goBack = jest.fn());
|
||||||
di.override(goForwardInjectable, () => goForward = jest.fn());
|
di.override(goForwardInjectable, () => goForward = jest.fn());
|
||||||
di.override(closeWindowInjectable, () => jest.fn());
|
di.override(closeWindowInjectable, () => closeWindow = jest.fn());
|
||||||
di.override(maximizeWindowInjectable, () => jest.fn());
|
di.override(maximizeWindowInjectable, () => maximizeWindow = jest.fn());
|
||||||
di.override(toggleMaximizeWindowInjectable, () => jest.fn());
|
di.override(toggleMaximizeWindowInjectable, () => toggleMaximizeWindow = jest.fn());
|
||||||
|
|
||||||
render = renderFor(di);
|
render = renderFor(di);
|
||||||
});
|
});
|
||||||
@ -109,10 +112,12 @@ describe("<TopBar/>", () => {
|
|||||||
expect(await findByTestId(testId)).toHaveTextContent(text);
|
expect(await findByTestId(testId)).toHaveTextContent(text);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("doesn't show windows title buttons on macos", () => {
|
describe("on macos", () => {
|
||||||
di.override(isLinuxInjectable, () => false);
|
beforeEach(() => {
|
||||||
di.override(isWindowsInjectable, () => false);
|
di.override(platformInjectable, () => "darwin");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't show windows title", () => {
|
||||||
const { queryByTestId } = render(<TopBar/>);
|
const { queryByTestId } = render(<TopBar/>);
|
||||||
|
|
||||||
expect(queryByTestId("window-menu")).not.toBeInTheDocument();
|
expect(queryByTestId("window-menu")).not.toBeInTheDocument();
|
||||||
@ -120,11 +125,14 @@ describe("<TopBar/>", () => {
|
|||||||
expect(queryByTestId("window-maximize")).not.toBeInTheDocument();
|
expect(queryByTestId("window-maximize")).not.toBeInTheDocument();
|
||||||
expect(queryByTestId("window-close")).not.toBeInTheDocument();
|
expect(queryByTestId("window-close")).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it("does show windows title buttons on linux", () => {
|
describe("on linux", () => {
|
||||||
di.override(isLinuxInjectable, () => true);
|
beforeEach(() => {
|
||||||
di.override(isWindowsInjectable, () => false);
|
di.override(platformInjectable, () => "linux");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does show windows title buttons", () => {
|
||||||
const { queryByTestId } = render(<TopBar/>);
|
const { queryByTestId } = render(<TopBar/>);
|
||||||
|
|
||||||
expect(queryByTestId("window-menu")).toBeInTheDocument();
|
expect(queryByTestId("window-menu")).toBeInTheDocument();
|
||||||
@ -132,5 +140,63 @@ describe("<TopBar/>", () => {
|
|||||||
expect(queryByTestId("window-maximize")).toBeInTheDocument();
|
expect(queryByTestId("window-maximize")).toBeInTheDocument();
|
||||||
expect(queryByTestId("window-close")).toBeInTheDocument();
|
expect(queryByTestId("window-close")).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("triggers ipc events on click", () => {
|
||||||
|
const { getByTestId } = render(<TopBar />);
|
||||||
|
|
||||||
|
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(<TopBar/>);
|
||||||
|
|
||||||
|
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(<TopBar />);
|
||||||
|
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -26,9 +26,6 @@ import type { ClusterStore } from "../common/cluster-store/cluster-store";
|
|||||||
import type { Cluster } from "../common/cluster/cluster";
|
import type { Cluster } from "../common/cluster/cluster";
|
||||||
import userStoreInjectable from "../common/user-store/user-store.injectable";
|
import userStoreInjectable from "../common/user-store/user-store.injectable";
|
||||||
import type { UserStore } from "../common/user-store";
|
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 getAbsolutePathInjectable from "../common/path/get-absolute-path.injectable";
|
||||||
import { getAbsolutePathFake } from "../common/test-utils/get-absolute-path-fake";
|
import { getAbsolutePathFake } from "../common/test-utils/get-absolute-path-fake";
|
||||||
import joinPathsInjectable from "../common/path/join-paths.injectable";
|
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 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 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 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 } = {}) => {
|
export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {}) => {
|
||||||
const {
|
const {
|
||||||
@ -75,9 +73,7 @@ export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {})
|
|||||||
|
|
||||||
if (doGeneralOverrides) {
|
if (doGeneralOverrides) {
|
||||||
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
|
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
|
||||||
di.override(isMacInjectable, () => true);
|
di.override(platformInjectable, () => "darwin");
|
||||||
di.override(isWindowsInjectable, () => false);
|
|
||||||
di.override(isLinuxInjectable, () => false);
|
|
||||||
|
|
||||||
di.override(terminalSpawningPoolInjectable, () => document.createElement("div"));
|
di.override(terminalSpawningPoolInjectable, () => document.createElement("div"));
|
||||||
di.override(hostedClusterIdInjectable, () => undefined);
|
di.override(hostedClusterIdInjectable, () => undefined);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user