@@ -39,17 +39,20 @@ describe('Dropdown toggle', () => {
3939 expect ( onToggle ) . toHaveBeenCalledWith ( true ) ;
4040 } ) ;
4141
42- test ( 'Only calls onToggle when dropdown toggle is clicked' , async ( ) => {
42+ test ( 'Does not call onToggle when dropdown toggle is not clicked' , async ( ) => {
4343 const onToggle = jest . fn ( ) ;
4444 const items = [ { content : 'Action' , value : 1 } ] ;
4545 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+ ) ;
4752
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 ( ) ;
5356 } ) ;
5457
5558 test ( 'Calls toggle onSelect when item is clicked' , async ( ) => {
@@ -78,6 +81,44 @@ describe('Dropdown toggle', () => {
7881 expect ( onSelect ) . not . toHaveBeenCalled ( ) ;
7982 } ) ;
8083
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+
81122 test ( 'Matches snapshot' , ( ) => {
82123 const { asFragment } = render ( < DropdownSimple toggleContent = "Dropdown" /> ) ;
83124
@@ -198,12 +239,12 @@ describe('Dropdown items', () => {
198239
199240 test ( 'Matches snapshot' , async ( ) => {
200241 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' }
204245 ] ;
205246 const user = userEvent . setup ( ) ;
206- const { asFragment } = render ( < DropdownSimple initialItems = { items } toggleContent = "Dropdown" /> ) ;
247+ const { asFragment } = render ( < DropdownSimple ouiaId = { 4 } initialItems = { items } toggleContent = "Dropdown" /> ) ;
207248
208249 const toggle = screen . getByRole ( 'button' , { name : 'Dropdown' } ) ;
209250 await user . click ( toggle ) ;
0 commit comments