@@ -39,17 +39,20 @@ describe('Dropdown toggle', () => {
39
39
expect ( onToggle ) . toHaveBeenCalledWith ( true ) ;
40
40
} ) ;
41
41
42
- test ( 'Only calls onToggle when dropdown toggle is clicked' , async ( ) => {
42
+ test ( 'Does not call onToggle when dropdown toggle is not clicked' , async ( ) => {
43
43
const onToggle = jest . fn ( ) ;
44
44
const items = [ { content : 'Action' , value : 1 } ] ;
45
45
const user = userEvent . setup ( ) ;
46
- render ( < DropdownSimple initialItems = { items } onToggle = { onToggle } toggleContent = "Dropdown" /> ) ;
46
+ render (
47
+ < div >
48
+ < button > Actual</ button >
49
+ < DropdownSimple initialItems = { items } onToggle = { onToggle } toggleContent = "Dropdown" />
50
+ </ div >
51
+ ) ;
47
52
48
- const toggle = screen . getByRole ( 'button' , { name : 'Dropdown' } ) ;
49
- await user . click ( toggle ) ;
50
- const actionItem = screen . getByRole ( 'menuitem' , { name : 'Action' } ) ;
51
- await user . click ( actionItem ) ;
52
- expect ( onToggle ) . toHaveBeenCalledTimes ( 1 ) ;
53
+ const btn = screen . getByRole ( 'button' , { name : 'Actual' } ) ;
54
+ await user . click ( btn ) ;
55
+ expect ( onToggle ) . not . toHaveBeenCalled ( ) ;
53
56
} ) ;
54
57
55
58
test ( 'Calls toggle onSelect when item is clicked' , async ( ) => {
@@ -78,6 +81,44 @@ describe('Dropdown toggle', () => {
78
81
expect ( onSelect ) . not . toHaveBeenCalled ( ) ;
79
82
} ) ;
80
83
84
+ test ( 'Does not pass isToggleFullWidth to menu toggle by default' , ( ) => {
85
+ render ( < DropdownSimple toggleContent = "Dropdown" /> ) ;
86
+
87
+ expect ( screen . getByRole ( 'button' , { name : 'Dropdown' } ) ) . not . toHaveClass ( styles . modifiers . fullWidth ) ;
88
+ } ) ;
89
+
90
+ test ( 'Passes isToggleFullWidth to menu toggle when passed in' , ( ) => {
91
+ render ( < DropdownSimple isToggleFullWidth toggleContent = "Dropdown" /> ) ;
92
+
93
+ expect ( screen . getByRole ( 'button' , { name : 'Dropdown' } ) ) . toHaveClass ( styles . modifiers . fullWidth ) ;
94
+ } ) ;
95
+
96
+ test ( 'Does not focus toggle on item select by default' , async ( ) => {
97
+ const items = [ { content : 'Action' , value : 1 } ] ;
98
+ const user = userEvent . setup ( ) ;
99
+ render ( < DropdownSimple initialItems = { items } toggleContent = "Dropdown" /> ) ;
100
+
101
+ const toggle = screen . getByRole ( 'button' , { name : 'Dropdown' } ) ;
102
+ await user . click ( toggle ) ;
103
+ const actionItem = screen . getByRole ( 'menuitem' , { name : 'Action' } ) ;
104
+ await user . click ( actionItem ) ;
105
+
106
+ expect ( toggle ) . not . toHaveFocus ( ) ;
107
+ } ) ;
108
+
109
+ test ( 'Focuses toggle on item select when shouldFocusToggleOnSelect is true' , async ( ) => {
110
+ const items = [ { content : 'Action' , value : 1 } ] ;
111
+ const user = userEvent . setup ( ) ;
112
+ render ( < DropdownSimple shouldFocusToggleOnSelect initialItems = { items } toggleContent = "Dropdown" /> ) ;
113
+
114
+ const toggle = screen . getByRole ( 'button' , { name : 'Dropdown' } ) ;
115
+ await user . click ( toggle ) ;
116
+ const actionItem = screen . getByRole ( 'menuitem' , { name : 'Action' } ) ;
117
+ await user . click ( actionItem ) ;
118
+
119
+ expect ( toggle ) . toHaveFocus ( ) ;
120
+ } ) ;
121
+
81
122
test ( 'Matches snapshot' , ( ) => {
82
123
const { asFragment } = render ( < DropdownSimple toggleContent = "Dropdown" /> ) ;
83
124
@@ -198,12 +239,12 @@ describe('Dropdown items', () => {
198
239
199
240
test ( 'Matches snapshot' , async ( ) => {
200
241
const items = [
201
- { content : 'Action' , value : 1 } ,
202
- { value : 'separator' , isDivider : true } ,
203
- { content : 'Link' , value : 'separator' , to : '#' }
242
+ { content : 'Action' , value : 1 , ouiaId : '1' } ,
243
+ { value : 'separator' , isDivider : true , ouiaId : '2' } ,
244
+ { content : 'Link' , value : 'separator' , to : '#' , ouiaId : '3' }
204
245
] ;
205
246
const user = userEvent . setup ( ) ;
206
- const { asFragment } = render ( < DropdownSimple initialItems = { items } toggleContent = "Dropdown" /> ) ;
247
+ const { asFragment } = render ( < DropdownSimple ouiaId = { 4 } initialItems = { items } toggleContent = "Dropdown" /> ) ;
207
248
208
249
const toggle = screen . getByRole ( 'button' , { name : 'Dropdown' } ) ;
209
250
await user . click ( toggle ) ;
0 commit comments