mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Adjusting <Extension/> and its tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
6def928883
commit
2011c5dc64
@ -9,11 +9,74 @@ import type { DiContainer } from "@ogre-tools/injectable";
|
|||||||
import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
|
||||||
import { type DiRender, renderFor } from "../../test-utils/renderFor";
|
import { type DiRender, renderFor } from "../../test-utils/renderFor";
|
||||||
import { Extensions } from "../extensions";
|
import { Extensions } from "../extensions";
|
||||||
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
|
||||||
import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
|
import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable";
|
import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable";
|
||||||
import { getRendererExtensionFake } from "../../test-utils/get-renderer-extension-fake";
|
import { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
||||||
|
|
||||||
|
class SomeTestExtension extends LensRendererExtension {
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: "some-test-extension-id",
|
||||||
|
absolutePath: "irrelevant",
|
||||||
|
isBundled: false,
|
||||||
|
isCompatible: false,
|
||||||
|
isEnabled: false,
|
||||||
|
manifest: { name: "some-test-extension-id", version: "some-version", engines: { lens: "^5.5.0" }},
|
||||||
|
manifestPath: "irrelevant",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.appPreferences = [
|
||||||
|
{
|
||||||
|
title: "Some preference item",
|
||||||
|
id: "some-preference-item-id",
|
||||||
|
|
||||||
|
components: {
|
||||||
|
Hint: () => <div data-testid="some-preference-item-hint" />,
|
||||||
|
Input: () => <div data-testid="some-preference-item-input" />,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: "Switch on when app starts",
|
||||||
|
id: "some-other-preference-item-id",
|
||||||
|
|
||||||
|
components: {
|
||||||
|
Hint: () => <div data-testid="some-other-preference-item-hint" />,
|
||||||
|
Input: () => <div data-testid="some-other-preference-item-input" />,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: "irrelevant",
|
||||||
|
id: "some-unrelated-preference-item-id",
|
||||||
|
showInPreferencesTab: "some-tab",
|
||||||
|
|
||||||
|
components: {
|
||||||
|
Hint: () => <div />,
|
||||||
|
Input: () => <div />,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: "preference for specific tab",
|
||||||
|
id: "preference-for-tab-item-id",
|
||||||
|
showInPreferencesTab: "metircs-extension-tab",
|
||||||
|
|
||||||
|
components: {
|
||||||
|
Hint: () => <div />,
|
||||||
|
Input: () => <div />,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
this.appPreferenceTabs = [{
|
||||||
|
title: "Metrics tab",
|
||||||
|
id: "metircs-extension-tab",
|
||||||
|
orderNumber: 100,
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
describe("<Extensions/>", () => {
|
describe("<Extensions/>", () => {
|
||||||
let di: DiContainer;
|
let di: DiContainer;
|
||||||
@ -23,7 +86,7 @@ describe("<Extensions/>", () => {
|
|||||||
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
render = renderFor(di);
|
render = renderFor(di);
|
||||||
|
|
||||||
di.override(rendererExtensionsInjectable, () => computed(() => [getRendererExtensionFake(extensionWithSpecificPreferenceItems)]));
|
di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension()]));
|
||||||
di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" })));
|
di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" })));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -70,55 +133,3 @@ describe("<Extensions/>", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const extensionWithSpecificPreferenceItems: Partial<LensRendererExtension> = {
|
|
||||||
id: "some-test-extension-id",
|
|
||||||
appPreferences: [
|
|
||||||
{
|
|
||||||
title: "Some preference item",
|
|
||||||
id: "some-preference-item-id",
|
|
||||||
|
|
||||||
components: {
|
|
||||||
Hint: () => <div data-testid="some-preference-item-hint" />,
|
|
||||||
Input: () => <div data-testid="some-preference-item-input" />,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
title: "Switch on when app starts",
|
|
||||||
id: "some-other-preference-item-id",
|
|
||||||
|
|
||||||
components: {
|
|
||||||
Hint: () => <div data-testid="some-other-preference-item-hint" />,
|
|
||||||
Input: () => <div data-testid="some-other-preference-item-input" />,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
title: "irrelevant",
|
|
||||||
id: "some-unrelated-preference-item-id",
|
|
||||||
showInPreferencesTab: "some-tab",
|
|
||||||
|
|
||||||
components: {
|
|
||||||
Hint: () => <div />,
|
|
||||||
Input: () => <div />,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
title: "preference for specific tab",
|
|
||||||
id: "preference-for-tab-item-id",
|
|
||||||
showInPreferencesTab: "metircs-extension-tab",
|
|
||||||
|
|
||||||
components: {
|
|
||||||
Hint: () => <div />,
|
|
||||||
Input: () => <div />,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
appPreferenceTabs: [{
|
|
||||||
title: "Metrics tab",
|
|
||||||
id: "metircs-extension-tab",
|
|
||||||
orderNumber: 100,
|
|
||||||
}],
|
|
||||||
};
|
|
||||||
|
|||||||
@ -45,9 +45,13 @@ export const Extensions = withInjectables<Dependencies>(
|
|||||||
const extensions = di.inject(rendererExtensionsInjectable);
|
const extensions = di.inject(rendererExtensionsInjectable);
|
||||||
const extension = extensions.get().find((extension) => extension.sanitizedExtensionId === extensionId);
|
const extension = extensions.get().find((extension) => extension.sanitizedExtensionId === extensionId);
|
||||||
|
|
||||||
|
if (!extension) {
|
||||||
|
throw new Error(`Extension ${extensionId} not found`);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
preferenceItems: di.inject(extensionsPreferenceItemsInjectable, pathParameters),
|
preferenceItems: di.inject(extensionsPreferenceItemsInjectable, pathParameters),
|
||||||
extensionName: extension?.manifest.name,
|
extensionName: extension.manifest.name,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user