diff --git a/src/renderer/components/+preferences/__tests__/extensions.test.tsx b/src/renderer/components/+preferences/__tests__/extensions.test.tsx index cc1cd507c9..ffa2917853 100644 --- a/src/renderer/components/+preferences/__tests__/extensions.test.tsx +++ b/src/renderer/components/+preferences/__tests__/extensions.test.tsx @@ -9,11 +9,74 @@ import type { DiContainer } from "@ogre-tools/injectable"; import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; import { type DiRender, renderFor } from "../../test-utils/renderFor"; import { Extensions } from "../extensions"; -import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension"; import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable"; import { computed } from "mobx"; 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: () =>
, + Input: () =>
, + }, + }, + + { + title: "Switch on when app starts", + id: "some-other-preference-item-id", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + + { + title: "irrelevant", + id: "some-unrelated-preference-item-id", + showInPreferencesTab: "some-tab", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + + { + title: "preference for specific tab", + id: "preference-for-tab-item-id", + showInPreferencesTab: "metircs-extension-tab", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + ]; + + this.appPreferenceTabs = [{ + title: "Metrics tab", + id: "metircs-extension-tab", + orderNumber: 100, + }]; + } +} describe("", () => { let di: DiContainer; @@ -23,7 +86,7 @@ describe("", () => { di = getDiForUnitTesting({ doGeneralOverrides: true }); render = renderFor(di); - di.override(rendererExtensionsInjectable, () => computed(() => [getRendererExtensionFake(extensionWithSpecificPreferenceItems)])); + di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension()])); di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" }))); }); @@ -70,55 +133,3 @@ describe("", () => { }); }); -const extensionWithSpecificPreferenceItems: Partial = { - id: "some-test-extension-id", - appPreferences: [ - { - title: "Some preference item", - id: "some-preference-item-id", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - - { - title: "Switch on when app starts", - id: "some-other-preference-item-id", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - - { - title: "irrelevant", - id: "some-unrelated-preference-item-id", - showInPreferencesTab: "some-tab", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - - { - title: "preference for specific tab", - id: "preference-for-tab-item-id", - showInPreferencesTab: "metircs-extension-tab", - - components: { - Hint: () =>
, - Input: () =>
, - }, - }, - ], - - appPreferenceTabs: [{ - title: "Metrics tab", - id: "metircs-extension-tab", - orderNumber: 100, - }], -}; diff --git a/src/renderer/components/+preferences/extensions.tsx b/src/renderer/components/+preferences/extensions.tsx index 22ff381470..736123bdc6 100644 --- a/src/renderer/components/+preferences/extensions.tsx +++ b/src/renderer/components/+preferences/extensions.tsx @@ -45,9 +45,13 @@ export const Extensions = withInjectables( const extensions = di.inject(rendererExtensionsInjectable); const extension = extensions.get().find((extension) => extension.sanitizedExtensionId === extensionId); + if (!extension) { + throw new Error(`Extension ${extensionId} not found`); + } + return { preferenceItems: di.inject(extensionsPreferenceItemsInjectable, pathParameters), - extensionName: extension?.manifest.name, + extensionName: extension.manifest.name, }; }, },