From b577afb4399fe49d574333b89289546c749ae774 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Tue, 26 Apr 2022 16:02:12 +0300 Subject: [PATCH] tests Signed-off-by: Alex Andreev --- .../__tests__/extensions.test.tsx | 89 +++++++++++++++++++ .../components/+preferences/extensions.tsx | 2 +- 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/renderer/components/+preferences/__tests__/extensions.test.tsx diff --git a/src/renderer/components/+preferences/__tests__/extensions.test.tsx b/src/renderer/components/+preferences/__tests__/extensions.test.tsx new file mode 100644 index 0000000000..61e3c75a9f --- /dev/null +++ b/src/renderer/components/+preferences/__tests__/extensions.test.tsx @@ -0,0 +1,89 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import React from "react"; +import "@testing-library/jest-dom/extend-expect"; +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"; + +describe("", () => { + let di: DiContainer; + let render: DiRender; + + beforeEach(async () => { + di = getDiForUnitTesting({ doGeneralOverrides: true }); + render = renderFor(di); + + di.override(rendererExtensionsInjectable, () => computed(() => [getRendererExtensionFake(extensionWithSpecificPreferenceItems)])); + di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" }))); + }); + + it("renders", () => { + const { container } = render(); + + expect(container).toBeInTheDocument(); + }); + + it("renders proper page title", () => { + const { getByText } = render(); + + expect(getByText("some-test-extension-id settings")).toBeInTheDocument(); + }); + + it("renders relevant preference items", () => { + const { getByTestId } = render(); + + expect(getByTestId(`extension-preference-item-for-some-preference-item-id`)).toBeInTheDocument(); + }); + + it("does not render irrelevant preference items", () => { + const { queryByTestId } = render(); + + expect(queryByTestId(`extension-preference-item-for-some-unrelated-preference-item-id`)).not.toBeInTheDocument(); + }); +}); + +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: () =>
, + }, + }, + ], +}; diff --git a/src/renderer/components/+preferences/extensions.tsx b/src/renderer/components/+preferences/extensions.tsx index 3606a7db81..90c4667a5f 100644 --- a/src/renderer/components/+preferences/extensions.tsx +++ b/src/renderer/components/+preferences/extensions.tsx @@ -47,7 +47,7 @@ export const Extensions = withInjectables( return { preferenceItems: di.inject(extensionsPreferenceItemsInjectable, extensionId), - extensionName: extension.manifest.name, + extensionName: extension?.manifest.name, }; }, },