diff --git a/src/renderer/components/select/select.tsx b/src/renderer/components/select/select.tsx index cd599e6683..d38ff57f3a 100644 --- a/src/renderer/components/select/select.tsx +++ b/src/renderer/components/select/select.tsx @@ -233,7 +233,9 @@ class NonInjectedSelect< Menu: ({ className, ...props }) => ( ), }} diff --git a/src/renderer/components/test-utils/get-application-builder.tsx b/src/renderer/components/test-utils/get-application-builder.tsx index a817d21b71..6a735657a8 100644 --- a/src/renderer/components/test-utils/get-application-builder.tsx +++ b/src/renderer/components/test-utils/get-application-builder.tsx @@ -15,7 +15,7 @@ import { Observer } from "mobx-react"; import subscribeStoresInjectable from "../../kube-watch-api/subscribe-stores.injectable"; import allowedResourcesInjectable from "../../../common/cluster-store/allowed-resources.injectable"; import type { RenderResult } from "@testing-library/react"; -import { fireEvent } from "@testing-library/react"; +import { getByText, fireEvent } from "@testing-library/react"; import type { KubeResource } from "../../../common/rbac"; import { Sidebar } from "../layout/sidebar"; import type { DiContainer } from "@ogre-tools/injectable"; @@ -52,6 +52,9 @@ import { getDiForUnitTesting as getMainDi } from "../../../main/getDiForUnitTest import { overrideChannels } from "../../../test-utils/channel-fakes/override-channels"; import type { TrayMenuItem } from "../../../main/tray/tray-menu-item/tray-menu-item-injection-token"; import trayIconPathsInjectable from "../../../main/tray/tray-icon-path.injectable"; +import assert from "assert"; +import { openMenu } from "react-select-event"; +import userEvent from "@testing-library/user-event"; type Callback = (dis: DiContainers) => void | Promise; @@ -85,6 +88,11 @@ export interface ApplicationBuilder { helmCharts: { navigate: () => void; }; + + select: { + openMenu: (id: string) => void; + selectOption: (menuId: string, labelText: string) => void; + }; } interface DiContainers { @@ -433,6 +441,30 @@ export const getApplicationBuilder = () => { return rendered; }, + + select: { + openMenu: (menuId) => { + const selector = rendered.container.querySelector( + `#${menuId}`, + ); + + assert(selector); + + openMenu(selector); + }, + + selectOption: (menuId, labelText) => { + const menuOptions = rendered.baseElement.querySelector( + `.${menuId}-options`, + ); + + assert(menuOptions); + + const option = getByText(menuOptions, labelText); + + userEvent.click(option); + }, + }, }; return builder;