@@ -111,6 +111,48 @@ asyncTest( "handle focus of menu with active item", function() {
111
111
} ) ;
112
112
} ) ;
113
113
114
+ test ( "handle mouseenter on nested menu item" , function ( assert ) {
115
+ assert . expect ( 8 ) ;
116
+ $ . ui . menu . prototype . delay = 1 ;
117
+ var activeItem ,
118
+ done = assert . async ( ) ,
119
+ element = $ ( "#menu2" ) . menu ( ) ;
120
+
121
+ element
122
+ . menu ( "previous" )
123
+ . menu ( "expand" ) ;
124
+
125
+ function checkSubmenus ( ) {
126
+ equal ( element . find ( "ul[aria-expanded='true']" ) . length , 2 , "both submenus expanded" ) ;
127
+ }
128
+ function menumouseenter1 ( ) {
129
+ element . menu ( "expand" ) ;
130
+ setTimeout ( menumouseenter2 , 25 ) ;
131
+ }
132
+ function menumouseenter2 ( ) {
133
+ checkSubmenus ( ) ;
134
+ activeItem = $ ( "#" + element . attr ( "aria-activedescendant" ) ) ;
135
+ assert . hasClasses ( activeItem , "ui-state-active" ) ;
136
+ activeItem . trigger ( "mouseleave" ) ;
137
+ setTimeout ( menumouseenter3 , 25 ) ;
138
+ }
139
+ function menumouseenter3 ( ) {
140
+ checkSubmenus ( ) ;
141
+ assert . lacksClasses ( activeItem , "ui-state-active" ) ;
142
+ activeItem . trigger ( "mouseenter" ) ;
143
+ setTimeout ( menumouseenter4 , 25 ) ;
144
+ }
145
+ function menumouseenter4 ( ) {
146
+ checkSubmenus ( ) ;
147
+ activeItem . parents ( ".ui-menu-item" ) . each ( function ( index , item ) {
148
+ assert . hasClasses ( $ ( item ) . children ( ".ui-menu-item-wrapper" ) , "ui-state-active" ) ;
149
+ } ) ;
150
+ $ . ui . menu . prototype . delay = 300 ;
151
+ done ( ) ;
152
+ }
153
+ setTimeout ( menumouseenter1 , 25 ) ;
154
+ } ) ;
155
+
114
156
asyncTest ( "handle submenu auto collapse: mouseleave, default markup" , function ( ) {
115
157
expect ( 4 ) ;
116
158
$ . ui . menu . prototype . delay = 1 ;
0 commit comments