From 938f44fd80afd5e194f1d74f2b08a96f084635dc Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 27 Oct 2021 14:53:06 -0400 Subject: [PATCH] Fix unit tests Signed-off-by: Sebastian Malton --- src/common/__tests__/cluster-store.test.ts | 35 +++++++++--------- src/common/__tests__/hotbar-store.test.ts | 29 ++++++++------- src/common/__tests__/user-store.test.ts | 29 ++++++++------- .../__tests__/extension-discovery.test.ts | 9 ++++- .../__tests__/page-registry.test.ts | 6 +++ src/main/__test__/context-handler.test.ts | 5 +++ src/main/__test__/kube-auth-proxy.test.ts | 37 ++++++++----------- src/main/__test__/kubeconfig-manager.test.ts | 31 ++++++++++++---- src/main/__test__/router.test.ts | 5 +++ .../__test__/kubeconfig-sync.test.ts | 8 +++- .../protocol-handler/__test__/router.test.ts | 5 +++ .../components/+catalog/catalog.test.tsx | 36 ++++++++++-------- .../+extensions/__tests__/extensions.test.tsx | 5 ++- .../__tests__/delete-cluster-dialog.test.tsx | 6 +++ .../dock/__test__/dock-tabs.test.tsx | 7 +++- .../__test__/log-resource-selector.test.tsx | 6 +++ .../dock/__test__/log-tab.store.test.ts | 6 +++ .../__tests__/hotbar-remove-command.test.tsx | 5 +++ 18 files changed, 174 insertions(+), 96 deletions(-) diff --git a/src/common/__tests__/cluster-store.test.ts b/src/common/__tests__/cluster-store.test.ts index 451be4a905..33dd577635 100644 --- a/src/common/__tests__/cluster-store.test.ts +++ b/src/common/__tests__/cluster-store.test.ts @@ -68,23 +68,24 @@ function embed(clusterId: ClusterId, contents: any): string { return absPath; } -jest.mock("electron", () => { - return { - app: { - getVersion: () => "99.99.99", - getPath: () => "tmp", - getLocale: () => "en", - setLoginItemSettings: jest.fn(), - }, - ipcMain: { - handle: jest.fn(), - on: jest.fn(), - removeAllListeners: jest.fn(), - off: jest.fn(), - send: jest.fn(), - } - }; -}); +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + handle: jest.fn(), + on: jest.fn(), + removeAllListeners: jest.fn(), + off: jest.fn(), + send: jest.fn(), + } +})); AppPaths.init(); diff --git a/src/common/__tests__/hotbar-store.test.ts b/src/common/__tests__/hotbar-store.test.ts index 29bfa4ac9e..a5632e06a0 100644 --- a/src/common/__tests__/hotbar-store.test.ts +++ b/src/common/__tests__/hotbar-store.test.ts @@ -117,20 +117,21 @@ const awsCluster = { } }; -jest.mock("electron", () => { - return { - app: { - getVersion: () => "99.99.99", - getPath: () => "tmp", - getLocale: () => "en", - setLoginItemSettings: (): void => void 0, - }, - ipcMain: { - on: jest.fn(), - handle: jest.fn(), - }, - }; -}); +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + on: jest.fn(), + handle: jest.fn(), + }, +})); AppPaths.init(); diff --git a/src/common/__tests__/user-store.test.ts b/src/common/__tests__/user-store.test.ts index 974c787867..adfe5ecf4b 100644 --- a/src/common/__tests__/user-store.test.ts +++ b/src/common/__tests__/user-store.test.ts @@ -21,20 +21,21 @@ import mockFs from "mock-fs"; -jest.mock("electron", () => { - return { - app: { - getVersion: () => "99.99.99", - getPath: () => "tmp", - getLocale: () => "en", - setLoginItemSettings: (): void => void 0, - }, - ipcMain: { - on: jest.fn(), - handle: jest.fn(), - }, - }; -}); +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + on: jest.fn(), + handle: jest.fn(), + }, +})); import { UserStore } from "../user-store"; import { Console } from "console"; diff --git a/src/extensions/__tests__/extension-discovery.test.ts b/src/extensions/__tests__/extension-discovery.test.ts index d4cb5f035e..6975d8a7f2 100644 --- a/src/extensions/__tests__/extension-discovery.test.ts +++ b/src/extensions/__tests__/extension-discovery.test.ts @@ -42,7 +42,12 @@ jest.mock("../extension-installer", () => ({ })); jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: { @@ -51,11 +56,11 @@ jest.mock("electron", () => ({ }, })); +AppPaths.init(); + console = new Console(process.stdout, process.stderr); // fix mockFS const mockedWatch = watch as jest.MockedFunction; -AppPaths.init(); - describe("ExtensionDiscovery", () => { beforeEach(() => { ExtensionDiscovery.resetInstance(); diff --git a/src/extensions/registries/__tests__/page-registry.test.ts b/src/extensions/registries/__tests__/page-registry.test.ts index 2ffdd18c96..7be2fb851c 100644 --- a/src/extensions/registries/__tests__/page-registry.test.ts +++ b/src/extensions/registries/__tests__/page-registry.test.ts @@ -34,7 +34,13 @@ jest.mock("react-monaco-editor", () => null); jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/main/__test__/context-handler.test.ts b/src/main/__test__/context-handler.test.ts index 9c2b291f1b..8c2c49ef44 100644 --- a/src/main/__test__/context-handler.test.ts +++ b/src/main/__test__/context-handler.test.ts @@ -27,7 +27,12 @@ import { AppPaths } from "../../common/app-paths"; jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: { diff --git a/src/main/__test__/kube-auth-proxy.test.ts b/src/main/__test__/kube-auth-proxy.test.ts index b69f36afbb..faeaba0668 100644 --- a/src/main/__test__/kube-auth-proxy.test.ts +++ b/src/main/__test__/kube-auth-proxy.test.ts @@ -44,13 +44,6 @@ jest.mock("winston", () => ({ } })); -jest.mock("electron", () => ({ - app: { - getPath: () => "tmp", - setLoginItemSettings: jest.fn(), - }, -})); - jest.mock("../../common/ipc"); jest.mock("child_process"); jest.mock("tcp-port-used"); @@ -75,21 +68,21 @@ const mockBroadcastIpc = broadcastMessage as jest.MockedFunction; const mockWaitUntilUsed = waitUntilUsed as jest.MockedFunction; -jest.mock("electron", () => { - return { - app: { - getVersion: () => "99.99.99", - getPath: () => "tmp", - getLocale: () => "en", - setLoginItemSettings: (): void => void 0, - }, - ipcMain: { - on: jest.fn(), - handle: jest.fn(), - }, - }; -}); - +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + on: jest.fn(), + handle: jest.fn(), + }, +})); AppPaths.init(); describe("kube auth proxy tests", () => { diff --git a/src/main/__test__/kubeconfig-manager.test.ts b/src/main/__test__/kubeconfig-manager.test.ts index 0d0bab04ad..cfa0deeb51 100644 --- a/src/main/__test__/kubeconfig-manager.test.ts +++ b/src/main/__test__/kubeconfig-manager.test.ts @@ -28,12 +28,6 @@ const logger = { crit: jest.fn(), }; -jest.mock("electron", () => ({ - app: { - getPath: () => `/tmp`, - }, -})); - jest.mock("winston", () => ({ format: { colorize: jest.fn(), @@ -41,7 +35,9 @@ jest.mock("winston", () => ({ simple: jest.fn(), label: jest.fn(), timestamp: jest.fn(), - printf: jest.fn() + padLevels: jest.fn(), + ms: jest.fn(), + printf: jest.fn(), }, createLogger: jest.fn().mockReturnValue(logger), transports: { @@ -58,6 +54,25 @@ import fse from "fs-extra"; import { loadYaml } from "@kubernetes/client-node"; import { Console } from "console"; import * as path from "path"; +import { AppPaths } from "../../common/app-paths"; + +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + on: jest.fn(), + handle: jest.fn(), + }, +})); + +AppPaths.init(); console = new Console(process.stdout, process.stderr); // fix mockFS @@ -111,7 +126,7 @@ describe("kubeconfig manager tests", () => { const kubeConfManager = new KubeconfigManager(cluster, contextHandler); expect(logger.error).not.toBeCalled(); - expect(await kubeConfManager.getPath()).toBe(`${path.sep}tmp${path.sep}kubeconfig-foo`); + expect(await kubeConfManager.getPath()).toBe(`tmp${path.sep}kubeconfig-foo`); // this causes an intermittent "ENXIO: no such device or address, read" error // const file = await fse.readFile(await kubeConfManager.getPath()); const file = fse.readFileSync(await kubeConfManager.getPath()); diff --git a/src/main/__test__/router.test.ts b/src/main/__test__/router.test.ts index 8431dbca1f..102be317eb 100644 --- a/src/main/__test__/router.test.ts +++ b/src/main/__test__/router.test.ts @@ -24,7 +24,12 @@ import { Router } from "../router"; jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: { diff --git a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts index bce7a21440..2e49b09c16 100644 --- a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts +++ b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts @@ -32,7 +32,13 @@ import { AppPaths } from "../../../common/app-paths"; jest.mock("electron", () => ({ app: { - getPath: () => "/foo", + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/main/protocol-handler/__test__/router.test.ts b/src/main/protocol-handler/__test__/router.test.ts index 3b52bcab49..d46036dbf9 100644 --- a/src/main/protocol-handler/__test__/router.test.ts +++ b/src/main/protocol-handler/__test__/router.test.ts @@ -35,7 +35,12 @@ jest.mock("../../../common/ipc"); jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: { diff --git a/src/renderer/components/+catalog/catalog.test.tsx b/src/renderer/components/+catalog/catalog.test.tsx index 3357a7e7f3..47395fb008 100644 --- a/src/renderer/components/+catalog/catalog.test.tsx +++ b/src/renderer/components/+catalog/catalog.test.tsx @@ -31,26 +31,30 @@ import { CatalogEntityRegistry } from "../../../renderer/api/catalog-entity-regi import { CatalogEntityDetailRegistry } from "../../../extensions/registries"; import { CatalogEntityItem } from "./catalog-entity-item"; import { CatalogEntityStore } from "./catalog-entity.store"; +import { AppPaths } from "../../../common/app-paths"; mockWindow(); +jest.mock("electron", () => ({ + app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), + getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), + }, + ipcMain: { + on: jest.fn(), + handle: jest.fn(), + }, +})); -// avoid TypeError: Cannot read property 'getPath' of undefined -jest.mock("@electron/remote", () => { - return { - app: { - getPath: () => { - // avoid TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined - return ""; - }, - }, - }; -}); +AppPaths.init(); -jest.mock("./hotbar-toggle-menu-item", () => { - return { - HotbarToggleMenuItem: () =>
menu item
- }; -}); +jest.mock("./hotbar-toggle-menu-item", () => ({ + HotbarToggleMenuItem: () =>
menu item
+})); class MockCatalogEntity extends CatalogEntity { public apiVersion = "api"; diff --git a/src/renderer/components/+extensions/__tests__/extensions.test.tsx b/src/renderer/components/+extensions/__tests__/extensions.test.tsx index dcf5630f70..08dfb6dc47 100644 --- a/src/renderer/components/+extensions/__tests__/extensions.test.tsx +++ b/src/renderer/components/+extensions/__tests__/extensions.test.tsx @@ -57,9 +57,12 @@ jest.mock("../../../../common/utils/tar"); jest.mock("electron", () => ({ app: { getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", getLocale: () => "en", - setLoginItemSettings: (): void => void 0, + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/renderer/components/delete-cluster-dialog/__tests__/delete-cluster-dialog.test.tsx b/src/renderer/components/delete-cluster-dialog/__tests__/delete-cluster-dialog.test.tsx index 4d55e82914..e175b0449d 100644 --- a/src/renderer/components/delete-cluster-dialog/__tests__/delete-cluster-dialog.test.tsx +++ b/src/renderer/components/delete-cluster-dialog/__tests__/delete-cluster-dialog.test.tsx @@ -31,7 +31,13 @@ import { AppPaths } from "../../../../common/app-paths"; jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/renderer/components/dock/__test__/dock-tabs.test.tsx b/src/renderer/components/dock/__test__/dock-tabs.test.tsx index 972e28f852..d9858ae4b9 100644 --- a/src/renderer/components/dock/__test__/dock-tabs.test.tsx +++ b/src/renderer/components/dock/__test__/dock-tabs.test.tsx @@ -42,14 +42,19 @@ jest.mock("react-monaco-editor", () => ({ jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), handle: jest.fn(), }, })); - AppPaths.init(); const initialTabs: DockTab[] = [ diff --git a/src/renderer/components/dock/__test__/log-resource-selector.test.tsx b/src/renderer/components/dock/__test__/log-resource-selector.test.tsx index eda331fe01..bff6c631e9 100644 --- a/src/renderer/components/dock/__test__/log-resource-selector.test.tsx +++ b/src/renderer/components/dock/__test__/log-resource-selector.test.tsx @@ -37,7 +37,13 @@ jest.mock("react-monaco-editor", () => null); jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/renderer/components/dock/__test__/log-tab.store.test.ts b/src/renderer/components/dock/__test__/log-tab.store.test.ts index b2b24660f2..7e05b75423 100644 --- a/src/renderer/components/dock/__test__/log-tab.store.test.ts +++ b/src/renderer/components/dock/__test__/log-tab.store.test.ts @@ -36,7 +36,13 @@ jest.mock("react-monaco-editor", () => null); jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", + setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), diff --git a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx index 9c95b6e655..2880aa12d6 100644 --- a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx +++ b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx @@ -31,7 +31,12 @@ import { AppPaths } from "../../../../common/app-paths"; jest.mock("electron", () => ({ app: { + getVersion: () => "99.99.99", + getName: () => "lens", + setName: jest.fn(), + setPath: jest.fn(), getPath: () => "tmp", + getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: {