From ceafd033087d496e71e6f65dc68b73398b8f0648 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Fri, 10 Jun 2022 10:03:51 +0300 Subject: [PATCH] Add tests navigating to extension specific tabs Signed-off-by: Alex Andreev --- ...tension-specific-preferences.test.tsx.snap | 358 ++++++++++++++++++ ...to-extension-specific-preferences.test.tsx | 80 ++++ 2 files changed, 438 insertions(+) diff --git a/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap b/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap index 41e2559b02..01ea490b1b 100644 --- a/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap +++ b/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap @@ -2084,3 +2084,361 @@ exports[`preferences - navigation to extension specific preferences given in pre /> `; + +exports[`preferences - navigation to extension specific preferences when navigating to extension specific tab renders 1`] = ` +
+
+ +
+
+
+

+ duplicated-tab-page-id + + preferences +

+
+
+ Another metrics + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + close + + +
+ +
+
+
+
+
+
+
+`; + +exports[`preferences - navigation to extension specific preferences when navigating to someone else extension specific tab renders 1`] = ` +
+
+ +
+
+
+

+ extension-using-someone-else-tab-id + + preferences +

+
+
+ My preferences + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + close + + +
+ +
+
+
+
+
+
+
+`; diff --git a/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx b/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx index 6619af3965..334e1aec53 100644 --- a/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx +++ b/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx @@ -9,6 +9,9 @@ import React from "react"; import "@testing-library/jest-dom/extend-expect"; import type { FakeExtensionData } from "../../renderer/components/test-utils/get-renderer-extension-fake"; import { getRendererExtensionFakeFor } from "../../renderer/components/test-utils/get-renderer-extension-fake"; +import type { DiContainer } from "@ogre-tools/injectable"; +import { getDiForUnitTesting } from "../../renderer/getDiForUnitTesting"; +import extensionPreferencesRouteInjectable from "../../common/front-end-routing/routes/preferences/extension/extension-preferences-route.injectable"; describe("preferences - navigation to extension specific preferences", () => { let applicationBuilder: ApplicationBuilder; @@ -276,6 +279,65 @@ describe("preferences - navigation to extension specific preferences", () => { }); }); }); + + describe("when navigating to extension specific tab", () => { + let rendered: RenderResult; + let di: DiContainer; + + beforeEach(async () => { + di = getDiForUnitTesting({ doGeneralOverrides: true }); + + const getRendererExtensionFake = getRendererExtensionFakeFor(applicationBuilder); + const extension = getRendererExtensionFake(extensionStubWithWithSameRegisteredTab); + + applicationBuilder.beforeRender(() => { + const extensionRoute = di.inject(extensionPreferencesRouteInjectable); + const params = { parameters: { + extensionId: "duplicated-tab-page-id", + tabId: "metrics-extension-tab", + }}; + + applicationBuilder.preferences.navigateTo(extensionRoute, params); + }); + + await applicationBuilder.addExtensions(extension); + rendered = await applicationBuilder.render(); + }); + + it("renders", () => { + expect(rendered.container).toMatchSnapshot(); + }); + }); + + describe("when navigating to someone else extension specific tab", () => { + let rendered: RenderResult; + let di: DiContainer; + + beforeEach(async () => { + di = getDiForUnitTesting({ doGeneralOverrides: true }); + + const getRendererExtensionFake = getRendererExtensionFakeFor(applicationBuilder); + const extension = getRendererExtensionFake(extensionStubWithWithSameRegisteredTab); + const extensionUsingOtherTab = getRendererExtensionFake(extensionUsingSomeoneElseTab); + + applicationBuilder.beforeRender(() => { + const extensionRoute = di.inject(extensionPreferencesRouteInjectable); + const params = { parameters: { + extensionId: "extension-using-someone-else-tab-id", + tabId: "metrics-extension-tab", + }}; + + applicationBuilder.preferences.navigateTo(extensionRoute, params); + }); + + await applicationBuilder.addExtensions(extension, extensionUsingOtherTab); + rendered = await applicationBuilder.render(); + }); + + it("renders", () => { + expect(rendered.container).toMatchSnapshot(); + }); + }); }); const extensionStubWithExtensionSpecificPreferenceItems: FakeExtensionData = { @@ -450,3 +512,21 @@ const extensionStubWithWithSameRegisteredTab: FakeExtensionData = { orderNumber: 100, }], }; + +const extensionUsingSomeoneElseTab: FakeExtensionData = { + id: "extension-using-someone-else-tab-id", + name: "extension-using-someone-else-tab-id", + + appPreferences: [ + { + title: "My preferences", + id: "my-preferences-item-id", + showInPreferencesTab: "metrics-extension-tab", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + ], +}; \ No newline at end of file