From 46b141e1e2fc90e5e9d83d6908e7300edca83b07 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 22 Dec 2022 14:10:31 -0500 Subject: [PATCH] Remove unnecessary overrides from getDiForUnitTesting Signed-off-by: Sebastian Malton --- ...-message.global-override-for-injectable.ts | 9 ++++ ...sitories.global-override-for-injectable.ts | 9 ++++ src/main/getDiForUnitTesting.ts | 29 +----------- .../get-helm-chart-values.injectable.ts | 2 - .../get-helm-chart-versions.injectable.ts | 2 - .../list-helm-charts.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - ...luster-frame-child-component.injectable.ts | 2 - src/renderer/getDiForUnitTesting.tsx | 45 +------------------ ...luster-frame-child-component.injectable.ts | 2 - 14 files changed, 22 insertions(+), 90 deletions(-) create mode 100644 src/common/ipc/broadcast-message.global-override-for-injectable.ts create mode 100644 src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.global-override-for-injectable.ts diff --git a/src/common/ipc/broadcast-message.global-override-for-injectable.ts b/src/common/ipc/broadcast-message.global-override-for-injectable.ts new file mode 100644 index 0000000000..e455b30cdc --- /dev/null +++ b/src/common/ipc/broadcast-message.global-override-for-injectable.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getGlobalOverrideForFunction } from "../test-utils/get-global-override-for-function"; +import broadcastMessageInjectable from "./broadcast-message.injectable"; + +export default getGlobalOverrideForFunction(broadcastMessageInjectable); diff --git a/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.global-override-for-injectable.ts b/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.global-override-for-injectable.ts new file mode 100644 index 0000000000..0a1304ac2d --- /dev/null +++ b/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.global-override-for-injectable.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getGlobalOverrideForFunction } from "../../../../../../../common/test-utils/get-global-override-for-function"; +import requestPublicHelmRepositoriesInjectable from "./request-public-helm-repositories.injectable"; + +export default getGlobalOverrideForFunction(requestPublicHelmRepositoriesInjectable); diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index f75a6726bf..7cc454045e 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -7,9 +7,6 @@ import { kebabCase, noop, chunk } from "lodash/fp"; import type { DiContainer, Injectable } from "@ogre-tools/injectable"; import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable"; import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; -import writeJsonFileInjectable from "../common/fs/write-json-file.injectable"; -import readJsonFileInjectable from "../common/fs/read-json-file.injectable"; -import readFileInjectable from "../common/fs/read-file.injectable"; import loggerInjectable from "../common/logger.injectable"; import spawnInjectable from "./child-process/spawn.injectable"; import commandLineArgumentsInjectable from "./utils/command-line-arguments.injectable"; @@ -21,7 +18,6 @@ import setupLensProxyInjectable from "./start-main-application/runnables/setup-l import setupShellInjectable from "../features/shell-sync/main/setup-shell.injectable"; import setupSyncingOfWeblinksInjectable from "./start-main-application/runnables/setup-syncing-of-weblinks.injectable"; import stopServicesAndExitAppInjectable from "./stop-services-and-exit-app.injectable"; -import isDevelopmentInjectable from "../common/vars/is-development.injectable"; import setupSystemCaInjectable from "./start-main-application/runnables/setup-system-ca.injectable"; import setupDeepLinkingInjectable from "./electron-app/runnables/setup-deep-linking.injectable"; import exitAppInjectable from "./electron-app/features/exit-app.injectable"; @@ -52,11 +48,7 @@ import setUpdateOnQuitInjectable from "./electron-app/features/set-update-on-qui import startCatalogSyncInjectable from "./catalog-sync-to-renderer/start-catalog-sync.injectable"; import startKubeConfigSyncInjectable from "./start-main-application/runnables/kube-config-sync/start-kube-config-sync.injectable"; import getRandomIdInjectable from "../common/utils/get-random-id.injectable"; -import execFileInjectable from "../common/fs/exec-file.injectable"; import normalizedPlatformArchitectureInjectable from "../common/vars/normalized-platform-architecture.injectable"; -import getHelmChartVersionsInjectable from "./helm/helm-service/get-helm-chart-versions.injectable"; -import getHelmChartValuesInjectable from "./helm/helm-service/get-helm-chart-values.injectable"; -import listHelmChartsInjectable from "./helm/helm-service/list-helm-charts.injectable"; import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import electronInjectable from "./utils/resolve-system-proxy/electron.injectable"; @@ -67,6 +59,7 @@ import addKubeconfigSyncAsEntitySourceInjectable from "./start-main-application/ import type { GlobalOverride } from "../common/test-utils/get-global-override"; import applicationInformationInjectable from "../common/vars/application-information-injectable"; import nodeEnvInjectionToken from "../common/vars/node-env-injection-token"; +import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes"; export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) { const { @@ -119,8 +112,8 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) overrideOperatingSystem(di); overrideRunnablesHavingSideEffects(di); overrideElectronFeatures(di); + getOverrideFsWithFakes()(di); - di.override(isDevelopmentInjectable, () => false); di.override(environmentVariablesInjectable, () => ({})); di.override(commandLineArgumentsInjectable, () => []); @@ -129,16 +122,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) di.override(stopServicesAndExitAppInjectable, () => () => {}); di.override(lensResourcesDirInjectable, () => "/irrelevant"); - overrideFunctionalInjectables(di, [ - getHelmChartVersionsInjectable, - getHelmChartValuesInjectable, - listHelmChartsInjectable, - writeJsonFileInjectable, - readJsonFileInjectable, - readFileInjectable, - execFileInjectable, - ]); - di.override(broadcastMessageInjectable, () => (channel) => { throw new Error(`Tried to broadcast message to channel "${channel}" over IPC without explicit override.`); }); @@ -225,11 +208,3 @@ const overrideElectronFeatures = (di: DiContainer) => { di.override(setElectronAppPathInjectable, () => () => {}); di.override(electronUpdaterIsActiveInjectable, () => false); }; - -const overrideFunctionalInjectables = (di: DiContainer, injectables: Injectable[]) => { - injectables.forEach(injectable => { - di.override(injectable, () => () => { - throw new Error(`Tried to run "${injectable.id}" without explicit override.`); - }); - }); -}; diff --git a/src/main/helm/helm-service/get-helm-chart-values.injectable.ts b/src/main/helm/helm-service/get-helm-chart-values.injectable.ts index 489f8b8521..d131c93b66 100644 --- a/src/main/helm/helm-service/get-helm-chart-values.injectable.ts +++ b/src/main/helm/helm-service/get-helm-chart-values.injectable.ts @@ -24,8 +24,6 @@ const getHelmChartValuesInjectable = getInjectable({ return getChartManager(repo).getValues(chartName, version); }; }, - - causesSideEffects: true, }); export default getHelmChartValuesInjectable; diff --git a/src/main/helm/helm-service/get-helm-chart-versions.injectable.ts b/src/main/helm/helm-service/get-helm-chart-versions.injectable.ts index 8c55ea7921..0eedc25a44 100644 --- a/src/main/helm/helm-service/get-helm-chart-versions.injectable.ts +++ b/src/main/helm/helm-service/get-helm-chart-versions.injectable.ts @@ -24,8 +24,6 @@ const getHelmChartVersionsInjectable = getInjectable({ return getChartManager(repo).chartVersions(chartName); }; }, - - causesSideEffects: true, }); export default getHelmChartVersionsInjectable; diff --git a/src/main/helm/helm-service/list-helm-charts.injectable.ts b/src/main/helm/helm-service/list-helm-charts.injectable.ts index c5be54fd67..93a57e7aff 100644 --- a/src/main/helm/helm-service/list-helm-charts.injectable.ts +++ b/src/main/helm/helm-service/list-helm-charts.injectable.ts @@ -36,8 +36,6 @@ const listHelmChartsInjectable = getInjectable({ ); }; }, - - causesSideEffects: true, }); export default listHelmChartsInjectable; diff --git a/src/renderer/components/+workloads-cronjobs/cron-job-trigger-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/components/+workloads-cronjobs/cron-job-trigger-dialog-cluster-frame-child-component.injectable.ts index 170d8dce84..024515e1b8 100644 --- a/src/renderer/components/+workloads-cronjobs/cron-job-trigger-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/+workloads-cronjobs/cron-job-trigger-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const cronJobTriggerDialogClusterFrameChildComponentInjectable = getInjectable({ }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default cronJobTriggerDialogClusterFrameChildComponentInjectable; diff --git a/src/renderer/components/+workloads-deployments/scale/deployment-scale-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/components/+workloads-deployments/scale/deployment-scale-dialog-cluster-frame-child-component.injectable.ts index 712b5d4321..31a444dba0 100644 --- a/src/renderer/components/+workloads-deployments/scale/deployment-scale-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/+workloads-deployments/scale/deployment-scale-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const deploymentScaleDialogClusterFrameChildComponentInjectable = getInjectable( }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default deploymentScaleDialogClusterFrameChildComponentInjectable; diff --git a/src/renderer/components/+workloads-replicasets/scale-dialog/replicaset-scale-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/components/+workloads-replicasets/scale-dialog/replicaset-scale-dialog-cluster-frame-child-component.injectable.ts index 0dd5790944..a6f2d8c8f5 100644 --- a/src/renderer/components/+workloads-replicasets/scale-dialog/replicaset-scale-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/+workloads-replicasets/scale-dialog/replicaset-scale-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const replicasetScaleDialogClusterFrameChildComponentInjectable = getInjectable( }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default replicasetScaleDialogClusterFrameChildComponentInjectable; diff --git a/src/renderer/components/+workloads-statefulsets/scale/statefulset-scale-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/components/+workloads-statefulsets/scale/statefulset-scale-dialog-cluster-frame-child-component.injectable.ts index ee23dde011..7a8b12686d 100644 --- a/src/renderer/components/+workloads-statefulsets/scale/statefulset-scale-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/+workloads-statefulsets/scale/statefulset-scale-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const statefulsetScaleDialogClusterFrameChildComponentInjectable = getInjectable }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default statefulsetScaleDialogClusterFrameChildComponentInjectable; diff --git a/src/renderer/components/kube-object-details/kube-object-details-cluster-frame-child-component.injectable.ts b/src/renderer/components/kube-object-details/kube-object-details-cluster-frame-child-component.injectable.ts index 4799ff3099..1fcd929325 100644 --- a/src/renderer/components/kube-object-details/kube-object-details-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/kube-object-details/kube-object-details-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const kubeObjectDetailsClusterFrameChildComponentInjectable = getInjectable({ }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default kubeObjectDetailsClusterFrameChildComponentInjectable; diff --git a/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog-cluster-frame-child-component.injectable.ts index 796e13a063..17160edd81 100644 --- a/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const kubeconfigDialogClusterFrameChildComponentInjectable = getInjectable({ }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default kubeconfigDialogClusterFrameChildComponentInjectable; diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx index 2710435cf2..4d0f336f8a 100644 --- a/src/renderer/getDiForUnitTesting.tsx +++ b/src/renderer/getDiForUnitTesting.tsx @@ -4,7 +4,7 @@ */ import { noop, chunk } from "lodash/fp"; -import type { DiContainer, Injectable } from "@ogre-tools/injectable"; +import type { Injectable } from "@ogre-tools/injectable"; import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable"; import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import requestFromChannelInjectable from "./utils/channel/request-from-channel.injectable"; @@ -16,22 +16,13 @@ import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal- import hostedClusterIdInjectable from "./cluster-frame-context/hosted-cluster-id.injectable"; import historyInjectable from "./navigation/history.injectable"; import lensResourcesDirInjectable from "../common/vars/lens-resources-dir.injectable"; -import broadcastMessageInjectable from "../common/ipc/broadcast-message.injectable"; -import { computed, runInAction } from "mobx"; +import { runInAction } from "mobx"; import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable"; import getRandomIdInjectable from "../common/utils/get-random-id.injectable"; -import requestPublicHelmRepositoriesInjectable from "../features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable"; import platformInjectable from "../common/vars/platform.injectable"; import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable"; -import cronJobTriggerDialogClusterFrameChildComponentInjectable from "./components/+workloads-cronjobs/cron-job-trigger-dialog-cluster-frame-child-component.injectable"; -import deploymentScaleDialogClusterFrameChildComponentInjectable from "./components/+workloads-deployments/scale/deployment-scale-dialog-cluster-frame-child-component.injectable"; -import replicasetScaleDialogClusterFrameChildComponentInjectable from "./components/+workloads-replicasets/scale-dialog/replicaset-scale-dialog-cluster-frame-child-component.injectable"; -import statefulsetScaleDialogClusterFrameChildComponentInjectable from "./components/+workloads-statefulsets/scale/statefulset-scale-dialog-cluster-frame-child-component.injectable"; -import kubeObjectDetailsClusterFrameChildComponentInjectable from "./components/kube-object-details/kube-object-details-cluster-frame-child-component.injectable"; -import kubeconfigDialogClusterFrameChildComponentInjectable from "./components/kubeconfig-dialog/kubeconfig-dialog-cluster-frame-child-component.injectable"; -import portForwardDialogClusterFrameChildComponentInjectable from "./port-forward/port-forward-dialog-cluster-frame-child-component.injectable"; import setupSystemCaInjectable from "./frames/root-frame/setup-system-ca.injectable"; import extensionShouldBeEnabledForClusterFrameInjectable from "./extension-loader/extension-should-be-enabled-for-cluster-frame.injectable"; import { asyncComputed } from "@ogre-tools/injectable-react"; @@ -114,33 +105,9 @@ export const getDiForUnitTesting = ( asyncComputed({ getValueFromObservedPromise: async () => true, valueWhenPending: true }), ); - // TODO: Remove side-effects and shared global state - const clusterFrameChildComponentInjectables: Injectable[] = [ - cronJobTriggerDialogClusterFrameChildComponentInjectable, - deploymentScaleDialogClusterFrameChildComponentInjectable, - replicasetScaleDialogClusterFrameChildComponentInjectable, - statefulsetScaleDialogClusterFrameChildComponentInjectable, - kubeObjectDetailsClusterFrameChildComponentInjectable, - kubeconfigDialogClusterFrameChildComponentInjectable, - portForwardDialogClusterFrameChildComponentInjectable, - ]; - - clusterFrameChildComponentInjectables.forEach((injectable) => { - di.override(injectable, () => ({ - Component: () => null, - id: injectable.id, - shouldRender: computed(() => false), - })); - }); - di.override(environmentVariablesInjectable, () => ({})); di.override(watchHistoryStateInjectable, () => () => () => {}); - overrideFunctionalInjectables(di, [ - broadcastMessageInjectable, - requestPublicHelmRepositoriesInjectable, - ]); - di.override(requestFromChannelInjectable, () => () => Promise.resolve(undefined as never)); getOverrideFsWithFakes()(di); @@ -158,11 +125,3 @@ export const getDiForUnitTesting = ( return di; }; - -const overrideFunctionalInjectables = (di: DiContainer, injectables: Injectable[]) => { - injectables.forEach(injectable => { - di.override(injectable, () => () => { - throw new Error(`Tried to run "${injectable.id}" without explicit override.`); - }); - }); -}; diff --git a/src/renderer/port-forward/port-forward-dialog-cluster-frame-child-component.injectable.ts b/src/renderer/port-forward/port-forward-dialog-cluster-frame-child-component.injectable.ts index 01b1ae0f7e..eeee6b6751 100644 --- a/src/renderer/port-forward/port-forward-dialog-cluster-frame-child-component.injectable.ts +++ b/src/renderer/port-forward/port-forward-dialog-cluster-frame-child-component.injectable.ts @@ -17,8 +17,6 @@ const portForwardDialogClusterFrameChildComponentInjectable = getInjectable({ }), injectionToken: clusterFrameChildComponentInjectionToken, - - causesSideEffects: true, }); export default portForwardDialogClusterFrameChildComponentInjectable;