Skip to content

Commit d5f06c3

Browse files
committed
Spinner tests: Better handling of async focus in IE.
1 parent fbc7956 commit d5f06c3

File tree

1 file changed

+100
-71
lines changed

1 file changed

+100
-71
lines changed

tests/unit/spinner/spinner_events.js

+100-71
Original file line numberDiff line numberDiff line change
@@ -131,100 +131,129 @@ asyncTest( "change", function() {
131131
});
132132
}
133133

134-
element.focus();
135-
shouldChange( false, "key UP, before blur" );
136-
simulateKeyDownUp( element, $.ui.keyCode.UP );
137-
shouldChange( true, "blur after key UP" );
138-
element.blur();
134+
function focusWrap( fn, next ) {
135+
element[0].focus();
136+
setTimeout( function() {
137+
fn();
138+
setTimeout(function() {
139+
element[0].blur();
140+
setTimeout( next );
141+
});
142+
});
143+
}
139144

140-
element.focus();
141-
shouldChange( false, "key DOWN, before blur" );
142-
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
143-
shouldChange( true, "blur after key DOWN" );
144-
element.blur();
145+
function step1() {
146+
focusWrap(function() {
147+
shouldChange( false, "key UP, before blur" );
148+
simulateKeyDownUp( element, $.ui.keyCode.UP );
149+
shouldChange( true, "blur after key UP" );
150+
}, step2 );
151+
}
145152

146-
element.focus();
147-
shouldChange( false, "key PAGE_UP, before blur" );
148-
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
149-
shouldChange( true, "blur after key PAGE_UP" );
150-
element.blur();
153+
function step2() {
154+
focusWrap(function() {
155+
shouldChange( false, "key DOWN, before blur" );
156+
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
157+
shouldChange( true, "blur after key DOWN" );
158+
}, step3 );
159+
}
151160

152-
element.focus();
153-
shouldChange( false, "key PAGE_DOWN, before blur" );
154-
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
155-
shouldChange( true, "blur after key PAGE_DOWN" );
156-
element.blur();
161+
function step3() {
162+
focusWrap(function() {
163+
shouldChange( false, "key PAGE_UP, before blur" );
164+
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
165+
shouldChange( true, "blur after key PAGE_UP" );
166+
}, step4 );
167+
}
157168

158-
shouldChange( false, "many keys, before blur" );
159-
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
160-
simulateKeyDownUp( element, $.ui.keyCode.UP );
161-
simulateKeyDownUp( element, $.ui.keyCode.UP );
162-
simulateKeyDownUp( element, $.ui.keyCode.UP );
163-
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
164-
shouldChange( true, "blur after many keys" );
165-
element.blur();
169+
function step4() {
170+
focusWrap(function() {
171+
shouldChange( false, "key PAGE_DOWN, before blur" );
172+
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
173+
shouldChange( true, "blur after key PAGE_DOWN" );
174+
}, step5 );
175+
}
166176

167-
shouldChange( false, "many keys, same final value, before blur" );
168-
simulateKeyDownUp( element, $.ui.keyCode.UP );
169-
simulateKeyDownUp( element, $.ui.keyCode.UP );
170-
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
171-
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
172-
shouldChange( false, "blur after many keys, same final value" );
177+
function step5() {
178+
focusWrap(function() {
179+
shouldChange( false, "many keys, before blur" );
180+
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
181+
simulateKeyDownUp( element, $.ui.keyCode.UP );
182+
simulateKeyDownUp( element, $.ui.keyCode.UP );
183+
simulateKeyDownUp( element, $.ui.keyCode.UP );
184+
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
185+
shouldChange( true, "blur after many keys" );
186+
}, step6 );
187+
}
173188

174-
shouldChange( false, "button up, before blur" );
175-
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
176-
shouldChange( true, "blur after button up" );
177-
setTimeout(function() {
178-
element.blur();
189+
function step6() {
190+
focusWrap(function() {
191+
shouldChange( false, "many keys, same final value, before blur" );
192+
simulateKeyDownUp( element, $.ui.keyCode.UP );
193+
simulateKeyDownUp( element, $.ui.keyCode.UP );
194+
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
195+
simulateKeyDownUp( element, $.ui.keyCode.DOWN );
196+
shouldChange( false, "blur after many keys, same final value" );
179197

180-
shouldChange( false, "button down, before blur" );
181-
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup();
182-
shouldChange( true, "blur after button down" );
183-
setTimeout(function() {
184-
element.blur();
198+
shouldChange( false, "button up, before blur" );
199+
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
200+
shouldChange( true, "blur after button up" );
201+
}, step7 );
202+
}
185203

204+
function step7() {
205+
focusWrap(function() {
206+
shouldChange( false, "button down, before blur" );
207+
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup();
208+
shouldChange( true, "blur after button down" );
209+
}, step8 );
210+
}
211+
212+
function step8() {
213+
focusWrap(function() {
186214
shouldChange( false, "many buttons, same final value, before blur" );
187215
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
188216
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
189217
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup();
190218
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup();
191219
shouldChange( false, "blur after many buttons, same final value" );
192-
element.blur();
193-
setTimeout(function() {
194-
shouldChange( true, "stepUp" );
195-
element.spinner( "stepUp" );
220+
}, step9 );
221+
}
196222

197-
shouldChange( true, "stepDown" );
198-
element.spinner( "stepDown" );
223+
function step9() {
224+
shouldChange( true, "stepUp" );
225+
element.spinner( "stepUp" );
199226

200-
shouldChange( true, "pageUp" );
201-
element.spinner( "pageUp" );
227+
shouldChange( true, "stepDown" );
228+
element.spinner( "stepDown" );
202229

203-
shouldChange( true, "pageDown" );
204-
element.spinner( "pageDown" );
230+
shouldChange( true, "pageUp" );
231+
element.spinner( "pageUp" );
205232

206-
shouldChange( true, "value" );
207-
element.spinner( "value", 999 );
233+
shouldChange( true, "pageDown" );
234+
element.spinner( "pageDown" );
208235

209-
shouldChange( false, "value, same value" );
210-
element.spinner( "value", 999 );
236+
shouldChange( true, "value" );
237+
element.spinner( "value", 999 );
211238

212-
shouldChange( true, "max, value changed" );
213-
element.spinner( "option", "max", 900 );
239+
shouldChange( false, "value, same value" );
240+
element.spinner( "value", 999 );
214241

215-
shouldChange( false, "max, value not changed" );
216-
element.spinner( "option", "max", 1000 );
242+
shouldChange( true, "max, value changed" );
243+
element.spinner( "option", "max", 900 );
217244

218-
shouldChange( true, "min, value changed" );
219-
element.spinner( "option", "min", 950 );
245+
shouldChange( false, "max, value not changed" );
246+
element.spinner( "option", "max", 1000 );
220247

221-
shouldChange( false, "min, value not changed" );
222-
element.spinner( "option", "min", 200 );
223-
shouldChange( true, "cleanup" );
224-
start();
225-
});
226-
});
227-
});
248+
shouldChange( true, "min, value changed" );
249+
element.spinner( "option", "min", 950 );
250+
251+
shouldChange( false, "min, value not changed" );
252+
element.spinner( "option", "min", 200 );
253+
start();
254+
}
255+
256+
step1();
228257
});
229258

230259
})( jQuery );

0 commit comments

Comments
 (0)