diff --git a/packages/core/src/extensions/__tests__/configurable-directories.test.ts b/packages/core/src/extensions/__tests__/configurable-directories.test.ts index f8d6f1d678..7e79fb7400 100644 --- a/packages/core/src/extensions/__tests__/configurable-directories.test.ts +++ b/packages/core/src/extensions/__tests__/configurable-directories.test.ts @@ -38,17 +38,9 @@ describe("configurable directories for extension files", () => { testExtensionOptions = { id: "some-extension", - name: "some-extension-name", - - mainOptions: { - manifest: { - name: "irrelevant", - storeName: "some-specific-store-name", - version: "0", - engines: { - lens: "0", - }, - }, + manifest: { + name: "some-extension-name", + storeName: "some-specific-store-name", }, }; @@ -73,17 +65,8 @@ describe("configurable directories for extension files", () => { testExtensionOptions = { id: "some-extension", - name: "some-extension-name", - - mainOptions: { - manifest: { - name: "some-package-name", - storeName: undefined, - version: "0", - engines: { - lens: "0", - }, - }, + manifest: { + name: "some-extension-name", }, }; diff --git a/packages/core/src/extensions/lens-extension.ts b/packages/core/src/extensions/lens-extension.ts index 1fd867a8c1..9dfe9a1b33 100644 --- a/packages/core/src/extensions/lens-extension.ts +++ b/packages/core/src/extensions/lens-extension.ts @@ -21,6 +21,10 @@ export interface LensExtensionDependencies { export const Disposers = Symbol("disposers"); +export interface LensExtensionParts { + protocolHandlers: ProtocolHandlerRegistration[]; +} + export class LensExtension { get id() { return this.extension.id; diff --git a/packages/core/src/extensions/lens-main-extension.ts b/packages/core/src/extensions/lens-main-extension.ts index 7677531d86..cad754b7c5 100644 --- a/packages/core/src/extensions/lens-main-extension.ts +++ b/packages/core/src/extensions/lens-main-extension.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { LensExtensionDependencies } from "./lens-extension"; +import type { LensExtensionDependencies, LensExtensionParts } from "./lens-extension"; import { LensExtension } from "./lens-extension"; import type { CatalogEntity } from "../common/catalog"; import type { IComputedValue, IObservableArray } from "mobx"; @@ -25,6 +25,11 @@ interface LensMainExtensionDependencies extends LensExtensionDependencies { readonly navigate: NavigateForExtension; } +export interface LensMainExtensionParts extends LensExtensionParts { + appMenus: MenuRegistration[] | IComputedValue; + trayMenus: TrayMenuRegistration[] | IComputedValue; +} + export class LensMainExtension extends LensExtension { appMenus: MenuRegistration[] | IComputedValue = []; trayMenus: TrayMenuRegistration[] | IComputedValue = []; diff --git a/packages/core/src/extensions/lens-renderer-extension.ts b/packages/core/src/extensions/lens-renderer-extension.ts index f1a6bddf0c..629aae5a46 100644 --- a/packages/core/src/extensions/lens-renderer-extension.ts +++ b/packages/core/src/extensions/lens-renderer-extension.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { LensExtensionDependencies } from "./lens-extension"; +import type { LensExtensionDependencies, LensExtensionParts } from "./lens-extension"; import { Disposers, LensExtension } from "./lens-extension"; import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog"; import type { Disposer } from "../common/utils"; @@ -53,6 +53,30 @@ interface LensRendererExtensionDependencies extends LensExtensionDependencies { readonly categoryRegistry: CatalogCategoryRegistry; } +export interface LensRendererExtensionParts extends LensExtensionParts { + globalPages: PageRegistration[]; + clusterPages: PageRegistration[]; + clusterPageMenus: ClusterPageMenuRegistration[]; + clusterFrameComponents: ClusterFrameChildComponent[]; + kubeObjectStatusTexts: KubeObjectStatusRegistration[]; + appPreferences: AppPreferenceRegistration[]; + appPreferenceTabs: AppPreferenceTabRegistration[]; + entitySettings: EntitySettingRegistration[]; + statusBarItems: StatusBarRegistration[]; + kubeObjectDetailItems: KubeObjectDetailRegistration[]; + kubeObjectMenuItems: KubeObjectMenuRegistration[]; + kubeWorkloadsOverviewItems: WorkloadsOverviewDetailRegistration[]; + commands: CommandRegistration[]; + welcomeMenus: WelcomeMenuRegistration[]; + welcomeBanners: WelcomeBannerRegistration[]; + catalogEntityDetailItems: CatalogEntityDetailRegistration[]; + topBarItems: TopBarRegistration[]; + additionalCategoryColumns: AdditionalCategoryColumnRegistration[]; + customCategoryViews: CustomCategoryViewRegistration[]; + kubeObjectHandlers: KubeObjectHandlerRegistration[]; + isEnabledForCluster(cluster: KubernetesCluster): Promise; +} + export class LensRendererExtension extends LensExtension { globalPages: PageRegistration[] = []; clusterPages: PageRegistration[] = []; diff --git a/packages/core/src/features/application-menu/application-menu-in-legacy-extension-api.test.ts b/packages/core/src/features/application-menu/application-menu-in-legacy-extension-api.test.ts index 888f89f251..b8dcf29242 100644 --- a/packages/core/src/features/application-menu/application-menu-in-legacy-extension-api.test.ts +++ b/packages/core/src/features/application-menu/application-menu-in-legacy-extension-api.test.ts @@ -45,8 +45,9 @@ describe("application-menu-in-legacy-extension-api", () => { testExtensionOptions = { id: "some-test-extension", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, mainOptions: { appMenus: [ { @@ -151,8 +152,9 @@ describe("application-menu-in-legacy-extension-api", () => { beforeEach(() => { const testExtensionOptions: FakeExtensionOptions = { id: "some-test-extension", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, mainOptions: { appMenus: [ { diff --git a/packages/core/src/features/catalog/custom-columns.test.tsx b/packages/core/src/features/catalog/custom-columns.test.tsx index 19c2bf83dc..ddfd17b047 100644 --- a/packages/core/src/features/catalog/custom-columns.test.tsx +++ b/packages/core/src/features/catalog/custom-columns.test.tsx @@ -103,7 +103,9 @@ describe("custom category columns for catalog", () => { beforeEach(() => { builder.extensions.enable({ id: "some-id", - name: "some-name", + manifest: { + name: "some-name", + }, rendererOptions: { additionalCategoryColumns: [ { diff --git a/packages/core/src/features/cluster/extension-api/disable-cluster-pages-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/extension-api/disable-cluster-pages-when-cluster-is-not-relevant.test.tsx index fcd5044639..9c5375d741 100644 --- a/packages/core/src/features/cluster/extension-api/disable-cluster-pages-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/extension-api/disable-cluster-pages-when-cluster-is-not-relevant.test.tsx @@ -24,10 +24,13 @@ describe("disable-cluster-pages-when-cluster-is-not-relevant", () => { isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -37,11 +40,7 @@ describe("disable-cluster-pages-when-cluster-is-not-relevant", () => { }, }], }, - }; - - rendered = await builder.render(); - - builder.extensions.enable(testExtension); + }); rendererTestExtension = builder.extensions.get("test-extension-id").applicationWindows.only; diff --git a/packages/core/src/features/cluster/extension-api/disable-sidebar-items-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/extension-api/disable-sidebar-items-when-cluster-is-not-relevant.test.tsx index efc16c8ef2..bd90821fd6 100644 --- a/packages/core/src/features/cluster/extension-api/disable-sidebar-items-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/extension-api/disable-sidebar-items-when-cluster-is-not-relevant.test.tsx @@ -22,10 +22,13 @@ describe("disable sidebar items when cluster is not relevant", () => { isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -46,11 +49,7 @@ describe("disable sidebar items when cluster is not relevant", () => { }, ], }, - }; - - rendered = await builder.render(); - - builder.extensions.enable(testExtension); + }); }); describe("given not yet known if extension should be enabled for the cluster", () => { diff --git a/packages/core/src/features/cluster/extension-api/reactively-disable-cluster-pages.test.tsx b/packages/core/src/features/cluster/extension-api/reactively-disable-cluster-pages.test.tsx index 57dc83d810..08d9bbcd19 100644 --- a/packages/core/src/features/cluster/extension-api/reactively-disable-cluster-pages.test.tsx +++ b/packages/core/src/features/cluster/extension-api/reactively-disable-cluster-pages.test.tsx @@ -23,10 +23,13 @@ describe("reactively disable cluster pages", () => { someObservable = observable.box(false); - const testExtensionOptions = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { clusterPages: [{ components: { @@ -36,11 +39,7 @@ describe("reactively disable cluster pages", () => { enabled: computed(() => someObservable.get()), }], }, - }; - - rendered = await builder.render(); - - builder.extensions.enable(testExtensionOptions); + }); testExtensionInstance = builder.extensions.get("test-extension-id").applicationWindows.only; diff --git a/packages/core/src/features/cluster/kube-object-details/extension-api/disable-kube-object-detail-items-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/kube-object-details/extension-api/disable-kube-object-detail-items-when-cluster-is-not-relevant.test.tsx index 3804ea7046..da4dad7f15 100644 --- a/packages/core/src/features/cluster/kube-object-details/extension-api/disable-kube-object-detail-items-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/kube-object-details/extension-api/disable-kube-object-detail-items-when-cluster-is-not-relevant.test.tsx @@ -42,10 +42,18 @@ describe("disable kube object detail items when cluster is not relevant", () => isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + const showDetails = windowDi.inject(showDetailsInjectable); + + showDetails("/apis/some-api-version/namespaces/some-namespace/some-kind/some-name"); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -63,16 +71,7 @@ describe("disable kube object detail items when cluster is not relevant", () => }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - const showDetails = windowDi.inject(showDetailsInjectable); - - showDetails("/apis/some-api-version/namespaces/some-namespace/some-kind/some-name"); - - builder.extensions.enable(testExtension); + }); }); describe("given not yet known if extension should be enabled for the cluster", () => { diff --git a/packages/core/src/features/cluster/kube-object-details/extension-api/reactively-hide-kube-object-detail-item.test.tsx b/packages/core/src/features/cluster/kube-object-details/extension-api/reactively-hide-kube-object-detail-item.test.tsx index 847ad3ed11..50775c25dd 100644 --- a/packages/core/src/features/cluster/kube-object-details/extension-api/reactively-hide-kube-object-detail-item.test.tsx +++ b/packages/core/src/features/cluster/kube-object-details/extension-api/reactively-hide-kube-object-detail-item.test.tsx @@ -41,10 +41,18 @@ describe("reactively hide kube object detail item", () => { someObservable = observable.box(false); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + const showDetails = windowDi.inject(showDetailsInjectable); + + showDetails("/apis/some-api-version/namespaces/some-namespace/some-kind/some-name"); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { kubeObjectDetailItems: [ { @@ -63,16 +71,7 @@ describe("reactively hide kube object detail item", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - const showDetails = windowDi.inject(showDetailsInjectable); - - showDetails("/apis/some-api-version/namespaces/some-namespace/some-kind/some-name"); - - builder.extensions.enable(testExtension); + }); }); it("renders", () => { diff --git a/packages/core/src/features/cluster/kube-object-menu/extension-api/disable-kube-object-menu-items-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/kube-object-menu/extension-api/disable-kube-object-menu-items-when-cluster-is-not-relevant.test.tsx index f7dff90f24..850c9d0291 100644 --- a/packages/core/src/features/cluster/kube-object-menu/extension-api/disable-kube-object-menu-items-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/kube-object-menu/extension-api/disable-kube-object-menu-items-when-cluster-is-not-relevant.test.tsx @@ -37,10 +37,20 @@ describe("disable kube object menu items when cluster is not relevant", () => { isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); + const testRoute = windowDi.inject(testRouteInjectable); + + navigateToRoute(testRoute); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -56,18 +66,7 @@ describe("disable kube object menu items when cluster is not relevant", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); - const testRoute = windowDi.inject(testRouteInjectable); - - navigateToRoute(testRoute); - - builder.extensions.enable(testExtension); + }); }); describe("given not yet known if extension should be enabled for the cluster", () => { diff --git a/packages/core/src/features/cluster/kube-object-menu/extension-api/reactively-hide-kube-object-menu-item.test.tsx b/packages/core/src/features/cluster/kube-object-menu/extension-api/reactively-hide-kube-object-menu-item.test.tsx index be8cc96ed9..a4be9f64d1 100644 --- a/packages/core/src/features/cluster/kube-object-menu/extension-api/reactively-hide-kube-object-menu-item.test.tsx +++ b/packages/core/src/features/cluster/kube-object-menu/extension-api/reactively-hide-kube-object-menu-item.test.tsx @@ -33,10 +33,20 @@ describe("reactively hide kube object menu item", () => { someObservable = observable.box(false); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); + const testRoute = windowDi.inject(testRouteInjectable); + + navigateToRoute(testRoute); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { kubeObjectMenuItems: [ { @@ -52,18 +62,7 @@ describe("reactively hide kube object menu item", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); - const testRoute = windowDi.inject(testRouteInjectable); - - navigateToRoute(testRoute); - - builder.extensions.enable(testExtension); + }); }); it("does not show the kube object menu item", () => { diff --git a/packages/core/src/features/cluster/kube-object-status-icon/extension-api/disable-kube-object-statuses-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/kube-object-status-icon/extension-api/disable-kube-object-statuses-when-cluster-is-not-relevant.test.tsx index 49fae34daf..8820c1a504 100644 --- a/packages/core/src/features/cluster/kube-object-status-icon/extension-api/disable-kube-object-statuses-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/kube-object-status-icon/extension-api/disable-kube-object-statuses-when-cluster-is-not-relevant.test.tsx @@ -38,10 +38,20 @@ describe("disable kube object statuses when cluster is not relevant", () => { isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); + const testRoute = windowDi.inject(testRouteInjectable); + + navigateToRoute(testRoute); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -57,18 +67,7 @@ describe("disable kube object statuses when cluster is not relevant", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); - const testRoute = windowDi.inject(testRouteInjectable); - - navigateToRoute(testRoute); - - builder.extensions.enable(testExtension); + }); }); describe("given not yet known if extension should be enabled for the cluster", () => { diff --git a/packages/core/src/features/cluster/kube-object-status-icon/extension-api/reactively-hide-kube-object-status.test.tsx b/packages/core/src/features/cluster/kube-object-status-icon/extension-api/reactively-hide-kube-object-status.test.tsx index aebc03a0f4..06e6e8c68f 100644 --- a/packages/core/src/features/cluster/kube-object-status-icon/extension-api/reactively-hide-kube-object-status.test.tsx +++ b/packages/core/src/features/cluster/kube-object-status-icon/extension-api/reactively-hide-kube-object-status.test.tsx @@ -34,10 +34,20 @@ describe("reactively hide kube object status", () => { someObservable = observable.box(false); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); + const testRoute = windowDi.inject(testRouteInjectable); + + navigateToRoute(testRoute); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { kubeObjectStatusTexts: [ { @@ -53,18 +63,7 @@ describe("reactively hide kube object status", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToRoute = windowDi.inject(navigateToRouteInjectionToken); - const testRoute = windowDi.inject(testRouteInjectable); - - navigateToRoute(testRoute); - - builder.extensions.enable(testExtension); + }); }); it("does not show the kube object status", () => { diff --git a/packages/core/src/features/cluster/legacy-extension-adding-cluster-frame-components.test.tsx b/packages/core/src/features/cluster/legacy-extension-adding-cluster-frame-components.test.tsx index f837550f7a..05689bdefb 100644 --- a/packages/core/src/features/cluster/legacy-extension-adding-cluster-frame-components.test.tsx +++ b/packages/core/src/features/cluster/legacy-extension-adding-cluster-frame-components.test.tsx @@ -25,10 +25,12 @@ describe("legacy extension adding cluster frame components", () => { beforeEach(async () => { someObservable = observable.box(false); - const testExtension = { + rendered = await builder.render(); + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, rendererOptions: { clusterFrameComponents: [ { @@ -43,10 +45,7 @@ describe("legacy extension adding cluster frame components", () => { }, ], }, - }; - - rendered = await builder.render(); - builder.extensions.enable(testExtension); + }); }); it("renders", () => { diff --git a/packages/core/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx b/packages/core/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx index 50b022166a..c75820bce7 100644 --- a/packages/core/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx +++ b/packages/core/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx @@ -50,10 +50,11 @@ describe("cluster - sidebar and tab navigation for extensions", () => { beforeEach(() => { someObservable = observable.box(false); - const testExtension = { + applicationBuilder.extensions.enable({ id: "some-extension-id", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, rendererOptions: { clusterPages: [ { @@ -124,9 +125,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { }, ], }, - }; - - applicationBuilder.extensions.enable(testExtension); + }); }); describe("given no state for expanded sidebar items exists, and navigated to child sidebar item, when rendered", () => { @@ -458,10 +457,11 @@ describe("cluster - sidebar and tab navigation for extensions", () => { beforeEach(() => { someObservable = observable.box(false); - const testExtension = { + applicationBuilder.extensions.enable({ id: "some-extension-id", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, rendererOptions: { clusterPages: [ { @@ -526,9 +526,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { }, ] as ClusterPageMenuRegistration[], }, - }; - - applicationBuilder.extensions.enable(testExtension); + }); }); describe("given no state for expanded sidebar items exists, and navigated to child sidebar item, when rendered", () => { diff --git a/packages/core/src/features/cluster/workloads/overview/extension-api/disable-workloads-overview-details-when-cluster-is-not-relevant.test.tsx b/packages/core/src/features/cluster/workloads/overview/extension-api/disable-workloads-overview-details-when-cluster-is-not-relevant.test.tsx index e40b7361fb..1f93f23739 100644 --- a/packages/core/src/features/cluster/workloads/overview/extension-api/disable-workloads-overview-details-when-cluster-is-not-relevant.test.tsx +++ b/packages/core/src/features/cluster/workloads/overview/extension-api/disable-workloads-overview-details-when-cluster-is-not-relevant.test.tsx @@ -25,10 +25,21 @@ describe("disable workloads overview details when cluster is not relevant", () = isEnabledForClusterMock = asyncFn(); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToWorkloadsOverview = windowDi.inject( + navigateToWorkloadsOverviewInjectable, + ); + + navigateToWorkloadsOverview(); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { isEnabledForCluster: isEnabledForClusterMock, @@ -42,19 +53,7 @@ describe("disable workloads overview details when cluster is not relevant", () = }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToWorkloadsOverview = windowDi.inject( - navigateToWorkloadsOverviewInjectable, - ); - - navigateToWorkloadsOverview(); - - builder.extensions.enable(testExtension); + }); }); describe("given not yet known if extension should be enabled for the cluster", () => { diff --git a/packages/core/src/features/cluster/workloads/overview/extension-api/order-of-workload-overview-details.test.tsx b/packages/core/src/features/cluster/workloads/overview/extension-api/order-of-workload-overview-details.test.tsx index 620b2cabb1..5d752fcf7d 100644 --- a/packages/core/src/features/cluster/workloads/overview/extension-api/order-of-workload-overview-details.test.tsx +++ b/packages/core/src/features/cluster/workloads/overview/extension-api/order-of-workload-overview-details.test.tsx @@ -33,10 +33,11 @@ describe("order of workload overview details", () => { rendered = await builder.render(); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, rendererOptions: { kubeWorkloadsOverviewItems: [ { @@ -73,9 +74,7 @@ describe("order of workload overview details", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); }); it("shows items in correct order", () => { diff --git a/packages/core/src/features/cluster/workloads/overview/extension-api/reactively-hide-workloads-overview-details-item.test.tsx b/packages/core/src/features/cluster/workloads/overview/extension-api/reactively-hide-workloads-overview-details-item.test.tsx index fbc8ceebca..6ca5260a9b 100644 --- a/packages/core/src/features/cluster/workloads/overview/extension-api/reactively-hide-workloads-overview-details-item.test.tsx +++ b/packages/core/src/features/cluster/workloads/overview/extension-api/reactively-hide-workloads-overview-details-item.test.tsx @@ -22,10 +22,21 @@ describe("reactively hide workloads overview details item", () => { someObservable = observable.box(false); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + const windowDi = builder.applicationWindow.only.di; + + const navigateToWorkloadsOverview = windowDi.inject( + navigateToWorkloadsOverviewInjectable, + ); + + navigateToWorkloadsOverview(); + + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { kubeWorkloadsOverviewItems: [ { @@ -39,19 +50,7 @@ describe("reactively hide workloads overview details item", () => { }, ], }, - }; - - rendered = await builder.render(); - - const windowDi = builder.applicationWindow.only.di; - - const navigateToWorkloadsOverview = windowDi.inject( - navigateToWorkloadsOverviewInjectable, - ); - - navigateToWorkloadsOverview(); - - builder.extensions.enable(testExtension); + }); }); it("does not show the workload overview detail item", () => { diff --git a/packages/core/src/features/extension-special-characters-in-page-registrations.test.tsx b/packages/core/src/features/extension-special-characters-in-page-registrations.test.tsx index ac038a5743..6f614c5e4b 100644 --- a/packages/core/src/features/extension-special-characters-in-page-registrations.test.tsx +++ b/packages/core/src/features/extension-special-characters-in-page-registrations.test.tsx @@ -51,8 +51,9 @@ describe("extension special characters in page registrations", () => { const extensionWithPagesHavingSpecialCharacters: FakeExtensionOptions = { id: "some-extension-id", - name: "@some-extension-name/", - + manifest: { + name: "@some-extension-name/", + }, rendererOptions: { globalPages: [ { diff --git a/packages/core/src/features/navigate-to-extension-page.test.tsx b/packages/core/src/features/navigate-to-extension-page.test.tsx index 24f5ec729b..1b756fa9ce 100644 --- a/packages/core/src/features/navigate-to-extension-page.test.tsx +++ b/packages/core/src/features/navigate-to-extension-page.test.tsx @@ -125,8 +125,9 @@ describe("navigate to extension page", () => { const extensionWithPagesHavingParameters: FakeExtensionOptions = { id: "some-extension-id", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, rendererOptions: { globalPages: [ { diff --git a/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx b/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx index a68f39f547..4272c7ef05 100644 --- a/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx +++ b/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx @@ -32,10 +32,11 @@ describe("preferences: extension adding preference tabs", () => { someObservable = observable.box(false); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, rendererOptions: { appPreferenceTabs: [ { @@ -89,9 +90,7 @@ describe("preferences: extension adding preference tabs", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); }); it("renders", () => { diff --git a/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx index 1176bc984c..ecf1752788 100644 --- a/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx @@ -9,7 +9,6 @@ import { getApplicationBuilder } from "../../renderer/components/test-utils/get- import navigateToProxyPreferencesInjectable from "./common/navigate-to-proxy-preferences.injectable"; import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake"; describe("preferences - navigation to application preferences", () => { let builder: ApplicationBuilder; @@ -47,9 +46,26 @@ describe("preferences - navigation to application preferences", () => { describe("when extension with application preference items gets enabled", () => { beforeEach(() => { - builder.extensions.enable( - extensionStubWithApplicationPreferenceItems, - ); + builder.extensions.enable({ + id: "some-test-extension-id", + manifest: { + name: "some-test-extension-name", + }, + rendererOptions: { + appPreferences: [ + { + title: "Some application-preference item", + id: "some-application-preference-item-id", + showInPreferencesTab: "application", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + ], + }, + }); }); it("renders", () => { @@ -133,23 +149,3 @@ describe("preferences - navigation to application preferences", () => { }); }); }); - -const extensionStubWithApplicationPreferenceItems: FakeExtensionOptions = { - id: "some-test-extension-id", - name: "some-test-extension-name", - - rendererOptions: { - appPreferences: [ - { - title: "Some application-preference item", - id: "some-application-preference-item-id", - showInPreferencesTab: "application", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - ], - }, -}; diff --git a/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx index 4480871986..de71c5f4f3 100644 --- a/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx @@ -335,8 +335,9 @@ describe("preferences - navigation to extension specific preferences", () => { const extensionStubWithExtensionSpecificPreferenceItems: FakeExtensionOptions = { id: "some-test-extension-id", - name: "some-test-extension-id", - + manifest: { + name: "some-test-extension-id", + }, rendererOptions: { appPreferences: [ { @@ -365,8 +366,9 @@ const extensionStubWithExtensionSpecificPreferenceItems: FakeExtensionOptions = const someOtherExtensionStubWithExtensionSpecificPreferenceItems: FakeExtensionOptions = { id: "some-other-test-extension-id", - name: "some-other-test-extension-id", - + manifest: { + name: "some-other-test-extension-id", + }, rendererOptions: { appPreferences: [ { @@ -384,13 +386,16 @@ const someOtherExtensionStubWithExtensionSpecificPreferenceItems: FakeExtensionO const extensionStubWithoutPreferences: FakeExtensionOptions = { id: "without-preferences-id", - name: "without-preferences-id", + manifest: { + name: "without-preferences-id", + }, }; const extensionStubWithShowInPreferencesTab: FakeExtensionOptions = { id: "specified-preferences-page-id", - name: "specified-preferences-page-name", - + manifest: { + name: "specified-preferences-page-name", + }, rendererOptions: { appPreferences: [ { @@ -409,8 +414,9 @@ const extensionStubWithShowInPreferencesTab: FakeExtensionOptions = { const extensionStubWithRegisteredTab: FakeExtensionOptions = { id: "registered-tab-page-id", - name: "registered-tab-page-id", - + manifest: { + name: "registered-tab-page-id", + }, rendererOptions: { appPreferences: [ { @@ -455,8 +461,9 @@ const extensionStubWithRegisteredTab: FakeExtensionOptions = { const extensionStubWithSameRegisteredTab: FakeExtensionOptions = { id: "duplicated-tab-page-id", - name: "duplicated-tab-page-id", - + manifest: { + name: "duplicated-tab-page-id", + }, rendererOptions: { appPreferences: [ { diff --git a/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx index 71d6900f6e..e657bd65cb 100644 --- a/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx @@ -8,7 +8,6 @@ import type { ApplicationBuilder } from "../../renderer/components/test-utils/ge import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import navigateToTelemetryPreferencesInjectable from "./common/navigate-to-telemetry-preferences.injectable"; import sentryDataSourceNameInjectable from "../../common/vars/sentry-dsn-url.injectable"; -import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake"; import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; @@ -57,9 +56,26 @@ describe("preferences - navigation to telemetry preferences", () => { describe("when extension with telemetry preference items gets enabled", () => { beforeEach(() => { - builder.extensions.enable( - extensionStubWithTelemetryPreferenceItems, - ); + builder.extensions.enable({ + id: "some-test-extension-id", + manifest: { + name: "some-test-extension-name", + }, + rendererOptions: { + appPreferences: [ + { + title: "Some telemetry-preference item", + id: "some-telemetry-preference-item-id", + showInPreferencesTab: "telemetry", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + ], + }, + }); }); it("renders", () => { @@ -107,8 +123,9 @@ describe("preferences - navigation to telemetry preferences", () => { it("given extensions but no telemetry preference items, does not show link for telemetry preferences", () => { builder.extensions.enable({ id: "some-test-extension-id", - name: "some-test-extension-name", - + manifest: { + name: "some-test-extension-name", + }, rendererOptions: { appPreferenceTabs: [ { @@ -205,23 +222,3 @@ describe("preferences - navigation to telemetry preferences", () => { }); }); }); - -const extensionStubWithTelemetryPreferenceItems: FakeExtensionOptions = { - id: "some-test-extension-id", - name: "some-test-extension-name", - - rendererOptions: { - appPreferences: [ - { - title: "Some telemetry-preference item", - id: "some-telemetry-preference-item-id", - showInPreferencesTab: "telemetry", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - ], - }, -}; diff --git a/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx b/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx index 1eba04c683..a85f1d6269 100644 --- a/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx +++ b/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx @@ -28,10 +28,11 @@ describe("preferences: URLs of legacy extensions", () => { discover = discoverFor(() => rendered); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, rendererOptions: { appPreferenceTabs: [ { @@ -71,9 +72,7 @@ describe("preferences: URLs of legacy extensions", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); navigate = builder.applicationWindow.only.di.inject(navigateInjectable); }); @@ -143,10 +142,11 @@ describe("preferences: URLs of legacy extensions", () => { discover = discoverFor(() => rendered); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, rendererOptions: { appPreferences: [ { @@ -160,9 +160,7 @@ describe("preferences: URLs of legacy extensions", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); navigate = builder.applicationWindow.only.di.inject(navigateInjectable); }); @@ -203,10 +201,11 @@ describe("preferences: URLs of legacy extensions", () => { discover = discoverFor(() => rendered); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, rendererOptions: { appPreferenceTabs: [ { @@ -256,9 +255,7 @@ describe("preferences: URLs of legacy extensions", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); navigate = builder.applicationWindow.only.di.inject(navigateInjectable); }); diff --git a/packages/core/src/features/routes/extension-api/reactively-disable-global-pages.test.tsx b/packages/core/src/features/routes/extension-api/reactively-disable-global-pages.test.tsx index deb4015480..cdb03e60c8 100644 --- a/packages/core/src/features/routes/extension-api/reactively-disable-global-pages.test.tsx +++ b/packages/core/src/features/routes/extension-api/reactively-disable-global-pages.test.tsx @@ -21,10 +21,13 @@ describe("reactively disable global pages", () => { someObservable = observable.box(false); - const testExtension = { - id: "test-extension-id", - name: "test-extension", + rendered = await builder.render(); + builder.extensions.enable({ + id: "test-extension-id", + manifest: { + name: "test-extension", + }, rendererOptions: { globalPages: [{ components: { @@ -34,11 +37,7 @@ describe("reactively disable global pages", () => { enabled: computed(() => someObservable.get()), }], }, - }; - - rendered = await builder.render(); - - builder.extensions.enable(testExtension); + }); rendererTestExtension = builder.extensions.get("test-extension-id").applicationWindows.only; }); diff --git a/packages/core/src/features/status-bar/status-bar-items-originating-from-extensions.test.tsx b/packages/core/src/features/status-bar/status-bar-items-originating-from-extensions.test.tsx index a23ffa2dd1..010673e0f8 100644 --- a/packages/core/src/features/status-bar/status-bar-items-originating-from-extensions.test.tsx +++ b/packages/core/src/features/status-bar/status-bar-items-originating-from-extensions.test.tsx @@ -30,39 +30,40 @@ describe("status-bar-items-originating-from-extensions", () => { }); it("when multiple extensions with status bar items are loaded, shows items in correct order", () => { - const testExtension1 = { - id: "some-id", - name: "some-name", - - rendererOptions: { - statusBarItems: [ - { - components: { - Item: () =>
extension1
, - position: "right" as const, + applicationBuilder.extensions.enable( + { + id: "some-id", + manifest: { + name: "some-name", + }, + rendererOptions: { + statusBarItems: [ + { + components: { + Item: () =>
extension1
, + position: "right" as const, + }, }, - }, - ], + ], + }, }, - }; - - const testExtension2 = { - id: "some-other-id", - name: "some-other-name", - - rendererOptions: { - statusBarItems: [ - { - components: { - Item: () =>
extension2
, - position: "right" as const, + { + id: "some-other-id", + manifest: { + name: "some-other-name", + }, + rendererOptions: { + statusBarItems: [ + { + components: { + Item: () =>
extension2
, + position: "right" as const, + }, }, - }, - ], + ], + }, }, - }; - - applicationBuilder.extensions.enable(testExtension1, testExtension2); + ); const rightSide = rendered.getByTestId("status-bar-right"); @@ -80,8 +81,9 @@ describe("status-bar-items-originating-from-extensions", () => { beforeEach(() => { testExtensionOptions = { id: "some-id", - name: "some-name", - + manifest: { + name: "some-name", + }, rendererOptions: { statusBarItems: [ { diff --git a/packages/core/src/features/top-bar/extension-api/extendability-using-extension-api.test.tsx b/packages/core/src/features/top-bar/extension-api/extendability-using-extension-api.test.tsx index 70a06574a7..8601bb246b 100644 --- a/packages/core/src/features/top-bar/extension-api/extendability-using-extension-api.test.tsx +++ b/packages/core/src/features/top-bar/extension-api/extendability-using-extension-api.test.tsx @@ -33,8 +33,9 @@ describe("extendability-using-extension-api", () => { beforeEach(() => { testExtension = { id: "test-extension", - name: "Test Extension", - + manifest: { + name: "Test Extension", + }, rendererOptions: { topBarItems: [ { @@ -78,8 +79,9 @@ describe("extendability-using-extension-api", () => { beforeEach(() => { const testExtension: FakeExtensionOptions = { id: "test-extension", - name: "Test Extension", - + manifest: { + name: "Test Extension", + }, rendererOptions: { topBarItems: [ { diff --git a/packages/core/src/features/tray/clicking-tray-menu-item-originating-from-extension.test.ts b/packages/core/src/features/tray/clicking-tray-menu-item-originating-from-extension.test.ts index 4ba4ecbcd7..851a316c8d 100644 --- a/packages/core/src/features/tray/clicking-tray-menu-item-originating-from-extension.test.ts +++ b/packages/core/src/features/tray/clicking-tray-menu-item-originating-from-extension.test.ts @@ -34,7 +34,9 @@ describe("clicking tray menu item originating from extension", () => { someExtension = { id: "some-extension-id", - name: "some-extension-name", + manifest: { + name: "some-extension-name", + }, mainOptions: { trayMenus: [{ label: "some-label", click: clickMock }], }, diff --git a/packages/core/src/features/tray/extension-adding-tray-items.test.tsx b/packages/core/src/features/tray/extension-adding-tray-items.test.tsx index 2b640be07c..2a5e506d08 100644 --- a/packages/core/src/features/tray/extension-adding-tray-items.test.tsx +++ b/packages/core/src/features/tray/extension-adding-tray-items.test.tsx @@ -26,10 +26,11 @@ describe("preferences: extension adding tray items", () => { someObservableForEnabled = observable.box(false); someObservableLabel = observable.box("Some label"); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, mainOptions: { trayMenus: [ { @@ -80,9 +81,7 @@ describe("preferences: extension adding tray items", () => { }, ], }, - }; - - builder.extensions.enable(testExtension); + }); }); describe("given controlled label", () => { @@ -214,16 +213,15 @@ describe("preferences: extension adding tray items", () => { const computedTrayMenu = computed(() => menuItems); - const testExtension = { + builder.extensions.enable({ id: "some-extension-id", - name: "some-extension", - + manifest: { + name: "some-extension", + }, mainOptions: { trayMenus: computedTrayMenu, }, - }; - - builder.extensions.enable(testExtension); + }); }); it("given item exists, it's shown", () => { diff --git a/packages/core/src/features/tray/multiple-separators-originating-from-extension.test.ts b/packages/core/src/features/tray/multiple-separators-originating-from-extension.test.ts index fd21d78bae..d7450cf8ca 100644 --- a/packages/core/src/features/tray/multiple-separators-originating-from-extension.test.ts +++ b/packages/core/src/features/tray/multiple-separators-originating-from-extension.test.ts @@ -21,17 +21,16 @@ describe("multiple separators originating from extension", () => { }); it("given extension with multiple separators, when extension is enabled, does not throw", () => { - const someExtension = { - id: "some-extension-id", - name: "some-extension", - - mainOptions: { - trayMenus: [{ type: "separator" as const }, { type: "separator" as const } ], - }, - }; - expect(() => { - builder.extensions.enable(someExtension); + builder.extensions.enable({ + id: "some-extension-id", + manifest: { + name: "some-extension", + }, + mainOptions: { + trayMenus: [{ type: "separator" as const }, { type: "separator" as const } ], + }, + }); }).not.toThrow(); }); }); diff --git a/packages/core/src/features/welcome/banners-from-extension.test.tsx b/packages/core/src/features/welcome/banners-from-extension.test.tsx index 5e3a4075b6..68fbafdbf4 100644 --- a/packages/core/src/features/welcome/banners-from-extension.test.tsx +++ b/packages/core/src/features/welcome/banners-from-extension.test.tsx @@ -31,7 +31,9 @@ describe("Banners from extensions", () => { beforeEach(() => { builder.extensions.enable({ id: "some-id", - name: "some-name", + manifest: { + name: "some-name", + }, rendererOptions: { welcomeBanners: [ { @@ -55,7 +57,9 @@ describe("Banners from extensions", () => { beforeEach(() => { builder.extensions.enable({ id: "some-id", - name: "some-name", + manifest: { + name: "some-name", + }, rendererOptions: { welcomeBanners: [ { diff --git a/packages/core/src/features/welcome/setting-welcome-page.test.tsx b/packages/core/src/features/welcome/setting-welcome-page.test.tsx index fc5a0fe4a9..6fa9b9e66b 100644 --- a/packages/core/src/features/welcome/setting-welcome-page.test.tsx +++ b/packages/core/src/features/welcome/setting-welcome-page.test.tsx @@ -32,7 +32,7 @@ describe("setting-welcome-page", () => { windowDi.override(welcomeRouteConfigInjectable, () => "/welcome"); }); - // enable the extension even though the welcomeRoute is not overriden + // enable the extension even though the welcomeRoute is not overridden applicationBuilder.extensions.enable(extensionWithWelcomePage); rendered = await applicationBuilder.render(); @@ -84,8 +84,9 @@ describe("setting-welcome-page", () => { const extensionWithWelcomePage: FakeExtensionOptions = { id: "some-extension-id", - name: "some-extension-name", - + manifest: { + name: "some-extension-name", + }, rendererOptions: { globalPages: [ { diff --git a/packages/core/src/renderer/components/status-bar/status-bar.test.tsx b/packages/core/src/renderer/components/status-bar/status-bar.test.tsx index 82ce2e2852..8ade0268d8 100644 --- a/packages/core/src/renderer/components/status-bar/status-bar.test.tsx +++ b/packages/core/src/renderer/components/status-bar/status-bar.test.tsx @@ -31,8 +31,9 @@ describe("", () => { builder.extensions.enable({ id: "some-id", - name: "some-name", - + manifest: { + name: "some-name", + }, rendererOptions: { statusBarItems, }, @@ -61,7 +62,7 @@ describe("", () => { it("renders items [{item: React.ReactNode}] (4.0.0-rc.1)", async () => { const testId = "testId"; - const text = "heee"; + const text = "help"; builder.beforeWindowStart((windowDi) => { windowDi.override(statusBarItemsInjectable, () => computed(() => ({ @@ -77,7 +78,7 @@ describe("", () => { it("renders items [{item: () => React.ReactNode}] (4.0.0-rc.1+)", async () => { const testId = "testId"; - const text = "heee"; + const text = "help"; statusBarItems.replace([{ item: () => {text}, @@ -117,8 +118,8 @@ describe("", () => { ]); const { getAllByTestId } = await builder.render(); - const elems = getAllByTestId("sortedElem"); - const positions = elems.map(elem => elem.textContent); + const elements = getAllByTestId("sortedElem"); + const positions = elements.map(elem => elem.textContent); expect(positions).toEqual(["left1", "left2", "right2", "right1"]); }); diff --git a/packages/core/src/renderer/components/test-utils/get-application-builder.tsx b/packages/core/src/renderer/components/test-utils/get-application-builder.tsx index 07583351f2..2b123666bb 100644 --- a/packages/core/src/renderer/components/test-utils/get-application-builder.tsx +++ b/packages/core/src/renderer/components/test-utils/get-application-builder.tsx @@ -569,29 +569,16 @@ export const getApplicationBuilder = () => { enable: (...extensions) => { builder.afterWindowStart((windowDi) => { - const rendererExtensionInstances = extensions.map((options) => - getExtensionFakeForRenderer( - windowDi, - options.id, - options.name, - options.rendererOptions || {}, - ), - ); - - rendererExtensionInstances.forEach( - enableExtensionFor(windowDi, rendererExtensionsStateInjectable), - ); + extensions + .map(getExtensionFakeForRenderer) + .forEach(enableExtensionFor(windowDi, rendererExtensionsStateInjectable)); }); builder.afterApplicationStart((mainDi) => { - const mainExtensionInstances = extensions.map((extension) => - getExtensionFakeForMain(mainDi, extension.id, extension.name, extension.mainOptions || {}), - ); - runInAction(() => { - mainExtensionInstances.forEach( - enableExtensionFor(mainDi, mainExtensionsStateInjectable), - ); + extensions + .map(getExtensionFakeForMain) + .forEach(enableExtensionFor(mainDi, mainExtensionsStateInjectable)); }); }); }, diff --git a/packages/core/src/renderer/components/test-utils/get-extension-fake.ts b/packages/core/src/renderer/components/test-utils/get-extension-fake.ts index 41ac5ad869..e97f5e61fa 100644 --- a/packages/core/src/renderer/components/test-utils/get-extension-fake.ts +++ b/packages/core/src/renderer/components/test-utils/get-extension-fake.ts @@ -2,21 +2,26 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ +import type { LensMainExtensionParts } from "../../../extensions/lens-main-extension"; import { LensMainExtension } from "../../../extensions/lens-main-extension"; +import type { LensRendererExtensionParts } from "../../../extensions/lens-renderer-extension"; import { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; -import type { DiContainer } from "@ogre-tools/injectable"; +import type { SetRequired } from "type-fest"; +import type { LensExtensionManifest } from "../../../features/extensions/common/installed-extension"; export class TestExtensionMain extends LensMainExtension {} export class TestExtensionRenderer extends LensRendererExtension {} +type FakeManifest = SetRequired, "name">; + export interface FakeExtensionOptions { id: string; - name: string; - rendererOptions?: Partial; - mainOptions?: Partial; + manifest: FakeManifest; + rendererOptions?: Partial; + mainOptions?: Partial; } -export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial) => ( +export const getExtensionFakeForMain = ({ id, manifest, mainOptions: options = {}}: FakeExtensionOptions) => ( Object.assign( new TestExtensionMain({ id, @@ -25,11 +30,11 @@ export const getExtensionFakeForMain = (di: DiContainer, id: string, name: strin isCompatible: false, isEnabled: false, manifest: { - name, version: "1.0.0", engines: { lens: "^5.5.0", }, + ...manifest, }, manifestPath: "irrelevant", }), @@ -37,7 +42,7 @@ export const getExtensionFakeForMain = (di: DiContainer, id: string, name: strin ) ); -export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: string, options: Partial) => ( +export const getExtensionFakeForRenderer = ({ id, manifest, rendererOptions: options = {}}: FakeExtensionOptions) => ( Object.assign( new TestExtensionRenderer({ id, @@ -46,11 +51,11 @@ export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: s isCompatible: false, isEnabled: false, manifest: { - name, version: "1.0.0", engines: { lens: "^5.5.0", }, + ...manifest, }, manifestPath: "irrelevant", }),