Skip to content

Commit c05fc3e

Browse files
committed
feat: add unit test for Menu
1 parent 25a5218 commit c05fc3e

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

packages/react-core/src/components/Menu/__tests__/Menu.test.tsx

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react';
22
import '@testing-library/jest-dom';
33

44
import { Menu } from '../Menu';
5-
import { MenuItem } from '../MenuItem';
5+
import { MenuItem, MenuItemProps } from '../MenuItem';
66
import { MenuList } from '../MenuList';
77
import { MenuContent } from '../MenuContent';
88

@@ -16,6 +16,44 @@ describe('Menu', () => {
1616
expect(asFragment()).toMatchSnapshot();
1717
});
1818

19+
test('should accept onSelect with various types', () => {
20+
const onSelectMock = jest.fn();
21+
22+
const items: MenuItemProps[] = [
23+
{ itemId: 1, children: 'Item 1', key: 'item1' },
24+
{ itemId: new Date(1), children: 'Item 2', key: 'item2' },
25+
{ itemId: 'item3', children: 'Item 3', key: 'item3' },
26+
{ itemId: { id: 'item4' }, children: 'Item 4', key: 'item4' },
27+
{ itemId: NaN, children: 'Item 5', key: 'item5' },
28+
{ itemId: null, children: 'Item 6', key: 'item6' },
29+
{ itemId: new RegExp('item7'), children: 'Item 7', key: 'item7' },
30+
{ itemId: true, children: 'Item 8', key: 'item8' },
31+
{ itemId: false, children: 'Item 9', key: 'item9' },
32+
{ itemId: Symbol('item10'), children: 'Item 10', key: 'item10' },
33+
{ itemId: '', children: 'Item 11', key: 'item11' }
34+
];
35+
36+
render(
37+
<Menu activeItemId={0} onSelect={onSelectMock}>
38+
<MenuContent>
39+
<MenuList>
40+
{items.map((item) => (
41+
<MenuItem key={item.key} itemId={item.itemId}>
42+
{item.children}
43+
</MenuItem>
44+
))}
45+
</MenuList>
46+
</MenuContent>
47+
</Menu>
48+
);
49+
50+
for (const item of items) {
51+
const menuItem = screen.getByText(item.children as string);
52+
menuItem.click();
53+
expect(onSelectMock).toHaveBeenCalledWith(expect.anything(), item.itemId);
54+
}
55+
});
56+
1957
describe('with isPlain', () => {
2058
test('should render Menu with plain styles applied', () => {
2159
render(

0 commit comments

Comments
 (0)