diff --git a/src/behaviours/application-update/force-user-to-update-when-too-long-time-since-update-was-downloaded.test.ts b/src/behaviours/application-update/force-user-to-update-when-too-long-time-since-update-was-downloaded.test.ts index df46617467..c14f96c6c7 100644 --- a/src/behaviours/application-update/force-user-to-update-when-too-long-time-since-update-was-downloaded.test.ts +++ b/src/behaviours/application-update/force-user-to-update-when-too-long-time-since-update-was-downloaded.test.ts @@ -19,6 +19,8 @@ import quitAndInstallUpdateInjectable from "../../main/application-update/quit-a import timeAfterUpdateMustBeInstalledInjectable from "../../renderer/application-update/force-update-modal/time-after-update-must-be-installed.injectable"; import secondsAfterInstallStartsInjectable from "../../renderer/application-update/force-update-modal/seconds-after-install-starts.injectable"; import forceUpdateModalRootFrameComponentInjectable from "../../renderer/application-update/force-update-modal/force-update-modal-root-frame-component.injectable"; +import { overrideAppEventBusInjectable } from "../../common/test-utils/override-app-event-bus"; +import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable"; const TIME_AFTER_UPDATE_MUST_BE_INSTALLED = 1000; const TIME_AFTER_INSTALL_STARTS = 5 * 1000; @@ -54,6 +56,8 @@ describe("force user to update when too long since update was downloaded", () => rendererDi.override(timeAfterUpdateMustBeInstalledInjectable, () => TIME_AFTER_UPDATE_MUST_BE_INSTALLED); rendererDi.override(secondsAfterInstallStartsInjectable, () => TIME_AFTER_INSTALL_STARTS / 1000); + + overrideAppEventBusInjectable(rendererDi, appEventBusInjectable); }); mainDi = applicationBuilder.dis.mainDi; diff --git a/src/behaviours/cluster/namespaces/edit-namespace-from-new-tab.test.tsx b/src/behaviours/cluster/namespaces/edit-namespace-from-new-tab.test.tsx index 49610f138d..23036d0757 100644 --- a/src/behaviours/cluster/namespaces/edit-namespace-from-new-tab.test.tsx +++ b/src/behaviours/cluster/namespaces/edit-namespace-from-new-tab.test.tsx @@ -25,6 +25,8 @@ import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import { controlWhenStoragesAreReady } from "../../../renderer/utils/create-storage/storages-are-ready"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; +import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable"; jest.mock("../../../renderer/components/tooltip/withTooltip", () => ({ withTooltip: @@ -77,6 +79,8 @@ describe("cluster/namespaces - edit namespace from new tab", () => { rendererDi.override(hostedClusterIdInjectable, () => "some-cluster-id"); + overrideAppEventBusInjectable(rendererDi, appEventBusInjectable); + storagesAreReady = controlWhenStoragesAreReady(rendererDi); rendererDi.override( diff --git a/src/behaviours/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts b/src/behaviours/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts index f3ee91257d..c4996cbaf7 100644 --- a/src/behaviours/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts +++ b/src/behaviours/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts @@ -30,6 +30,8 @@ import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/h import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable"; import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; +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", () => ({ @@ -111,6 +113,8 @@ describe("installing helm chart from new tab", () => { .mockReturnValueOnce("some-first-tab-id") .mockReturnValueOnce("some-second-tab-id"), ); + + overrideAppEventBusInjectable(rendererDi, appEventBusInjectable); }); builder.setEnvironmentToClusterFrame(); diff --git a/src/behaviours/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts b/src/behaviours/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts index 79ad98a1dc..ab100d70ff 100644 --- a/src/behaviours/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts +++ b/src/behaviours/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts @@ -24,6 +24,8 @@ import directoryForLensLocalStorageInjectable from "../../../common/directory-fo import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; +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", () => ({ @@ -88,6 +90,8 @@ describe("opening dock tab for installing helm chart", () => { .fn(() => "some-irrelevant-tab-id") .mockReturnValueOnce("some-tab-id"), ); + + overrideAppEventBusInjectable(rendererDi, appEventBusInjectable); }); builder.setEnvironmentToClusterFrame(); diff --git a/src/behaviours/helm-releases/showing-details-for-helm-release.test.ts b/src/behaviours/helm-releases/showing-details-for-helm-release.test.ts index 21c4771e05..08174d2141 100644 --- a/src/behaviours/helm-releases/showing-details-for-helm-release.test.ts +++ b/src/behaviours/helm-releases/showing-details-for-helm-release.test.ts @@ -23,6 +23,8 @@ import callForHelmReleaseInjectable from "../../renderer/components/+helm-releas import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; import showCheckedErrorInjectable from "../../renderer/components/notifications/show-checked-error.injectable"; import getRandomUpgradeChartTabIdInjectable from "../../renderer/components/dock/upgrade-chart/get-random-upgrade-chart-tab-id.injectable"; +import { overrideAppEventBusInjectable } from "../../common/test-utils/override-app-event-bus"; +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", () => ({ @@ -98,6 +100,8 @@ describe("showing details for helm release", () => { selectNamespaces: () => {}, } as unknown as NamespaceStore), ); + + overrideAppEventBusInjectable(rendererDi, appEventBusInjectable); }); }); diff --git a/src/common/test-utils/override-app-event-bus.ts b/src/common/test-utils/override-app-event-bus.ts new file mode 100644 index 0000000000..a72ef5cee7 --- /dev/null +++ b/src/common/test-utils/override-app-event-bus.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import type { DiContainer, Injectable } from "@ogre-tools/injectable"; +import type { AppEvent } from "../app-event-bus/event-bus"; +import type { EventEmitter } from "../event-emitter"; + +export function overrideAppEventBusInjectable(di: DiContainer, appEventBusInjectable: Injectable, unknown, void>) { + const emitEvent: (event: AppEvent) => void = jest.fn(); + + di.override(appEventBusInjectable, () => ({ + emit: emitEvent, + })); + + return emitEvent; +} diff --git a/src/renderer/components/+catalog/catalog.test.tsx b/src/renderer/components/+catalog/catalog.test.tsx index 899b97bed2..00f01ab68d 100644 --- a/src/renderer/components/+catalog/catalog.test.tsx +++ b/src/renderer/components/+catalog/catalog.test.tsx @@ -26,6 +26,7 @@ import type { AppEvent } from "../../../common/app-event-bus/event-bus"; import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable"; import { computed } from "mobx"; import broadcastMessageInjectable from "../../../common/ipc/broadcast-message.injectable"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; mockWindow(); jest.mock("electron", () => ({ @@ -105,11 +106,7 @@ describe("", () => { di.override(catalogEntityRegistryInjectable, () => catalogEntityRegistry); - emitEvent = jest.fn(); - - di.override(appEventBusInjectable, () => ({ - emit: emitEvent, - })); + emitEvent = overrideAppEventBusInjectable(di, appEventBusInjectable); catalogEntityStore = di.inject(catalogEntityStoreInjectable); Object.assign(catalogEntityStore, { diff --git a/src/renderer/components/+extensions/__tests__/extensions.test.tsx b/src/renderer/components/+extensions/__tests__/extensions.test.tsx index fd84cce03e..af90f72fd7 100644 --- a/src/renderer/components/+extensions/__tests__/extensions.test.tsx +++ b/src/renderer/components/+extensions/__tests__/extensions.test.tsx @@ -27,7 +27,9 @@ 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 appVersionInjectable from "../../../../common/vars/app-version.injectable"; import appEventBusInjectable from "../../../../common/app-event-bus/app-event-bus.injectable"; +import { overrideAppEventBusInjectable } from "../../../../common/test-utils/override-app-event-bus"; mockWindow(); @@ -62,10 +64,10 @@ describe("Extensions", () => { di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data"); di.override(directoryForDownloadsInjectable, () => "some-directory-for-downloads"); + overrideAppEventBusInjectable(di, appEventBusInjectable); di.permitSideEffects(getConfigurationFileModelInjectable); di.permitSideEffects(appVersionInjectable); - di.permitSideEffects(appEventBusInjectable); mockFs({ "some-directory-for-user-data": {}, diff --git a/src/renderer/components/+namespaces/namespace-select-filter.test.tsx b/src/renderer/components/+namespaces/namespace-select-filter.test.tsx index a81e32e263..0687236a1d 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter.test.tsx +++ b/src/renderer/components/+namespaces/namespace-select-filter.test.tsx @@ -7,6 +7,8 @@ import type { DiContainer } from "@ogre-tools/injectable"; import type { RenderResult } from "@testing-library/react"; import { fireEvent } from "@testing-library/react"; import React from "react"; +import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import { Namespace } from "../../../common/k8s-api/endpoints"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; @@ -40,6 +42,8 @@ describe("", () => { di.override(storesAndApisCanBeCreatedInjectable, () => true); namespaceStore = di.inject(namespaceStoreInjectable); + overrideAppEventBusInjectable(di, appEventBusInjectable); + const render = renderFor(di); namespaceStore.items.replace([ 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 f175b5da78..f66f0fc48d 100644 --- a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx +++ b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx @@ -19,6 +19,7 @@ import getConfigurationFileModelInjectable from "../../../../common/get-configur 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"; +import { overrideAppEventBusInjectable } from "../../../../common/test-utils/override-app-event-bus"; const mockHotbars: Partial> = { "1": { @@ -46,10 +47,10 @@ describe("", () => { di.override(storesAndApisCanBeCreatedInjectable, () => true); di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data"); + overrideAppEventBusInjectable(di, appEventBusInjectable); 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 909ec8a795..ea9b7e5d9c 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 @@ -26,6 +26,7 @@ import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource 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"; +import { overrideAppEventBusInjectable } from "../../../common/test-utils/override-app-event-bus"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../tooltip/tooltip"); @@ -69,7 +70,7 @@ describe("kube-object-menu", () => { di.override(createEditResourceTabInjectable, () => () => "irrelevant"); - di.permitSideEffects(appEventBusInjectable); + overrideAppEventBusInjectable(di, appEventBusInjectable); }); it("given no cluster, does not crash", () => {