From 34dafcd6755f0a344e49d1a0b77ecd9cddbf2f2f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 20 Mar 2023 14:31:33 -0400 Subject: [PATCH] Fix tests and snapshots Signed-off-by: Sebastian Malton --- .../__tests__/extension-loader.test.ts | 35 ++++++++----------- ...acters-in-page-registrations.test.tsx.snap | 4 +-- .../navigate-to-extension-page.test.tsx.snap | 10 +++--- .../navigating-between-routes.test.tsx.snap | 4 +-- ...ation-using-application-menu.test.tsx.snap | 4 +-- .../installing-update.test.ts.snap | 16 ++++----- ...g-update-using-topbar-button.test.tsx.snap | 4 +-- .../installing-update-using-tray.test.ts.snap | 12 +++---- .../__snapshots__/force-update.test.ts.snap | 6 ++-- ...eriodical-checking-of-updates.test.ts.snap | 2 +- .../entity-running.test.tsx.snap | 4 +-- .../delete-cluster-dialog.test.tsx.snap | 10 +++--- .../keyboard-shortcuts.test.tsx.snap | 16 ++++----- ...gation-using-application-menu.test.ts.snap | 4 +-- ...elm-repository-in-preferences.test.ts.snap | 24 ++++++------- ...tory-from-list-in-preferences.test.ts.snap | 20 +++++------ ...m-repositories-in-preferences.test.ts.snap | 20 +++++------ ...ive-repository-in-preferences.test.ts.snap | 8 ++--- .../closing-preferences.test.tsx.snap | 16 ++++----- ...nsion-adding-preference-tabs.test.tsx.snap | 2 +- .../hiding-of-empty-branches.test.tsx.snap | 6 ++-- ...n-to-application-preferences.test.tsx.snap | 10 +++--- ...igation-to-editor-preferences.test.ts.snap | 4 +-- ...tension-specific-preferences.test.tsx.snap | 18 +++++----- ...ion-to-kubernetes-preferences.test.ts.snap | 4 +-- ...vigation-to-proxy-preferences.test.ts.snap | 4 +-- ...ion-to-telemetry-preferences.test.tsx.snap | 10 +++--- ...ation-to-terminal-preferences.test.ts.snap | 4 +-- ...gation-using-application-menu.test.ts.snap | 4 +-- .../navigation-using-tray.test.ts.snap | 4 +-- .../urls-of-legacy-extensions.test.tsx.snap | 10 +++--- ...-originating-from-extensions.test.tsx.snap | 2 +- ...dability-using-extension-api.test.tsx.snap | 8 ++--- ...gation-using-application-menu.test.ts.snap | 6 ++-- .../protocol-handler/__test__/router.test.ts | 16 ++++----- .../lens-protocol-router-main.ts | 16 +++++++-- 36 files changed, 175 insertions(+), 172 deletions(-) diff --git a/packages/core/src/extensions/__tests__/extension-loader.test.ts b/packages/core/src/extensions/__tests__/extension-loader.test.ts index 31c019e733..c0e679ca3c 100644 --- a/packages/core/src/extensions/__tests__/extension-loader.test.ts +++ b/packages/core/src/extensions/__tests__/extension-loader.test.ts @@ -5,6 +5,7 @@ import type { ExtensionLoader } from "../extension-loader"; import extensionLoaderInjectable from "../extension-loader/extension-loader.injectable"; +import type { ObservableMap } from "mobx"; import { runInAction } from "mobx"; import { delay } from "@k8slens/utilities"; import { getDiForUnitTesting } from "../../renderer/getDiForUnitTesting"; @@ -12,7 +13,8 @@ import ipcRendererInjectable from "../../renderer/utils/channel/ipc-renderer.inj import type { IpcRenderer } from "electron"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import currentlyInClusterFrameInjectable from "../../renderer/routes/currently-in-cluster-frame.injectable"; -import updateExtensionsStateInjectable from "../../features/extensions/enabled/common/update-state.injectable"; +import type { LensExtensionState } from "../../features/extensions/enabled/common/state.injectable"; +import enabledExtensionsStateInjectable from "../../features/extensions/enabled/common/state.injectable"; const manifestPath = "manifest/path"; const manifestPath2 = "manifest/path2"; @@ -20,7 +22,7 @@ const manifestPath3 = "manifest/path3"; describe("ExtensionLoader", () => { let extensionLoader: ExtensionLoader; - let updateExtensionStateMock: jest.Mock; + let enabledExtensionsState: ObservableMap; beforeEach(() => { const di = getDiForUnitTesting(); @@ -106,11 +108,8 @@ describe("ExtensionLoader", () => { }, }) as unknown as IpcRenderer); - updateExtensionStateMock = jest.fn(); - - di.override(updateExtensionsStateInjectable, () => updateExtensionStateMock); - extensionLoader = di.inject(extensionLoaderInjectable); + enabledExtensionsState = di.inject(enabledExtensionsStateInjectable); }); it("renderer updates extension after ipc broadcast", async () => { @@ -151,24 +150,18 @@ describe("ExtensionLoader", () => { it("updates ExtensionsStore after isEnabled is changed", async () => { await extensionLoader.init(); - expect(updateExtensionStateMock).not.toHaveBeenCalled(); - runInAction(() => { extensionLoader.setIsEnabled("manifest/path", false); }); - expect(updateExtensionStateMock).toHaveBeenCalledWith( - expect.objectContaining({ - "manifest/path": { - enabled: false, - name: "TestExtension", - }, - - "manifest/path2": { - enabled: true, - name: "TestExtension2", - }, - }), - ); + expect(enabledExtensionsState.size).toBe(2); + expect(enabledExtensionsState.get("manifest/path")).toMatchObject({ + enabled: false, + name: "TestExtension", + }); + expect(enabledExtensionsState.get("manifest/path2")).toMatchObject({ + enabled: true, + name: "TestExtension2", + }); }); }); diff --git a/packages/core/src/features/__snapshots__/extension-special-characters-in-page-registrations.test.tsx.snap b/packages/core/src/features/__snapshots__/extension-special-characters-in-page-registrations.test.tsx.snap index a7d87f9d8d..a63146ddcc 100644 --- a/packages/core/src/features/__snapshots__/extension-special-characters-in-page-registrations.test.tsx.snap +++ b/packages/core/src/features/__snapshots__/extension-special-characters-in-page-registrations.test.tsx.snap @@ -230,7 +230,7 @@ exports[`extension special characters in page registrations renders 1`] = ` class="HotbarSelector" > { }); extensionInstances.set(extId, ext); - enabledExtensions.set(extId, { name: "@mirantis/minikube" }); + enabledExtensions.set(extId, { name: "@mirantis/minikube", enabled: true }); lpr.addInternalHandler("/", noop); @@ -101,14 +101,14 @@ describe("protocol router tests", () => { expect(throwIfDefined(error)).not.toThrow(); } + expect(broadcastMessageMock).toHaveBeenCalledWith(ProtocolHandlerInternal, "lens://app", "matched"); + try { expect(await lpr.route("lens://extension/@mirantis/minikube")).toBeUndefined(); } catch (error) { expect(throwIfDefined(error)).not.toThrow(); } - await delay(50); - expect(broadcastMessageMock).toHaveBeenCalledWith(ProtocolHandlerInternal, "lens://app", "matched"); expect(broadcastMessageMock).toHaveBeenCalledWith(ProtocolHandlerExtension, "lens://extension/@mirantis/minikube", "matched"); }); @@ -171,7 +171,7 @@ describe("protocol router tests", () => { }); extensionInstances.set(extId, ext); - enabledExtensions.set(extId, { name: "@foobar/icecream" }); + enabledExtensions.set(extId, { name: "@foobar/icecream", enabled: true }); try { expect(await lpr.route("lens://extension/@foobar/icecream/page/foob")).toBeUndefined(); @@ -179,7 +179,6 @@ describe("protocol router tests", () => { expect(throwIfDefined(error)).not.toThrow(); } - await delay(50); expect(called).toBe("foob"); expect(broadcastMessageMock).toBeCalledWith(ProtocolHandlerExtension, "lens://extension/@foobar/icecream/page/foob", "matched"); }); @@ -210,7 +209,7 @@ describe("protocol router tests", () => { }); extensionInstances.set(extId, ext); - enabledExtensions.set(extId, { name: "@foobar/icecream" }); + enabledExtensions.set(extId, { name: "@foobar/icecream", enabled: true }); } { @@ -236,7 +235,7 @@ describe("protocol router tests", () => { }); extensionInstances.set(extId, ext); - enabledExtensions.set(extId, { name: "icecream" }); + enabledExtensions.set(extId, { name: "icecream", enabled: true }); } try { @@ -245,7 +244,6 @@ describe("protocol router tests", () => { expect(throwIfDefined(error)).not.toThrow(); } - await delay(50); expect(called).toBe(1); expect(broadcastMessageMock).toBeCalledWith(ProtocolHandlerExtension, "lens://extension/icecream/page", "matched"); diff --git a/packages/core/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts b/packages/core/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts index fb0ad71892..8185ca4e68 100644 --- a/packages/core/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts +++ b/packages/core/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts @@ -119,7 +119,13 @@ export class LensProtocolRouterMain extends proto.LensProtocolRouter { const rawUrl = url.toString(); // for sending to renderer const attempt = super._routeToInternal(url); - this.disposers.push(when(() => this.rendererLoaded, () => this.dependencies.broadcastMessage(proto.ProtocolHandlerInternal, rawUrl, attempt))); + const sendRoutingToRenderer = () => this.dependencies.broadcastMessage(proto.ProtocolHandlerInternal, rawUrl, attempt); + + if (this.rendererLoaded) { + sendRoutingToRenderer(); + } else { + this.disposers.push(when(() => this.rendererLoaded, sendRoutingToRenderer)); + } return attempt; } @@ -136,7 +142,13 @@ export class LensProtocolRouterMain extends proto.LensProtocolRouter { */ const attempt = await super._routeToExtension(new URLParse(url.toString(), true)); - this.disposers.push(when(() => this.rendererLoaded, () => this.dependencies.broadcastMessage(proto.ProtocolHandlerExtension, rawUrl, attempt))); + const sendRoutingToRenderer = () => this.dependencies.broadcastMessage(proto.ProtocolHandlerExtension, rawUrl, attempt); + + if (this.rendererLoaded) { + sendRoutingToRenderer(); + } else { + this.disposers.push(when(() => this.rendererLoaded, sendRoutingToRenderer)); + } return attempt; }