From 506b61234f55e0369ca30606beaf83582c29ff9d Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Tue, 7 Jun 2022 14:38:15 +0300 Subject: [PATCH] Add missing global overrides Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen --- ...ion-to-kubernetes-preferences.test.ts.snap | 185 +++++++++--------- ...vigation-to-kubernetes-preferences.test.ts | 13 ++ src/main/getDiForUnitTesting.ts | 56 ++++-- src/main/helm/__tests__/helm-service.test.ts | 28 ++- src/renderer/getDiForUnitTesting.tsx | 28 ++- 5 files changed, 187 insertions(+), 123 deletions(-) diff --git a/src/behaviours/preferences/__snapshots__/navigation-to-kubernetes-preferences.test.ts.snap b/src/behaviours/preferences/__snapshots__/navigation-to-kubernetes-preferences.test.ts.snap index 8ab873fac4..9fbc6388b9 100644 --- a/src/behaviours/preferences/__snapshots__/navigation-to-kubernetes-preferences.test.ts.snap +++ b/src/behaviours/preferences/__snapshots__/navigation-to-kubernetes-preferences.test.ts.snap @@ -834,114 +834,121 @@ exports[`preferences - navigation to kubernetes preferences given in preferences
- -
+ +
- Repositories -
-
- -
-
-
- - - +
+ + +
+
- -
-
+ class="pt-5 relative" + > +
+
+
diff --git a/src/behaviours/preferences/navigation-to-kubernetes-preferences.test.ts b/src/behaviours/preferences/navigation-to-kubernetes-preferences.test.ts index e404e1f489..736cddf7de 100644 --- a/src/behaviours/preferences/navigation-to-kubernetes-preferences.test.ts +++ b/src/behaviours/preferences/navigation-to-kubernetes-preferences.test.ts @@ -5,6 +5,10 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; +import callForPublicHelmRepositoriesInjectable + from "../../renderer/components/+preferences/kubernetes/helm-charts/activation-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable"; +import getActiveHelmRepositoriesInjectable + from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; describe("preferences - navigation to kubernetes preferences", () => { let applicationBuilder: ApplicationBuilder; @@ -17,6 +21,15 @@ describe("preferences - navigation to kubernetes preferences", () => { let rendered: RenderResult; beforeEach(async () => { + applicationBuilder.beforeApplicationStart(({ rendererDi, mainDi }) => { + rendererDi.override(callForPublicHelmRepositoriesInjectable, () => async () => []); + + mainDi.override( + getActiveHelmRepositoriesInjectable, + () => async () => ({ callWasSuccessful: true, response: [] }), + ); + }); + applicationBuilder.beforeRender(() => { applicationBuilder.preferences.navigate(); }); diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index e76f0f79bd..4cc86a20bc 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -5,7 +5,7 @@ import glob from "glob"; import { kebabCase, memoize, noop } from "lodash/fp"; -import type { DiContainer } from "@ogre-tools/injectable"; +import type { DiContainer, Injectable } from "@ogre-tools/injectable"; import { createContainer } from "@ogre-tools/injectable"; import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import appNameInjectable from "./app-paths/app-name/app-name.injectable"; @@ -86,6 +86,17 @@ import getRandomIdInjectable from "../common/utils/get-random-id.injectable"; import periodicalCheckForUpdatesInjectable from "./application-update/periodical-check-for-updates/periodical-check-for-updates.injectable"; import execFileInjectable from "../common/fs/exec-file.injectable"; import normalizedPlatformArchitectureInjectable from "../common/vars/normalized-platform-architecture.injectable"; +import getHelmChartInjectable from "./helm/helm-service/get-helm-chart.injectable"; +import getHelmChartValuesInjectable from "./helm/helm-service/get-helm-chart-values.injectable"; +import listHelmChartsInjectable from "./helm/helm-service/list-helm-charts.injectable"; +import deleteHelmReleaseInjectable from "./helm/helm-service/delete-helm-release.injectable"; +import getHelmReleaseHistoryInjectable from "./helm/helm-service/get-helm-release-history.injectable"; +import getHelmReleaseInjectable from "./helm/helm-service/get-helm-release.injectable"; +import getHelmReleaseValuesInjectable from "./helm/helm-service/get-helm-release-values.injectable"; +import installHelmChartInjectable from "./helm/helm-service/install-helm-chart.injectable"; +import listHelmReleasesInjectable from "./helm/helm-service/list-helm-releases.injectable"; +import rollbackHelmReleaseInjectable from "./helm/helm-service/rollback-helm-release.injectable"; +import updateHelmReleaseInjectable from "./helm/helm-service/update-helm-release.injectable"; export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) { const { @@ -136,6 +147,24 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) di.override(periodicalCheckForUpdatesInjectable, () => ({ start: () => {}, stop: () => {}, started: false })); + overrideFunctionalInjectables(di, [ + getHelmChartInjectable, + getHelmChartValuesInjectable, + listHelmChartsInjectable, + deleteHelmReleaseInjectable, + getHelmReleaseHistoryInjectable, + getHelmReleaseInjectable, + getHelmReleaseValuesInjectable, + installHelmChartInjectable, + listHelmReleasesInjectable, + rollbackHelmReleaseInjectable, + updateHelmReleaseInjectable, + writeJsonFileInjectable, + readJsonFileInjectable, + readFileInjectable, + execFileInjectable, + ]); + // TODO: Remove usages of globally exported appEventBus to get rid of this di.override(appEventBusInjectable, () => new EventEmitter<[AppEvent]>()); @@ -152,23 +181,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) } as never; }); - di.override(writeJsonFileInjectable, () => () => { - throw new Error("Tried to write JSON file to file system without specifying explicit override."); - }); - - di.override(readJsonFileInjectable, () => () => { - throw new Error("Tried to read JSON file from file system without specifying explicit override."); - }); - - di.override(readFileInjectable, () => () => { - throw new Error("Tried to read file from file system without specifying explicit override."); - }); - - di.override(execFileInjectable, () => () => { - throw new Error("Tried to exec file from file system without specifying explicit override."); - }); - - di.override(loggerInjectable, () => ({ warn: noop, debug: noop, @@ -265,3 +277,11 @@ const overrideElectronFeatures = (di: DiContainer) => { di.override(publishIsConfiguredInjectable, () => false); 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/__tests__/helm-service.test.ts b/src/main/helm/__tests__/helm-service.test.ts index 152d964211..2e15065272 100644 --- a/src/main/helm/__tests__/helm-service.test.ts +++ b/src/main/helm/__tests__/helm-service.test.ts @@ -6,12 +6,14 @@ import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import listHelmChartsInjectable from "../helm-service/list-helm-charts.injectable"; import getActiveHelmRepositoriesInjectable from "../repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; +import type { AsyncResult } from "../../../common/utils/async-result"; +import type { HelmRepo } from "../../../common/helm-repo"; jest.mock("../helm-chart-manager"); describe("Helm Service tests", () => { let listHelmCharts: () => Promise; - let getActiveHelmRepositoriesMock: jest.Mock; + let getActiveHelmRepositoriesMock: jest.Mock>>; beforeEach(() => { const di = getDiForUnitTesting({ doGeneralOverrides: true }); @@ -20,6 +22,7 @@ describe("Helm Service tests", () => { di.override(getActiveHelmRepositoriesInjectable, () => getActiveHelmRepositoriesMock); + di.unoverride(listHelmChartsInjectable); di.permitSideEffects(listHelmChartsInjectable); listHelmCharts = di.inject(listHelmChartsInjectable); @@ -30,10 +33,16 @@ describe("Helm Service tests", () => { }); it("list charts with deprecated entries", async () => { - getActiveHelmRepositoriesMock.mockReturnValue([ - { name: "stable", url: "stableurl" }, - { name: "experiment", url: "experimenturl" }, - ] as any); + getActiveHelmRepositoriesMock.mockReturnValue( + Promise.resolve({ + callWasSuccessful: true, + + response: [ + { name: "stable", url: "stableurl" }, + { name: "experiment", url: "experimenturl" }, + ], + }), + ); const charts = await listHelmCharts(); @@ -135,9 +144,12 @@ describe("Helm Service tests", () => { }); it("list charts sorted by version in descending order", async () => { - getActiveHelmRepositoriesMock.mockReturnValue([ - { name: "bitnami", url: "bitnamiurl" }, - ] as any); + getActiveHelmRepositoriesMock.mockReturnValue( + Promise.resolve({ + callWasSuccessful: true, + response: [{ name: "bitnami", url: "bitnamiurl" }], + }), + ); const charts = await listHelmCharts(); diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx index 2fbca970d1..0e9cfc764f 100644 --- a/src/renderer/getDiForUnitTesting.tsx +++ b/src/renderer/getDiForUnitTesting.tsx @@ -5,7 +5,12 @@ import glob from "glob"; import { memoize, noop } from "lodash/fp"; -import { createContainer } from "@ogre-tools/injectable"; +import type { + DiContainer, + Injectable } from "@ogre-tools/injectable"; +import { + createContainer, +} 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"; import loggerInjectable from "../common/logger.injectable"; @@ -46,6 +51,7 @@ import provideInitialValuesForSyncBoxesInjectable from "./utils/sync-box/provide import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable"; import getRandomIdInjectable from "../common/utils/get-random-id.injectable"; import getFilePathsInjectable from "./components/+preferences/kubernetes/helm-charts/activation-of-custom-helm-repository/helm-file-input/get-file-paths.injectable"; +import callForPublicHelmRepositoriesInjectable from "./components/+preferences/kubernetes/helm-charts/activation-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable"; export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {}) => { const { @@ -92,13 +98,11 @@ export const getDiForUnitTesting = (opts: { doGeneralOverrides?: boolean } = {}) on: () => {}, }) as unknown as IpcRenderer); - di.override(broadcastMessageInjectable, () => () => { - throw new Error("Tried to broadcast message over IPC without explicit override."); - }); - - di.override(getFilePathsInjectable, () => () => { - throw new Error("Tried to get file paths without explicit override."); - }); + overrideFunctionalInjectables(di, [ + broadcastMessageInjectable, + getFilePathsInjectable, + callForPublicHelmRepositoriesInjectable, + ]); // eslint-disable-next-line unused-imports/no-unused-vars-ts di.override(extensionsStoreInjectable, () => ({ isEnabled: ({ id, isBundled }) => false }) as ExtensionsStore); @@ -152,3 +156,11 @@ const getInjectableFilePaths = memoize(() => [ ...glob.sync("../common/**/*.injectable.{ts,tsx}", { cwd: __dirname }), ...glob.sync("../extensions/**/*.injectable.{ts,tsx}", { cwd: __dirname }), ]); + +const overrideFunctionalInjectables = (di: DiContainer, injectables: Injectable[]) => { + injectables.forEach(injectable => { + di.override(injectable, () => () => { + throw new Error(`Tried to run "${injectable.id}" without explicit override.`); + }); + }); +};