From 00a8b81df47548e5463a0108297b826da498f8e6 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 28 Nov 2022 10:34:00 -0500 Subject: [PATCH] Fix type errors and remove dead code Signed-off-by: Sebastian Malton --- .../kube-api-version-detection.test.ts | 6 ++++-- src/common/k8s-api/__tests__/kube-api.test.ts | 6 ++++-- src/common/vars.ts | 15 -------------- src/jest.setup.ts | 9 +++++---- .../components/input/search-input.tsx | 20 +++++++++++++++---- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/common/k8s-api/__tests__/kube-api-version-detection.test.ts b/src/common/k8s-api/__tests__/kube-api-version-detection.test.ts index eb13464716..ffb466c451 100644 --- a/src/common/k8s-api/__tests__/kube-api-version-detection.test.ts +++ b/src/common/k8s-api/__tests__/kube-api-version-detection.test.ts @@ -8,7 +8,6 @@ import type { ApiManager } from "../api-manager"; import { Ingress, IngressApi } from "../endpoints"; import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting"; import apiManagerInjectable from "../api-manager/manager.injectable"; -import autoRegistrationInjectable from "../api-manager/auto-registration.injectable"; import type { Fetch } from "../../fetch/fetch.injectable"; import fetchInjectable from "../../fetch/fetch.injectable"; import type { AsyncFnMock } from "@async-fn/jest"; @@ -16,6 +15,7 @@ import asyncFn from "@async-fn/jest"; import { flushPromises } from "../../test-utils/flush-promises"; import createKubeJsonApiInjectable from "../create-kube-json-api.injectable"; import type { Response, Headers as NodeFetchHeaders } from "node-fetch"; +import setupAutoRegistrationInjectable from "../../../renderer/before-frame-starts/runnables/setup-auto-registration.injectable"; const createMockResponseFromString = (url: string, data: string, statusCode = 200) => { const res: jest.Mocked = { @@ -60,7 +60,9 @@ describe("KubeApi", () => { }); registerApiSpy = jest.spyOn(di.inject(apiManagerInjectable), "registerApi"); - di.inject(autoRegistrationInjectable); + const setupAutoRegistration = di.inject(setupAutoRegistrationInjectable); + + setupAutoRegistration.run(); }); describe("on first call to IngressApi.get()", () => { diff --git a/src/common/k8s-api/__tests__/kube-api.test.ts b/src/common/k8s-api/__tests__/kube-api.test.ts index 4f67ed1401..dabcc68480 100644 --- a/src/common/k8s-api/__tests__/kube-api.test.ts +++ b/src/common/k8s-api/__tests__/kube-api.test.ts @@ -8,7 +8,6 @@ import type { KubeJsonApi, KubeJsonApiData } from "../kube-json-api"; import { PassThrough } from "stream"; import { Deployment, DeploymentApi, NamespaceApi, Pod, PodApi } from "../endpoints"; import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting"; -import autoRegistrationInjectable from "../api-manager/auto-registration.injectable"; import type { Fetch } from "../../fetch/fetch.injectable"; import fetchInjectable from "../../fetch/fetch.injectable"; import type { CreateKubeApiForRemoteCluster } from "../create-kube-api-for-remote-cluster.injectable"; @@ -21,6 +20,7 @@ import type { IKubeWatchEvent } from "../kube-watch-event"; import type { KubeJsonApiDataFor } from "../kube-object"; import type { Response, Headers as NodeFetchHeaders } from "node-fetch"; import AbortController from "abort-controller"; +import setupAutoRegistrationInjectable from "../../../renderer/before-frame-starts/runnables/setup-auto-registration.injectable"; const createMockResponseFromString = (url: string, data: string, statusCode = 200) => { const res: jest.Mocked = { @@ -184,7 +184,9 @@ describe("KubeApi", () => { apiBase: "/api-kube", }); - di.inject(autoRegistrationInjectable); + const setupAutoRegistration = di.inject(setupAutoRegistrationInjectable); + + setupAutoRegistration.run(); }); describe("patching deployments", () => { diff --git a/src/common/vars.ts b/src/common/vars.ts index dadab42798..d58e0871e6 100644 --- a/src/common/vars.ts +++ b/src/common/vars.ts @@ -6,21 +6,6 @@ // App's common configuration for any process (main, renderer, build pipeline, etc.) import type { ThemeId } from "../renderer/themes/lens-theme"; -/** - * @deprecated Switch to using isWindowsInjectable - */ -export const isWindows = process.platform === "win32"; - -/** - * @deprecated Switch to using isLinuxInjectable - */ -export const isLinux = process.platform === "linux"; - -/** - * @deprecated switch to using `isDebuggingInjectable` - */ -export const isDebugging = ["true", "1", "yes", "y", "on"].includes((process.env.DEBUG ?? "").toLowerCase()); - /** * @deprecated Switch to using isTestEnvInjectable */ diff --git a/src/jest.setup.ts b/src/jest.setup.ts index b0acfba878..1e7d0a8ce3 100644 --- a/src/jest.setup.ts +++ b/src/jest.setup.ts @@ -3,22 +3,23 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import configurePackages from "./common/configure-packages"; import { configure } from "mobx"; import { setImmediate } from "timers"; import { TextEncoder, TextDecoder as TextDecoderNode } from "util"; import glob from "glob"; import path from "path"; - -// setup default configuration for external npm-packages -configurePackages(); +import { enableMapSet, setAutoFreeze } from "immer"; configure({ // Needed because we want to use jest.spyOn() // ref https://github.com/mobxjs/mobx/issues/2784 safeDescriptors: false, + enforceActions: "never", }); +setAutoFreeze(false); // allow to merge mobx observables +enableMapSet(); // allow to merge maps and sets + // Mock __non_webpack_require__ for tests globalThis.__non_webpack_require__ = jest.fn(); diff --git a/src/renderer/components/input/search-input.tsx b/src/renderer/components/input/search-input.tsx index 1c5a66bdc2..1d13794d8a 100644 --- a/src/renderer/components/input/search-input.tsx +++ b/src/renderer/components/input/search-input.tsx @@ -11,7 +11,8 @@ import { cssNames, autoBind } from "../../utils"; import { Icon } from "../icon"; import type { InputProps } from "./input"; import { Input } from "./input"; -import { isMac } from "../../../common/vars"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import isMacInjectable from "../../../common/vars/is-mac.injectable"; export interface SearchInputProps extends InputProps { compact?: boolean; // show only search-icon when not focused @@ -27,13 +28,17 @@ const defaultProps: Partial = { placeholder: "Search...", }; +interface Dependencies { + isMac: boolean; +} + @observer -export class SearchInput extends React.Component { +class NonInjectedSearchInput extends React.Component { static defaultProps = defaultProps as object; private inputRef = createRef(); - constructor(props: SearchInputProps) { + constructor(props: SearchInputProps & Dependencies) { super(props); autoBind(this); } @@ -48,7 +53,7 @@ export class SearchInput extends React.Component { } onGlobalKey(evt: KeyboardEvent) { - if (evt.key === "f" && (isMac ? evt.metaKey : evt.ctrlKey)) { + if (evt.key === "f" && (this.props.isMac ? evt.metaKey : evt.ctrlKey)) { this.inputRef.current?.focus(); } } @@ -97,3 +102,10 @@ export class SearchInput extends React.Component { ); } } + +export const SearchInput = withInjectables(NonInjectedSearchInput, { + getProps: (di, props) => ({ + ...props, + isMac: di.inject(isMacInjectable), + }), +});