mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix tests failing due to overriding getters
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
84640ce533
commit
c244e9f2b3
@ -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",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<MenuRegistration[]>;
|
||||
trayMenus: TrayMenuRegistration[] | IComputedValue<TrayMenuRegistration[]>;
|
||||
}
|
||||
|
||||
export class LensMainExtension extends LensExtension {
|
||||
appMenus: MenuRegistration[] | IComputedValue<MenuRegistration[]> = [];
|
||||
trayMenus: TrayMenuRegistration[] | IComputedValue<TrayMenuRegistration[]> = [];
|
||||
|
||||
@ -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<CatalogEntity>[];
|
||||
topBarItems: TopBarRegistration[];
|
||||
additionalCategoryColumns: AdditionalCategoryColumnRegistration[];
|
||||
customCategoryViews: CustomCategoryViewRegistration[];
|
||||
kubeObjectHandlers: KubeObjectHandlerRegistration[];
|
||||
isEnabledForCluster(cluster: KubernetesCluster): Promise<boolean>;
|
||||
}
|
||||
|
||||
export class LensRendererExtension extends LensExtension {
|
||||
globalPages: PageRegistration[] = [];
|
||||
clusterPages: PageRegistration[] = [];
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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: () => <div data-testid="some-preference-item-hint" />,
|
||||
Input: () => <div data-testid="some-preference-item-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: () => <div data-testid="some-preference-item-hint" />,
|
||||
Input: () => <div data-testid="some-preference-item-input" />,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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: () => <div data-testid="some-preference-item-hint" />,
|
||||
Input: () => <div data-testid="some-preference-item-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: () => <div data-testid="some-preference-item-hint" />,
|
||||
Input: () => <div data-testid="some-preference-item-input" />,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
@ -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);
|
||||
});
|
||||
|
||||
@ -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;
|
||||
});
|
||||
|
||||
@ -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: () => <div data-testid="some-testId">extension1</div>,
|
||||
position: "right" as const,
|
||||
applicationBuilder.extensions.enable(
|
||||
{
|
||||
id: "some-id",
|
||||
manifest: {
|
||||
name: "some-name",
|
||||
},
|
||||
rendererOptions: {
|
||||
statusBarItems: [
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="some-testId">extension1</div>,
|
||||
position: "right" as const,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const testExtension2 = {
|
||||
id: "some-other-id",
|
||||
name: "some-other-name",
|
||||
|
||||
rendererOptions: {
|
||||
statusBarItems: [
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="some-testId">extension2</div>,
|
||||
position: "right" as const,
|
||||
{
|
||||
id: "some-other-id",
|
||||
manifest: {
|
||||
name: "some-other-name",
|
||||
},
|
||||
rendererOptions: {
|
||||
statusBarItems: [
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="some-testId">extension2</div>,
|
||||
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: [
|
||||
{
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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 }],
|
||||
},
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -31,8 +31,9 @@ describe("<StatusBar />", () => {
|
||||
|
||||
builder.extensions.enable({
|
||||
id: "some-id",
|
||||
name: "some-name",
|
||||
|
||||
manifest: {
|
||||
name: "some-name",
|
||||
},
|
||||
rendererOptions: {
|
||||
statusBarItems,
|
||||
},
|
||||
@ -61,7 +62,7 @@ describe("<StatusBar />", () => {
|
||||
|
||||
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("<StatusBar />", () => {
|
||||
|
||||
it("renders items [{item: () => React.ReactNode}] (4.0.0-rc.1+)", async () => {
|
||||
const testId = "testId";
|
||||
const text = "heee";
|
||||
const text = "help";
|
||||
|
||||
statusBarItems.replace([{
|
||||
item: () => <span data-testid={testId} >{text}</span>,
|
||||
@ -117,8 +118,8 @@ describe("<StatusBar />", () => {
|
||||
]);
|
||||
|
||||
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"]);
|
||||
});
|
||||
|
||||
@ -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));
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@ -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<Partial<LensExtensionManifest>, "name">;
|
||||
|
||||
export interface FakeExtensionOptions {
|
||||
id: string;
|
||||
name: string;
|
||||
rendererOptions?: Partial<LensRendererExtension>;
|
||||
mainOptions?: Partial<LensMainExtension>;
|
||||
manifest: FakeManifest;
|
||||
rendererOptions?: Partial<LensRendererExtensionParts>;
|
||||
mainOptions?: Partial<LensMainExtensionParts>;
|
||||
}
|
||||
|
||||
export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial<LensMainExtension>) => (
|
||||
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<LensRendererExtension>) => (
|
||||
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",
|
||||
}),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user