@octopusdeploy/design-system-components
Version:
The design systems component library.
36 lines (35 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const testing_library_1 = require("@octopusdeploy/testing-library");
const vitest_1 = require("vitest");
const renderComponentTest_1 = require("../../../testing/renderComponentTest");
const SimpleMenu_1 = require("../SimpleMenu");
const useMenuState_1 = require("../useMenuState");
(0, vitest_1.describe)("SimpleMenu", () => {
const firstItem = { type: "button", label: "first", onClick: vitest_1.vi.fn() };
const secondItem = { type: "button", label: "second", onClick: vitest_1.vi.fn() };
const items = [firstItem, secondItem];
(0, vitest_1.test)("first item is initially focused", async () => {
const menu = await renderMenu(items);
await menu.assertIsFocused(firstItem);
});
});
async function renderMenu(items) {
(0, renderComponentTest_1.renderComponentTest)((0, jsx_runtime_1.jsx)(MenuWithButtonTrigger, { items: items }));
await menuInteractions.openMenu();
return menuInteractions;
}
function MenuWithButtonTrigger({ items }) {
const [openMenu, menuState, buttonAriaAttributes] = (0, useMenuState_1.useMenuState)();
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("button", { tabIndex: 0, onClick: openMenu, ...buttonAriaAttributes, children: "Open Menu" }), (0, jsx_runtime_1.jsx)(SimpleMenu_1.SimpleMenu, { menuState: menuState, items: items, accessibleName: "Test menu" })] }));
}
const menuInteractions = {
openMenu: async () => {
await testing_library_1.domQueries.getButton("open menu").click();
},
assertIsFocused: async (item) => {
await testing_library_1.domQueries.getActiveElement().click();
(0, vitest_1.expect)(item.onClick).toHaveBeenCalledTimes(1);
},
};