corrade-http-templates – Rev 62

Subversion Repositories:
Rev:
define( [
        "qunit",
        "jquery",
        "./helper",
        "ui/widgets/spinner"
], function( QUnit, $, testHelper ) {

var simulateKeyDownUp = testHelper.simulateKeyDownUp;

QUnit.module( "spinner: events" );

QUnit.test( "start", function( assert ) {
        assert.expect( 10 );
        var element = $( "#spin" ).spinner();

        function shouldStart( expectation, msg ) {
                element.spinner( "option", "start", function() {
                        assert.ok( expectation, msg );
                } );
        }

        shouldStart( true, "key UP" );
        simulateKeyDownUp( element, $.ui.keyCode.UP );
        shouldStart( true, "key DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.DOWN );

        shouldStart( true, "key PAGE_UP" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
        shouldStart( true, "key PAGE_DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );

        shouldStart( true, "button up" );
        element.spinner( "widget" ).find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" );
        shouldStart( true, "button down" );
        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );

        shouldStart( true, "stepUp" );
        element.spinner( "stepUp" );
        shouldStart( true, "stepDown" );
        element.spinner( "stepDown" );

        shouldStart( true, "pageUp" );
        element.spinner( "pageUp" );
        shouldStart( true, "pageDown" );
        element.spinner( "pageDown" );

        shouldStart( false, "value" );
        element.spinner( "value", 999 );
} );

QUnit.test( "spin", function( assert ) {
        assert.expect( 10 );
        var element = $( "#spin" ).spinner();

        function shouldSpin( expectation, msg ) {
                element.spinner( "option", "spin", function() {
                        assert.ok( expectation, msg );
                } );
        }

        shouldSpin( true, "key UP" );
        simulateKeyDownUp( element, $.ui.keyCode.UP );
        shouldSpin( true, "key DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.DOWN );

        shouldSpin( true, "key PAGE_UP" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
        shouldSpin( true, "key PAGE_DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );

        shouldSpin( true, "button up" );
        element.spinner( "widget" ).find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" );
        shouldSpin( true, "button down" );
        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );

        shouldSpin( true, "stepUp" );
        element.spinner( "stepUp" );
        shouldSpin( true, "stepDown" );
        element.spinner( "stepDown" );

        shouldSpin( true, "pageUp" );
        element.spinner( "pageUp" );
        shouldSpin( true, "pageDown" );
        element.spinner( "pageDown" );

        shouldSpin( false, "value" );
        element.spinner( "value", 999 );
} );

QUnit.test( "stop", function( assert ) {
        assert.expect( 10 );
        var element = $( "#spin" ).spinner();

        function shouldStop( expectation, msg ) {
                element.spinner( "option", "stop", function() {
                        assert.ok( expectation, msg );
                } );
        }

        shouldStop( true, "key UP" );
        simulateKeyDownUp( element, $.ui.keyCode.UP );
        shouldStop( true, "key DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.DOWN );

        shouldStop( true, "key PAGE_UP" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
        shouldStop( true, "key PAGE_DOWN" );
        simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );

        shouldStop( true, "button up" );
        element.spinner( "widget" ).find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" );
        shouldStop( true, "button down" );
        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );

        shouldStop( true, "stepUp" );
        element.spinner( "stepUp" );
        shouldStop( true, "stepDown" );
        element.spinner( "stepDown" );

        shouldStop( true, "pageUp" );
        element.spinner( "pageUp" );
        shouldStop( true, "pageDown" );
        element.spinner( "pageDown" );

        shouldStop( false, "value" );
        element.spinner( "value", 999 );
} );

QUnit.test( "change", function( assert ) {
        var ready = assert.async();
        assert.expect( 12 );
        var element = $( "#spin" ).spinner();

        function shouldChange( expectation, msg ) {
                element.spinner( "option", "change", function() {
                        assert.ok( expectation, msg );
                } );
        }

        function focusWrap( fn, next ) {
                element[ 0 ].focus();
                setTimeout( function() {
                        fn();
                        setTimeout( function() {
                                element[ 0 ].blur();
                                setTimeout( next );
                        } );
                } );
        }

        function step1() {
                focusWrap( function() {
                        shouldChange( false, "key UP, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        shouldChange( true, "blur after key UP" );
                }, step2 );
        }

        function step2() {
                focusWrap( function() {
                        shouldChange( false, "key DOWN, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.DOWN );
                        shouldChange( true, "blur after key DOWN" );
                }, step3 );
        }

        function step3() {
                focusWrap( function() {
                        shouldChange( false, "key PAGE_UP, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
                        shouldChange( true, "blur after key PAGE_UP" );
                }, step4 );
        }

        function step4() {
                focusWrap( function() {
                        shouldChange( false, "key PAGE_DOWN, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
                        shouldChange( true, "blur after key PAGE_DOWN" );
                }, step5 );
        }

        function step5() {
                focusWrap( function() {
                        shouldChange( false, "many keys, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        simulateKeyDownUp( element, $.ui.keyCode.DOWN );
                        shouldChange( true, "blur after many keys" );
                }, step6 );
        }

        function step6() {
                focusWrap( function() {
                        shouldChange( false, "many keys, same final value, before blur" );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        simulateKeyDownUp( element, $.ui.keyCode.UP );
                        simulateKeyDownUp( element, $.ui.keyCode.DOWN );
                        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" ).trigger( "mousedown" ).trigger( "mouseup" );
                        shouldChange( true, "blur after button up" );
                }, step7 );
        }

        function step7() {
                focusWrap( function() {
                        shouldChange( false, "button down, before blur" );
                        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );
                        shouldChange( true, "blur after button down" );
                }, step8 );
        }

        function step8() {
                focusWrap( function() {
                        shouldChange( false, "many buttons, same final value, before blur" );
                        element.spinner( "widget" ).find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" );
                        element.spinner( "widget" ).find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" );
                        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );
                        element.spinner( "widget" ).find( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" );
                        shouldChange( false, "blur after many buttons, same final value" );
                }, step9 );
        }

        function step9() {
                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( false, "max, value not changed" );
                element.spinner( "option", "max", 900 );

                shouldChange( false, "max, value not changed" );
                element.spinner( "option", "max", 1000 );

                shouldChange( false, "min, value not changed" );
                element.spinner( "option", "min", 950 );

                shouldChange( false, "min, value not changed" );
                element.spinner( "option", "min", 200 );
                ready();
        }

        setTimeout( step1 );
} );

} );