diff --git a/src/behaviours/cluster/order-of-sidebar-items.test.tsx b/src/behaviours/cluster/order-of-sidebar-items.test.tsx
index 368b1b065d..9bd62afc22 100644
--- a/src/behaviours/cluster/order-of-sidebar-items.test.tsx
+++ b/src/behaviours/cluster/order-of-sidebar-items.test.tsx
@@ -11,6 +11,7 @@ import { computed } from "mobx";
import { noop } from "lodash/fp";
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
describe("cluster - order of sidebar items", () => {
let rendered: RenderResult;
@@ -21,6 +22,7 @@ describe("cluster - order of sidebar items", () => {
applicationBuilder.beforeApplicationStart(({ rendererDi }) => {
rendererDi.register(testSidebarItemsInjectable);
+ rendererDi.permitSideEffects(appEventBusInjectable);
});
});
diff --git a/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx b/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx
index e6cf1f4a64..5861ba32e5 100644
--- a/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx
+++ b/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx
@@ -25,6 +25,7 @@ import sidebarStorageInjectable from "../../renderer/components/layout/sidebar-s
import hostedClusterIdInjectable from "../../renderer/cluster-frame-context/hosted-cluster-id.injectable";
import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time";
import storageSaveDelayInjectable from "../../renderer/utils/create-storage/storage-save-delay.injectable";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
describe("cluster - sidebar and tab navigation for core", () => {
let applicationBuilder: ApplicationBuilder;
@@ -48,6 +49,8 @@ describe("cluster - sidebar and tab navigation for core", () => {
directoryForLensLocalStorageInjectable,
() => "/some-directory-for-lens-local-storage",
);
+
+ rendererDi.permitSideEffects(appEventBusInjectable);
});
});
diff --git a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
index 952669c03e..ef72ef1ab1 100644
--- a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
+++ b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
@@ -22,6 +22,7 @@ import { getExtensionFakeFor } from "../../renderer/components/test-utils/get-ex
import type { IObservableValue } from "mobx";
import { runInAction, computed, observable } from "mobx";
import storageSaveDelayInjectable from "../../renderer/utils/create-storage/storage-save-delay.injectable";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
// TODO: Make tooltips free of side effects by making it deterministic
jest.mock("../../renderer/components/tooltip/withTooltip", () => ({
@@ -46,6 +47,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => {
rendererDi.override(storageSaveDelayInjectable, () => 250);
+ rendererDi.permitSideEffects(appEventBusInjectable);
rendererDi.override(
directoryForLensLocalStorageInjectable,
() => "/some-directory-for-lens-local-storage",
diff --git a/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts b/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts
index 943aca900f..5f8501c7bc 100644
--- a/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts
+++ b/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts
@@ -17,6 +17,7 @@ import isPathInjectable from "../../renderer/components/input/validators/is-path
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import type { AsyncResult } from "../../common/utils/async-result";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
// TODO: Make tooltips free of side effects by making it deterministic
jest.mock("../../renderer/components/tooltip/withTooltip", () => ({
@@ -55,6 +56,8 @@ describe("add custom helm repository in preferences", () => {
// TODO: Figure out how to make async validators unit testable
rendererDi.override(isPathInjectable, () => ({ debounce: 0, validate: async () => {} }));
+ rendererDi.permitSideEffects(appEventBusInjectable);
+
mainDi.override(
getActiveHelmRepositoriesInjectable,
() => getActiveHelmRepositoriesMock,
diff --git a/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts b/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts
index 74e57cb693..0ab169d885 100644
--- a/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts
+++ b/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts
@@ -15,6 +15,7 @@ import callForPublicHelmRepositoriesInjectable from "../../renderer/components/+
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import type { AsyncResult } from "../../common/utils/async-result";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
// TODO: Make tooltips free of side effects by making it deterministic
jest.mock("../../renderer/components/tooltip/withTooltip", () => ({
@@ -53,6 +54,8 @@ describe("add helm repository from list in preferences", () => {
() => callForPublicHelmRepositoriesMock,
);
+ rendererDi.permitSideEffects(appEventBusInjectable);
+
mainDi.override(
getActiveHelmRepositoriesInjectable,
() => getActiveHelmRepositoriesMock,
diff --git a/src/behaviours/preferences/closing-preferences.test.tsx b/src/behaviours/preferences/closing-preferences.test.tsx
index dddd7e18dc..05d87aaeb5 100644
--- a/src/behaviours/preferences/closing-preferences.test.tsx
+++ b/src/behaviours/preferences/closing-preferences.test.tsx
@@ -22,6 +22,7 @@ import { createObservableHistory } from "mobx-observable-history";
import navigateToPreferenceTabInjectable from "../../renderer/components/+preferences/preferences-navigation/navigate-to-preference-tab.injectable";
import navigateToFrontPageInjectable from "../../common/front-end-routing/navigate-to-front-page.injectable";
import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token";
+import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable";
describe("preferences - closing-preferences", () => {
let applicationBuilder: ApplicationBuilder;
@@ -35,6 +36,7 @@ describe("preferences - closing-preferences", () => {
rendererDi.register(testFrontPageRouteInjectable);
rendererDi.register(testFrontPageRouteComponentInjectable);
rendererDi.register(testNavigationItemInjectable);
+ rendererDi.permitSideEffects(appEventBusInjectable);
rendererDi.override(navigateToFrontPageInjectable, (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
diff --git a/src/renderer/components/+config-secrets/__tests__/secret-details.test.tsx b/src/renderer/components/+config-secrets/__tests__/secret-details.test.tsx
index 6903e853bc..a9ff711120 100644
--- a/src/renderer/components/+config-secrets/__tests__/secret-details.test.tsx
+++ b/src/renderer/components/+config-secrets/__tests__/secret-details.test.tsx
@@ -4,9 +4,12 @@
*/
import React from "react";
-import { render } from "@testing-library/react";
+import type { DiRender } from "../../test-utils/renderFor";
+import { renderFor } from "../../test-utils/renderFor";
import { SecretDetails } from "../secret-details";
import { Secret, SecretType } from "../../../../common/k8s-api/endpoints";
+import type { DiContainer } from "@ogre-tools/injectable";
+import { getDiForUnitTesting } from "../../../../renderer/getDiForUnitTesting";
jest.mock("../../kube-object-meta/kube-object-meta", () => ({
KubeObjectMeta: () => null,
@@ -14,6 +17,14 @@ jest.mock("../../kube-object-meta/kube-object-meta", () => ({
describe("SecretDetails tests", () => {
+ let di: DiContainer;
+ let render: DiRender;
+
+ beforeEach(() => {
+ di = getDiForUnitTesting({ doGeneralOverrides: true });
+ render = renderFor(di);
+ });
+
it("should show the visibility toggle when the secret value is ''", () => {
const secret = new Secret({
apiVersion: "v1",
diff --git a/src/renderer/components/+extensions/__tests__/extensions.test.tsx b/src/renderer/components/+extensions/__tests__/extensions.test.tsx
index 5de9e15f1f..fd84cce03e 100644
--- a/src/renderer/components/+extensions/__tests__/extensions.test.tsx
+++ b/src/renderer/components/+extensions/__tests__/extensions.test.tsx
@@ -27,6 +27,7 @@ import installFromInputInjectable from "../install-from-input/install-from-input
import type { ExtensionInstallationStateStore } from "../../../../extensions/extension-installation-state-store/extension-installation-state-store";
import extensionInstallationStateStoreInjectable from "../../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
import { observable, when } from "mobx";
+import appEventBusInjectable from "../../../../common/app-event-bus/app-event-bus.injectable";
mockWindow();
@@ -63,6 +64,8 @@ describe("Extensions", () => {
di.override(directoryForDownloadsInjectable, () => "some-directory-for-downloads");
di.permitSideEffects(getConfigurationFileModelInjectable);
+ di.permitSideEffects(appVersionInjectable);
+ di.permitSideEffects(appEventBusInjectable);
mockFs({
"some-directory-for-user-data": {},
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 8978e00b5b..c3178fce8b 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
@@ -20,6 +20,9 @@ import { getApplicationBuilder } from "../../test-utils/get-application-builder"
import normalizedPlatformInjectable from "../../../../common/vars/normalized-platform.injectable";
import kubectlBinaryNameInjectable from "../../../../main/kubectl/binary-name.injectable";
import kubectlDownloadingNormalizedArchInjectable from "../../../../main/kubectl/normalized-arch.injectable";
+import appEventBusInjectable from "../../../../common/app-event-bus/app-event-bus.injectable";
+import { EventEmitter } from "../../../../common/event-emitter";
+import type { AppEvent } from "../../../../common/app-event-bus/event-bus";
jest.mock("electron", () => ({
app: {
@@ -103,6 +106,8 @@ describe("", () => {
mainDi.override(kubectlBinaryNameInjectable, () => "kubectl");
mainDi.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64");
mainDi.override(normalizedPlatformInjectable, () => "darwin");
+
+ rendererDi.override(appEventBusInjectable, () => new EventEmitter<[AppEvent]>());
rendererDi.override(storesAndApisCanBeCreatedInjectable, () => true);
});
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 cc22112380..f175b5da78 100644
--- a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx
+++ b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx
@@ -18,6 +18,7 @@ import directoryForUserDataInjectable from "../../../../common/app-paths/directo
import getConfigurationFileModelInjectable from "../../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
import type { HotbarStore } from "../../../../common/hotbars/store";
import storesAndApisCanBeCreatedInjectable from "../../../stores-apis-can-be-created.injectable";
+import appEventBusInjectable from "../../../../common/app-event-bus/app-event-bus.injectable";
const mockHotbars: Partial> = {
"1": {
@@ -48,6 +49,7 @@ describe("", () => {
di.permitSideEffects(hotbarStoreInjectable);
di.permitSideEffects(getConfigurationFileModelInjectable);
+ di.permitSideEffects(appEventBusInjectable);
render = renderFor(di);
});
diff --git a/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx
index 0f0b338d8f..909ec8a795 100644
--- a/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx
+++ b/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx
@@ -25,6 +25,7 @@ import { KubeObjectMenu } from "./index";
import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource-tab.injectable";
import hideDetailsInjectable from "../kube-detail-params/hide-details.injectable";
import { kubeObjectMenuItemInjectionToken } from "./kube-object-menu-item-injection-token";
+import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable";
// TODO: Make tooltips free of side effects by making it deterministic
jest.mock("../tooltip/tooltip");
@@ -67,6 +68,8 @@ describe("kube-object-menu", () => {
di.override(hideDetailsInjectable, () => () => {});
di.override(createEditResourceTabInjectable, () => () => "irrelevant");
+
+ di.permitSideEffects(appEventBusInjectable);
});
it("given no cluster, does not crash", () => {
diff --git a/src/renderer/components/layout/tab-layout-2.tsx b/src/renderer/components/layout/tab-layout-2.tsx
index c37fd9f272..772713f4c3 100644
--- a/src/renderer/components/layout/tab-layout-2.tsx
+++ b/src/renderer/components/layout/tab-layout-2.tsx
@@ -44,7 +44,7 @@ const NonInjectedTabLayout = observer(
return (
{
- if (registration.title) {
+ if (registration.title) {
captureClick(registration.title.toString(), "Tab Click");
}
registration.onClick();
diff --git a/src/renderer/components/select/select.tsx b/src/renderer/components/select/select.tsx
index eb654f784e..aed7e5d040 100644
--- a/src/renderer/components/select/select.tsx
+++ b/src/renderer/components/select/select.tsx
@@ -195,6 +195,7 @@ class NonInjectedSelect<
isMulti,
id: inputId,
onChange,
+ capture,
...props
} = this.props;
@@ -232,7 +233,7 @@ class NonInjectedSelect<
classNamePrefix="Select"
onChange={action((newValue: OnChangeValue