diff options
author | Scott González <scott.gonzalez@gmail.com> | 2011-08-07 19:11:49 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2011-08-07 19:11:49 -0400 |
commit | 2a8a77a9b287e247b2b191f9e282e82e370ee525 (patch) | |
tree | 170186388d002a544b5ae52f2450d6bd1bec405b /tests/unit/spinner | |
parent | c6c957224f8b639f74d4369f2a02fcdad92c8547 (diff) | |
download | jquery-ui-2a8a77a9b287e247b2b191f9e282e82e370ee525.tar.gz jquery-ui-2a8a77a9b287e247b2b191f9e282e82e370ee525.zip |
Spinner: More tests. Don't trigger spin when programmatically stepping or paging.
Diffstat (limited to 'tests/unit/spinner')
-rw-r--r-- | tests/unit/spinner/spinner_core.js | 9 | ||||
-rw-r--r-- | tests/unit/spinner/spinner_events.js | 215 |
2 files changed, 200 insertions, 24 deletions
diff --git a/tests/unit/spinner/spinner_core.js b/tests/unit/spinner/spinner_core.js index e4a632640..55b806a7f 100644 --- a/tests/unit/spinner/spinner_core.js +++ b/tests/unit/spinner/spinner_core.js @@ -176,4 +176,13 @@ test( "ARIA attributes", function() { equal( element.attr( "aria-valuemax" ), 10, "max option changed aria-valuemax changes" ); }); +test( "focus text field when pressing button", function() { + expect( 2 ); + var element = $( "#spin" ).spinner(); + $( "body" ).focus(); + ok( element[ 0 ] !== document.activeElement, "not focused before" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown(); + ok( element[ 0 ] === document.activeElement, "focused after" ); +}); + })( jQuery ); diff --git a/tests/unit/spinner/spinner_events.js b/tests/unit/spinner/spinner_events.js index 98292b055..e9f5da1ce 100644 --- a/tests/unit/spinner/spinner_events.js +++ b/tests/unit/spinner/spinner_events.js @@ -3,48 +3,215 @@ module( "spinner: events" ); test( "start", function() { - expect( 1 ); - var element = $( "#spin" ).spinner({ - start: function() { - ok( true, "start" ); - } - }); + expect( 6 ); + var element = $( "#spin" ).spinner(); + function shouldStart( expectation, msg ) { + element.spinner( "option", "start", function() { + ok( expectation, msg ); + }); + } + + shouldStart( true, "key UP" ); spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + shouldStart( true, "key DOWN" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + + shouldStart( true, "key PAGE_UP" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + shouldStart( true, "key PAGE_DOWN" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + + shouldStart( true, "button up" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + shouldStart( true, "button down" ); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + + shouldStart( false, "stepUp" ); + element.spinner( "stepUp" ); + shouldStart( false, "stepDown" ); + element.spinner( "stepDown" ); + + shouldStart( false, "pageUp" ); + element.spinner( "pageUp" ); + shouldStart( false, "pageDown" ); + element.spinner( "pageDown" ); + + shouldStart( false, "value" ); + element.spinner( "value", 999 ); }); test( "spin", function() { - expect( 1 ); - var element = $( "#spin" ).spinner({ - spin: function(){ - ok( true, "spin" ); - } - }); + expect( 6 ); + var element = $( "#spin" ).spinner(); + function shouldSpin( expectation, msg ) { + element.spinner( "option", "spin", function() { + ok( expectation, msg ); + }); + } + + shouldSpin( true, "key UP" ); spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + shouldSpin( true, "key DOWN" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + + shouldSpin( true, "key PAGE_UP" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + shouldSpin( true, "key PAGE_DOWN" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + + shouldSpin( true, "button up" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + shouldSpin( true, "button down" ); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + + shouldSpin( false, "stepUp" ); + element.spinner( "stepUp" ); + shouldSpin( false, "stepDown" ); + element.spinner( "stepDown" ); + + shouldSpin( false, "pageUp" ); + element.spinner( "pageUp" ); + shouldSpin( false, "pageDown" ); + element.spinner( "pageDown" ); + + shouldSpin( false, "value" ); + element.spinner( "value", 999 ); }); test( "stop", function() { - expect( 1 ); - var element = $( "#spin" ).spinner({ - stop: function(){ - ok( true, "stop" ); - } - }); + expect( 6 ); + var element = $( "#spin" ).spinner(); + function shouldStop( expectation, msg ) { + element.spinner( "option", "stop", function() { + ok( expectation, msg ); + }); + } + + shouldStop( true, "key UP" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + shouldStop( true, "key DOWN" ); spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + + shouldStop( true, "key PAGE_UP" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + shouldStop( true, "key PAGE_DOWN" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + + shouldStop( true, "button up" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + shouldStop( true, "button down" ); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + + shouldStop( false, "stepUp" ); + element.spinner( "stepUp" ); + shouldStop( false, "stepDown" ); + element.spinner( "stepDown" ); + + shouldStop( false, "pageUp" ); + element.spinner( "pageUp" ); + shouldStop( false, "pageDown" ); + element.spinner( "pageDown" ); + + shouldStop( false, "value" ); + element.spinner( "value", 999 ); }); test( "change", function() { - expect( 1 ); - var element = $( "#spin" ).spinner({ - change: function(){ - ok( true, "change" ); - } - }); + expect( 14 ); + var element = $( "#spin" ).spinner(); + + function shouldChange( expectation, msg ) { + element.spinner( "option", "change", function() { + ok( expectation, msg ); + }); + } + + shouldChange( false, "key UP, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + shouldChange( true, "blur after key UP" ); + element.blur(); + + shouldChange( false, "key DOWN, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + shouldChange( true, "blur after key DOWN" ); + element.blur(); + shouldChange( false, "key PAGE_UP, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + shouldChange( true, "blur after key PAGE_UP" ); + element.blur(); + + shouldChange( false, "key PAGE_DOWN, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + shouldChange( true, "key PAGE_DOWN" ); + element.blur(); + + shouldChange( false, "many keys, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + shouldChange( true, "blur after many keys" ); + element.blur(); + + shouldChange( false, "many keys, same final value, before blur" ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + shouldChange( false, "blur after many keys, same final value" ); + + shouldChange( false, "button up, before blur" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + shouldChange( true, "blur after button up" ); element.blur(); + + shouldChange( false, "button down, before blur" ); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + shouldChange( true, "blur after button down" ); + element.blur(); + + shouldChange( false, "many buttons, same final value, before blur" ); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); + shouldChange( false, "blur after many buttons, same final value" ); + element.blur(); + + shouldChange( true, "stepUp" ); + element.spinner( "stepUp" ); + + shouldChange( true, "stepDown" ); + element.spinner( "stepDown" ); + + shouldChange( true, "pageUp" ); + element.spinner( "pageUp" ); + + shouldChange( true, "pageDown" ); + element.spinner( "pageDown" ); + + shouldChange( true, "value" ); + element.spinner( "value", 999 ); + + shouldChange( false, "value, same value" ); + element.spinner( "value", 999 ); + + shouldChange( true, "max, value changed" ); + element.spinner( "option", "max", 900 ); + + shouldChange( false, "max, value not changed" ); + element.spinner( "option", "max", 1000 ); + + shouldChange( true, "min, value changed" ); + element.spinner( "option", "min", 950 ); + + shouldChange( false, "min, value not changed" ); + element.spinner( "option", "min", 200 ); }); })( jQuery ); |