Skip to content

Commit d8062dc

Browse files
committed
Selectmenu: Test cleanup
1 parent fd7e1e3 commit d8062dc

File tree

1 file changed

+61
-50
lines changed

1 file changed

+61
-50
lines changed

tests/unit/selectmenu/selectmenu_core.js

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ asyncTest( "accessibility", function() {
1414
expect( 12 + links.length * 2 );
1515

1616
setTimeout(function() {
17-
equal( button.attr( "role" ), "combobox", "button link role" );
18-
equal( button.attr( "aria-haspopup" ), "true", "button link aria-haspopup" );
19-
equal( button.attr( "aria-expanded" ), "false", "button link aria-expanded" );
20-
equal( button.attr( "aria-autocomplete" ), "list", "button link aria-autocomplete" );
21-
equal( button.attr( "aria-owns" ), menu.attr("id"), "button link aria-owns" );
17+
equal( button.attr( "role" ), "combobox", "button role" );
18+
equal( button.attr( "aria-haspopup" ), "true", "button aria-haspopup" );
19+
equal( button.attr( "aria-expanded" ), "false", "button aria-expanded" );
20+
equal( button.attr( "aria-autocomplete" ), "list", "button aria-autocomplete" );
21+
equal( button.attr( "aria-owns" ), menu.attr( "id" ), "button aria-owns" );
2222
equal(
2323
button.attr( "aria-labelledby" ),
2424
links.eq( element[ 0 ].selectedIndex ).attr( "id" ),
@@ -35,9 +35,10 @@ asyncTest( "accessibility", function() {
3535
links.eq( element[ 0 ].selectedIndex ).attr( "id" ),
3636
"menu aria-activedescendant"
3737
);
38-
$.each( links, function( index ){
39-
equal( $( this ).attr( "role" ), "option", "menu link #" + index +" role" );
40-
equal( $( this ).attr( "tabindex" ), -1, "menu link #" + index +" tabindex" );
38+
$.each( links, function( index ) {
39+
var link = $( this );
40+
equal( link.attr( "role" ), "option", "menu link #" + index +" role" );
41+
equal( link.attr( "tabindex" ), -1, "menu link #" + index +" tabindex" );
4142
});
4243
start();
4344
});
@@ -54,18 +55,21 @@ $.each([
5455
selector: "#files"
5556
}
5657
], function( i, settings ) {
57-
asyncTest( "state synchronization - after keydown on button - " + settings.type, function () {
58+
asyncTest( "state synchronization - after keydown on button - " + settings.type, function() {
5859
expect( 4 );
5960

6061
var links,
6162
element = $( settings.selector ).selectmenu(),
6263
button = element.selectmenu( "widget" ),
6364
menu = element.selectmenu( "menuWidget" ),
64-
selected = element.find( "option:selected" );
65+
66+
// Get the option after the currently selected option because
67+
// we simulate pressing DOWN.
68+
selected = element.find( "option:selected" ).next();
6569

6670
button.simulate( "focus" );
6771
setTimeout(function() {
68-
links = menu.find("li.ui-menu-item");
72+
links = menu.find( "li.ui-menu-item" );
6973

7074
button.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
7175
equal(
@@ -80,25 +84,26 @@ $.each([
8084
);
8185
equal(
8286
element.find( "option:selected" ).val(),
83-
selected.next( "option" ).val() ,
87+
selected.val() ,
8488
"original select state"
8589
);
86-
equal( button.text(), selected.next( "option" ).text(), "button text" );
90+
equal( button.text(), selected.text(), "button text" );
8791
start();
88-
}, 1 );
92+
});
8993
});
9094

91-
asyncTest( "state synchronization - after click on item - " + settings.type, function () {
95+
asyncTest( "state synchronization - after click on item - " + settings.type, function() {
9296
expect( 4 );
9397

9498
var links,
9599
element = $( settings.selector ).selectmenu(),
96100
button = element.selectmenu( "widget" ),
97-
menu = element.selectmenu( "menuWidget" );
101+
menu = element.selectmenu( "menuWidget" ),
102+
selected = element.find( "option" ).last();
98103

99104
button.simulate( "focus" );
100105
setTimeout(function() {
101-
links = menu.find("li.ui-menu-item");
106+
links = menu.find( "li.ui-menu-item" );
102107

103108
button.trigger( "click" );
104109
menu.find( "li" ).last().simulate( "mouseover" ).trigger( "click" );
@@ -114,15 +119,16 @@ $.each([
114119
);
115120
equal(
116121
element.find( "option:selected" ).val(),
117-
element.find( "option" ).last().val(),
122+
selected.val(),
118123
"original select state"
119124
);
120-
equal( button.text(), element.find( "option" ).last().text(), "button text" );
125+
equal( button.text(), selected.text(), "button text" );
121126
start();
122127
}, 1 );
123128
});
124129

125-
asyncTest( "state synchronization - after focus item and keydown on button - " + settings.type, function () {
130+
asyncTest( "state synchronization - " +
131+
"after focus item and keydown on button - " + settings.type, function() {
126132
expect( 4 );
127133

128134
var links,
@@ -131,70 +137,74 @@ $.each([
131137
menu = element.selectmenu( "menuWidget" ),
132138
options = element.find( "option" );
133139

134-
// init menu
140+
// Init menu
135141
button.simulate( "focus" );
136142

137143
setTimeout(function() {
138144
links = menu.find( "li.ui-menu-item" );
139-
// open menu and click first item
145+
146+
// Open menu and click first item
140147
button.trigger( "click" );
141148
links.first().simulate( "mouseover" ).trigger( "click" );
142-
// open menu again and hover item
149+
150+
// Open menu again and hover item
143151
button.trigger( "click" );
144152
links.eq( 3 ).simulate( "mouseover" );
145-
// close and use keyboard control on button
153+
154+
// Close and use keyboard control on button
146155
button.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
147156
button.simulate( "focus" );
148157
setTimeout(function() {
149158
button.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
150159

151-
equal( menu.attr( "aria-activedescendant" ), links.eq( 1 ).attr( "id" ), "menu aria-activedescendant" );
152-
equal( button.attr( "aria-activedescendant" ), links.eq( 1 ).attr( "id" ), "button aria-activedescendant" );
153-
equal( element.find( "option:selected" ).val(), options.eq( 1 ).val() , "original select state" );
160+
equal( menu.attr( "aria-activedescendant" ), links.eq( 1 ).attr( "id" ),
161+
"menu aria-activedescendant" );
162+
equal( button.attr( "aria-activedescendant" ), links.eq( 1 ).attr( "id" ),
163+
"button aria-activedescendant" );
164+
equal( element.find( "option:selected" ).val(), options.eq( 1 ).val() ,
165+
"original select state" );
154166
equal( button.text(), options.eq( 1 ).text(), "button text" );
155167
start();
156-
}, 1 );
157-
}, 1 );
168+
});
169+
});
158170
});
159171

160-
asyncTest( "item looping - " + settings.type, function () {
161-
expect( 2 );
172+
asyncTest( "item looping - " + settings.type, function() {
173+
expect( 4 );
162174

163175
var links,
164176
element = $( settings.selector ).selectmenu(),
165177
button = element.selectmenu( "widget" ),
166178
menu = element.selectmenu( "menuWidget" );
167179

168-
// init menu
169180
button.simulate( "focus" );
170-
171181
setTimeout(function() {
172182
links = menu.find( "li.ui-menu-item" );
173183

174184
button.trigger( "click" );
175185
links.first().simulate( "mouseover" ).trigger( "click" );
186+
equal( element[ 0 ].selectedIndex, 0, "First item is selected" );
176187
button.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
177188
equal( element[ 0 ].selectedIndex, 0, "No looping beyond first item" );
178189

179190
button.trigger( "click" );
180191
links.last().simulate( "mouseover" ).trigger( "click" );
192+
equal( element[ 0 ].selectedIndex, links.length - 1, "Last item is selected" );
181193
button.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
182-
equal( element[ 0 ].selectedIndex + 1, links.length, "No looping behind last item" );
194+
equal( element[ 0 ].selectedIndex, links.length - 1, "No looping behind last item" );
183195
start();
184-
}, 1 );
196+
});
185197
});
186198

187-
asyncTest( "item focus and active state - " + settings.type, function () {
199+
asyncTest( "item focus and active state - " + settings.type, function() {
188200
expect( 4 );
189201

190202
var items, focusedItem,
191203
element = $( settings.selector ).selectmenu(),
192204
button = element.selectmenu( "widget" ),
193205
menu = element.selectmenu( "menuWidget" );
194206

195-
// Initialize menu
196207
button.simulate( "focus" );
197-
198208
setTimeout(function() {
199209
items = menu.find( "li.ui-menu-item" );
200210

@@ -216,47 +226,48 @@ $.each([
216226
setTimeout(function() {
217227
checkItemClasses();
218228
start();
219-
}, 350 );
220-
}, 350 );
221-
}, 1 );
229+
});
230+
});
231+
});
222232

223233
function checkItemClasses() {
224234
focusedItem = menu.find( "li.ui-state-focus" );
225235
equal( focusedItem.length, 1, "only one item has ui-state-focus class" );
226-
equal( focusedItem.attr( "id" ), items.eq( element[ 0 ].selectedIndex ).attr( "id" ), "selected item has ui-state-focus class" );
236+
equal( focusedItem.attr( "id" ), items.eq( element[ 0 ].selectedIndex ).attr( "id" ),
237+
"selected item has ui-state-focus class" );
227238
}
228239
});
229240

230-
asyncTest( "empty option - " + settings.type, function () {
241+
asyncTest( "empty option - " + settings.type, function() {
231242
expect( 7 );
232243

233-
var element = $( settings.selector ),
234-
button, menu, links, link;
244+
var button, menu, links, link,
245+
element = $( settings.selector );
235246

236247
element.find( "option" ).first().text( "" );
237248
element.selectmenu();
238249
button = element.selectmenu( "widget" );
239250
menu = element.selectmenu( "menuWidget" );
240251

241-
// init menu
242252
button.simulate( "focus" );
243-
244253
setTimeout(function() {
245254
links = menu.find( "li:not(.ui-selectmenu-optgroup)" );
246255
link = links.first();
247256

248257
button.trigger( "click" );
249258

250-
equal( links.length, element.find( "option" ).length, "correct amount of list elements" );
259+
equal( links.length, element.find( "option" ).length,
260+
"correct amount of list elements" );
251261
ok( link.outerHeight() > 10, "empty item seems to have reasonable height" );
252262
ok( link.attr( "id" ), "empty item has id attribute" );
253263
ok( link.hasClass( "ui-menu-item" ), "empty item has ui-menu-item class" );
254-
ok( !link.hasClass( "ui-menu-divider" ), "empty item has not ui-menu-divider class" );
264+
ok( !link.hasClass( "ui-menu-divider" ),
265+
"empty item does not have ui-menu-divider class" );
255266
equal( link.attr( "tabindex" ), -1, "empty item has tabindex" );
256267
equal( link.attr( "role" ), "option", "empty item has role option" );
257268

258269
start();
259-
}, 1 );
270+
});
260271
});
261272
});
262273

0 commit comments

Comments
 (0)