1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Introduce helper for opening and selecting values of select

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-06-06 10:21:43 +03:00
parent e213e2d314
commit 7a83cd0329
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
2 changed files with 36 additions and 2 deletions

View File

@ -233,7 +233,9 @@ class NonInjectedSelect<
Menu: ({ className, ...props }) => ( Menu: ({ className, ...props }) => (
<WrappedMenu <WrappedMenu
{...props} {...props}
className={cssNames(menuClass, this.themeClass, className)} className={cssNames(menuClass, this.themeClass, className, {
[`${inputId}-options`]: !!inputId,
})}
/> />
), ),
}} }}

View File

@ -15,7 +15,7 @@ import { Observer } from "mobx-react";
import subscribeStoresInjectable from "../../kube-watch-api/subscribe-stores.injectable"; import subscribeStoresInjectable from "../../kube-watch-api/subscribe-stores.injectable";
import allowedResourcesInjectable from "../../../common/cluster-store/allowed-resources.injectable"; import allowedResourcesInjectable from "../../../common/cluster-store/allowed-resources.injectable";
import type { RenderResult } from "@testing-library/react"; 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 type { KubeResource } from "../../../common/rbac";
import { Sidebar } from "../layout/sidebar"; import { Sidebar } from "../layout/sidebar";
import type { DiContainer } from "@ogre-tools/injectable"; 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 { overrideChannels } from "../../../test-utils/channel-fakes/override-channels";
import type { TrayMenuItem } from "../../../main/tray/tray-menu-item/tray-menu-item-injection-token"; import type { TrayMenuItem } from "../../../main/tray/tray-menu-item/tray-menu-item-injection-token";
import trayIconPathsInjectable from "../../../main/tray/tray-icon-path.injectable"; 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<void>; type Callback = (dis: DiContainers) => void | Promise<void>;
@ -85,6 +88,11 @@ export interface ApplicationBuilder {
helmCharts: { helmCharts: {
navigate: () => void; navigate: () => void;
}; };
select: {
openMenu: (id: string) => void;
selectOption: (menuId: string, labelText: string) => void;
};
} }
interface DiContainers { interface DiContainers {
@ -433,6 +441,30 @@ export const getApplicationBuilder = () => {
return rendered; return rendered;
}, },
select: {
openMenu: (menuId) => {
const selector = rendered.container.querySelector<HTMLElement>(
`#${menuId}`,
);
assert(selector);
openMenu(selector);
},
selectOption: (menuId, labelText) => {
const menuOptions = rendered.baseElement.querySelector<HTMLElement>(
`.${menuId}-options`,
);
assert(menuOptions);
const option = getByText(menuOptions, labelText);
userEvent.click(option);
},
},
}; };
return builder; return builder;