1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix tests

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-02-23 16:41:17 -05:00
parent 3b65009fb6
commit b79f906ad5
2 changed files with 62 additions and 68 deletions

View File

@ -35,6 +35,15 @@ import type { IComputedValue } from "mobx";
import type { NavigateToRoute } from "../common/front-end-routing/navigate-to-route-injection-token"; import type { NavigateToRoute } from "../common/front-end-routing/navigate-to-route-injection-token";
import type { Route } from "../common/front-end-routing/front-end-route-injection-token"; import type { Route } from "../common/front-end-routing/front-end-route-injection-token";
import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable"; import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable";
import type { InstalledExtension } from "./common-api";
import { Environments, getEnvironmentSpecificLegacyGlobalDiForExtensionApi } from "./as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import catalogCategoryRegistryInjectable from "../common/catalog/category-registry.injectable";
import catalogEntityRegistryInjectable from "../renderer/api/catalog/entity/registry.injectable";
import loggerInjectable from "../common/logger.injectable";
import getExtensionPageParametersInjectable from "../renderer/routes/get-extension-page-parameters.injectable";
import navigateToRouteInjectable from "../renderer/routes/navigate-to-route.injectable";
import routesInjectable from "../renderer/routes/routes.injectable";
import fileSystemProvisionerStoreInjectable from "./extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable";
interface LensRendererExtensionDependencies extends LensExtensionDependencies { interface LensRendererExtensionDependencies extends LensExtensionDependencies {
navigateToRoute: NavigateToRoute; navigateToRoute: NavigateToRoute;
@ -71,6 +80,21 @@ export class LensRendererExtension extends LensExtension {
*/ */
declare protected readonly dependencies: LensRendererExtensionDependencies; declare protected readonly dependencies: LensRendererExtensionDependencies;
constructor(extension: InstalledExtension) {
const di = getEnvironmentSpecificLegacyGlobalDiForExtensionApi(Environments.renderer);
const deps: LensRendererExtensionDependencies = {
categoryRegistry: di.inject(catalogCategoryRegistryInjectable),
entityRegistry: di.inject(catalogEntityRegistryInjectable),
fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable),
getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable),
navigateToRoute: di.inject(navigateToRouteInjectable),
routes: di.inject(routesInjectable),
logger: di.inject(loggerInjectable),
};
super(deps, extension);
}
async navigate(pageId?: string, params: object = {}) { async navigate(pageId?: string, params: object = {}) {
const routes = this.dependencies.routes.get(); const routes = this.dependencies.routes.get();
const targetRegistration = [...this.globalPages, ...this.clusterPages] const targetRegistration = [...this.globalPages, ...this.clusterPages]

View File

@ -2,20 +2,9 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import type { Writable } from "type-fest";
import fileSystemProvisionerStoreInjectable from "../../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable";
import { lensExtensionDependencies } from "../../../extensions/lens-extension";
import { LensMainExtension } from "../../../extensions/lens-main-extension"; import { LensMainExtension } from "../../../extensions/lens-main-extension";
import navigateForExtensionInjectable from "../../../main/start-main-application/lens-window/navigate-for-extension.injectable";
import { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; import { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable";
import getExtensionPageParametersInjectable from "../../routes/get-extension-page-parameters.injectable";
import navigateToRouteInjectable from "../../routes/navigate-to-route.injectable";
import routesInjectable from "../../routes/routes.injectable";
import catalogEntityRegistryForMainInjectable from "../../../main/catalog/entity-registry.injectable";
import catalogEntityRegistryForRendererInjectable from "../../api/catalog/entity/registry.injectable";
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import loggerInjectable from "../../../common/logger.injectable";
export class TestExtensionMain extends LensMainExtension {} export class TestExtensionMain extends LensMainExtension {}
export class TestExtensionRenderer extends LensRendererExtension {} export class TestExtensionRenderer extends LensRendererExtension {}
@ -27,63 +16,44 @@ export interface FakeExtensionOptions {
mainOptions?: Partial<LensMainExtension>; mainOptions?: Partial<LensMainExtension>;
} }
export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial<LensMainExtension>) => { export const getExtensionFakeForMain = (di: DiContainer, id: string, name: string, options: Partial<LensMainExtension>) => (
const instance = new TestExtensionMain({ Object.assign(
id, new TestExtensionMain({
absolutePath: "irrelevant", id,
isBundled: false, absolutePath: "irrelevant",
isCompatible: false, isBundled: false,
isEnabled: false, isCompatible: false,
manifest: { isEnabled: false,
name, manifest: {
version: "1.0.0", name,
engines: { version: "1.0.0",
lens: "^5.5.0", engines: {
lens: "^5.5.0",
},
}, },
}, manifestPath: "irrelevant",
manifestPath: "irrelevant", }),
}); options,
)
);
Object.assign(instance, options); export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: string, options: Partial<LensRendererExtension>) => (
Object.assign(
(instance as Writable<LensMainExtension>)[lensExtensionDependencies] = { new TestExtensionRenderer({
fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable), id,
entityRegistry: di.inject(catalogEntityRegistryForMainInjectable), absolutePath: "irrelevant",
navigate: di.inject(navigateForExtensionInjectable), isBundled: false,
logger: di.inject(loggerInjectable), isCompatible: false,
}; isEnabled: false,
manifest: {
return instance; name,
}; version: "1.0.0",
engines: {
export const getExtensionFakeForRenderer = (di: DiContainer, id: string, name: string, options: Partial<LensRendererExtension>) => { lens: "^5.5.0",
const instance = new TestExtensionRenderer({ },
id,
absolutePath: "irrelevant",
isBundled: false,
isCompatible: false,
isEnabled: false,
manifest: {
name,
version: "1.0.0",
engines: {
lens: "^5.5.0",
}, },
}, manifestPath: "irrelevant",
manifestPath: "irrelevant", }),
}); options,
)
Object.assign(instance, options); );
(instance as Writable<LensRendererExtension>)[lensExtensionDependencies] = {
categoryRegistry: di.inject(catalogCategoryRegistryInjectable),
entityRegistry: di.inject(catalogEntityRegistryForRendererInjectable),
fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable),
getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable),
navigateToRoute: di.inject(navigateToRouteInjectable),
routes: di.inject(routesInjectable),
logger: di.inject(loggerInjectable),
};
return instance;
};