From f005c395507e468a9f2c91d7feffb5d209e6cb0a Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Fri, 31 Mar 2023 10:56:04 +0300 Subject: [PATCH] Switch to using discovery of html elements from package Signed-off-by: Janne Savolainen --- package-lock.json | 1 + packages/core/package.json | 1 + .../extension-adding-preference-tabs.test.tsx | 4 +- .../hiding-of-empty-branches.test.tsx | 4 +- ...gation-to-application-preferences.test.tsx | 4 +- .../navigation-to-editor-preferences.test.ts | 4 +- ...to-extension-specific-preferences.test.tsx | 4 +- ...vigation-to-kubernetes-preferences.test.ts | 4 +- .../navigation-to-proxy-preferences.test.ts | 4 +- ...vigation-to-telemetry-preferences.test.tsx | 4 +- ...navigation-to-terminal-preferences.test.ts | 4 +- .../navigation-using-application-menu.test.ts | 4 +- .../preferences/navigation-using-tray.test.ts | 4 +- .../urls-of-legacy-extensions.test.tsx | 4 +- .../test-utils/discovery-of-html-elements.ts | 115 ------------------ .../test-utils/get-application-builder.tsx | 2 +- 16 files changed, 27 insertions(+), 140 deletions(-) delete mode 100644 packages/core/src/renderer/components/test-utils/discovery-of-html-elements.ts diff --git a/package-lock.json b/package-lock.json index 2fad4344c0..aa214777e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34424,6 +34424,7 @@ "devDependencies": { "@async-fn/jest": "1.6.4", "@k8slens/messaging-fake-bridge": "^1.0.0-alpha.1", + "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.0", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", diff --git a/packages/core/package.json b/packages/core/package.json index b608493c38..7ec94008ee 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -190,6 +190,7 @@ "devDependencies": { "@async-fn/jest": "1.6.4", "@k8slens/messaging-fake-bridge": "^1.0.0-alpha.1", + "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.0", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", diff --git a/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx b/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx index a68f39f547..4631a6415d 100644 --- a/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx +++ b/packages/core/src/features/preferences/extension-adding-preference-tabs.test.tsx @@ -7,8 +7,8 @@ import type { IObservableValue } from "mobx"; import { runInAction, computed, observable } from "mobx"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; import React from "react"; describe("preferences: extension adding preference tabs", () => { diff --git a/packages/core/src/features/preferences/hiding-of-empty-branches.test.tsx b/packages/core/src/features/preferences/hiding-of-empty-branches.test.tsx index 0bc2d67d24..9e4ef01a5c 100644 --- a/packages/core/src/features/preferences/hiding-of-empty-branches.test.tsx +++ b/packages/core/src/features/preferences/hiding-of-empty-branches.test.tsx @@ -10,8 +10,8 @@ import { runInAction } from "mobx"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { preferenceItemInjectionToken } from "./renderer/preference-items/preference-item-injection-token"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - hiding-of-empty-branches, given in preferences page", () => { let builder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx index bcb4db587d..47673b4637 100644 --- a/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-application-preferences.test.tsx @@ -7,8 +7,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import navigateToProxyPreferencesInjectable from "./common/navigate-to-proxy-preferences.injectable"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake"; describe("preferences - navigation to application preferences", () => { diff --git a/packages/core/src/features/preferences/navigation-to-editor-preferences.test.ts b/packages/core/src/features/preferences/navigation-to-editor-preferences.test.ts index 018a27210a..51f93afa3f 100644 --- a/packages/core/src/features/preferences/navigation-to-editor-preferences.test.ts +++ b/packages/core/src/features/preferences/navigation-to-editor-preferences.test.ts @@ -5,8 +5,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation to editor preferences", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx index 84c8f4e395..e7a04a4b04 100644 --- a/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-extension-specific-preferences.test.tsx @@ -8,8 +8,8 @@ import { getApplicationBuilder } from "../../renderer/components/test-utils/get- import React from "react"; import "@testing-library/jest-dom/extend-expect"; import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; import logErrorInjectable from "../../common/log-error.injectable"; describe("preferences - navigation to extension specific preferences", () => { diff --git a/packages/core/src/features/preferences/navigation-to-kubernetes-preferences.test.ts b/packages/core/src/features/preferences/navigation-to-kubernetes-preferences.test.ts index 15c853d3c3..06c1fda87e 100644 --- a/packages/core/src/features/preferences/navigation-to-kubernetes-preferences.test.ts +++ b/packages/core/src/features/preferences/navigation-to-kubernetes-preferences.test.ts @@ -7,8 +7,8 @@ import type { ApplicationBuilder } from "../../renderer/components/test-utils/ge import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import requestPublicHelmRepositoriesInjectable from "../helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable"; import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation to kubernetes preferences", () => { let builder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-to-proxy-preferences.test.ts b/packages/core/src/features/preferences/navigation-to-proxy-preferences.test.ts index 2372b78187..fa22e15d17 100644 --- a/packages/core/src/features/preferences/navigation-to-proxy-preferences.test.ts +++ b/packages/core/src/features/preferences/navigation-to-proxy-preferences.test.ts @@ -5,8 +5,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation to proxy preferences", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx b/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx index 58d0121a9e..ce8158cc4c 100644 --- a/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx +++ b/packages/core/src/features/preferences/navigation-to-telemetry-preferences.test.tsx @@ -9,8 +9,8 @@ import { getApplicationBuilder } from "../../renderer/components/test-utils/get- import navigateToTelemetryPreferencesInjectable from "./common/navigate-to-telemetry-preferences.injectable"; import sentryDataSourceNameInjectable from "../../common/vars/sentry-dsn-url.injectable"; import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation to telemetry preferences", () => { let builder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-to-terminal-preferences.test.ts b/packages/core/src/features/preferences/navigation-to-terminal-preferences.test.ts index 3023852481..1542659d17 100644 --- a/packages/core/src/features/preferences/navigation-to-terminal-preferences.test.ts +++ b/packages/core/src/features/preferences/navigation-to-terminal-preferences.test.ts @@ -5,8 +5,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation to terminal preferences", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-using-application-menu.test.ts b/packages/core/src/features/preferences/navigation-using-application-menu.test.ts index ae143fe468..020bc25259 100644 --- a/packages/core/src/features/preferences/navigation-using-application-menu.test.ts +++ b/packages/core/src/features/preferences/navigation-using-application-menu.test.ts @@ -6,8 +6,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("preferences - navigation using application menu", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/navigation-using-tray.test.ts b/packages/core/src/features/preferences/navigation-using-tray.test.ts index e48dba482e..63d2bd5290 100644 --- a/packages/core/src/features/preferences/navigation-using-tray.test.ts +++ b/packages/core/src/features/preferences/navigation-using-tray.test.ts @@ -5,8 +5,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; describe("show-about-using-tray", () => { let applicationBuilder: ApplicationBuilder; diff --git a/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx b/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx index 1eba04c683..4b04e5500f 100644 --- a/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx +++ b/packages/core/src/features/preferences/urls-of-legacy-extensions.test.tsx @@ -5,8 +5,8 @@ import type { RenderResult } from "@testing-library/react"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { Discover } from "../../renderer/components/test-utils/discovery-of-html-elements"; -import { discoverFor } from "../../renderer/components/test-utils/discovery-of-html-elements"; +import type { Discover } from "@k8slens/react-testing-library-discovery"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; import React from "react"; import type { Navigate } from "../../renderer/navigation/navigate.injectable"; import navigateInjectable from "../../renderer/navigation/navigate.injectable"; diff --git a/packages/core/src/renderer/components/test-utils/discovery-of-html-elements.ts b/packages/core/src/renderer/components/test-utils/discovery-of-html-elements.ts deleted file mode 100644 index 472199fc60..0000000000 --- a/packages/core/src/renderer/components/test-utils/discovery-of-html-elements.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import type { RenderResult } from "@testing-library/react"; - -type DiscoverySourceTypes = RenderResult | Element; - -export type QuerySingleElement = ( - attributeName: string, - attributeValue?: string -) => { discovered: Element | null } & Discover; - -export type GetSingleElement = ( - attributeName: string, - attributeValue?: string -) => { discovered: Element } & Discover; - -export type QueryAllElements = (attributeName: string) => { - discovered: Element[]; - attributeValues: (string | null)[]; -}; - -export interface Discover { - querySingleElement: QuerySingleElement; - queryAllElements: QueryAllElements; - getSingleElement: GetSingleElement; -} - -export const discoverFor = (getSource: () => DiscoverySourceTypes): Discover => ({ - querySingleElement: querySingleElement(getSource), - queryAllElements: queryAllElements(getSource), - getSingleElement: getSingleElement(getSource), -}); - -export const querySingleElement = - (getSource: () => DiscoverySourceTypes): QuerySingleElement => - (attributeName, attributeValue) => { - const source = getSource(); - - const dataAttribute = `data-${attributeName}-test`; - - const selector = attributeValue - ? `[${dataAttribute}="${attributeValue}"]` - : `[${dataAttribute}]`; - - const discovered = getBaseElement(source).querySelector(selector); - - const nestedDiscover = discoverFor(() => { - if (!discovered) { - throw new Error("Tried to do nested discover using source that does not exist"); - } - - return discovered; - }); - - return { - discovered, - - ...nestedDiscover, - }; - }; - -export const queryAllElements = - (getSource: () => DiscoverySourceTypes): QueryAllElements => - (attributeName) => { - const source = getSource(); - - const dataAttribute = `data-${attributeName}-test`; - - const results = [ - ...getBaseElement(source).querySelectorAll(`[${dataAttribute}]`), - ]; - - return { - discovered: results, - - attributeValues: results.map((result) => - result.getAttribute(dataAttribute), - ), - }; - }; - -export const getSingleElement = - (getSource: () => DiscoverySourceTypes): GetSingleElement => - (attributeName, attributeValue) => { - const dataAttribute = `data-${attributeName}-test`; - - const { discovered, ...nestedDiscover } = querySingleElement(getSource)( - attributeName, - attributeValue, - ); - - if (!discovered) { - const validValues = - queryAllElements(getSource)(attributeName).attributeValues; - - if (attributeValue) { - throw new Error( - `Couldn't find HTML-element with attribute "${dataAttribute}" with value "${attributeValue}". Present values are:\n\n"${validValues.join( - '",\n"', - )}"`, - ); - } - - throw new Error( - `Couldn't find HTML-element with attribute "${dataAttribute}"`, - ); - } - - return { discovered, ...nestedDiscover }; - }; - -const getBaseElement = (source: DiscoverySourceTypes) => - "baseElement" in source ? source.baseElement : source; diff --git a/packages/core/src/renderer/components/test-utils/get-application-builder.tsx b/packages/core/src/renderer/components/test-utils/get-application-builder.tsx index 731c5ba8c7..ce103d7a83 100644 --- a/packages/core/src/renderer/components/test-utils/get-application-builder.tsx +++ b/packages/core/src/renderer/components/test-utils/get-application-builder.tsx @@ -59,7 +59,7 @@ import { Namespace } from "../../../common/k8s-api/endpoints"; import { getOverrideFsWithFakes } from "../../../test-utils/override-fs-with-fakes"; import applicationMenuItemCompositeInjectable from "../../../features/application-menu/main/application-menu-item-composite.injectable"; import { getCompositePaths } from "../../../common/utils/composite/get-composite-paths/get-composite-paths"; -import { discoverFor } from "./discovery-of-html-elements"; +import { discoverFor } from "@k8slens/react-testing-library-discovery"; import { findComposite } from "../../../common/utils/composite/find-composite/find-composite"; import shouldStartHiddenInjectable from "../../../main/electron-app/features/should-start-hidden.injectable"; import fsInjectable from "../../../common/fs/fs.injectable";