@@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react';
2
2
import '@testing-library/jest-dom' ;
3
3
4
4
import { Menu } from '../Menu' ;
5
- import { MenuItem } from '../MenuItem' ;
5
+ import { MenuItem , MenuItemProps } from '../MenuItem' ;
6
6
import { MenuList } from '../MenuList' ;
7
7
import { MenuContent } from '../MenuContent' ;
8
8
@@ -16,6 +16,44 @@ describe('Menu', () => {
16
16
expect ( asFragment ( ) ) . toMatchSnapshot ( ) ;
17
17
} ) ;
18
18
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
+
19
57
describe ( 'with isPlain' , ( ) => {
20
58
test ( 'should render Menu with plain styles applied' , ( ) => {
21
59
render (
0 commit comments