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
-
-
+
-
-
-
+ 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.`);
+ });
+ });
+};