corrade-http-templates – Rev 62

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

QUnit.module( "droppable: options" );

/*
Test( "{ accept '*' }, default ", function() {
        ok(false, 'missing test - untested code is broken code');
});

test( "{ accept: Selector }", function() {
        ok(false, 'missing test - untested code is broken code');
});

test( "{ accept: function(draggable) }", function() {
        ok(false, 'missing test - untested code is broken code');
});

test( "activeClass", function() {
        ok(false, 'missing test - untested code is broken code');
});
*/
QUnit.test( "{ addClasses: true }, default", function( assert ) {
        assert.expect( 1 );
        var el = $( "<div />" ).droppable( { addClasses: true } );
        assert.hasClasses( el, "ui-droppable" );
        el.droppable( "destroy" );
} );

QUnit.test( "{ addClasses: false }", function( assert ) {
        assert.expect( 1 );
        var el = $( "<div />" ).droppable( { addClasses: false } );

        assert.lacksClasses( el, "ui-droppable" );
        el.droppable( "destroy" );
} );

QUnit.test( "scope", function( assert ) {
        assert.expect( 4 );
        var droppableOffset, draggableOffset, oldDraggableOffset, dx, dy,
                draggable1 = $( "<div />" ).appendTo( "#qunit-fixture" ).draggable( { revert: "invalid" } ),
                draggable2 = $( "<div />" ).appendTo( "#qunit-fixture" ).droppable(),
                droppable = $( "<div />" ).appendTo( "#qunit-fixture" ).droppable(),
                newScope = "test";

        draggable1.draggable( "option", "scope", newScope );
        droppable.droppable( "option", "scope", newScope );

        // Test that droppable accepts draggable with new scope.
        droppableOffset = droppable.offset();
        draggableOffset = draggable1.offset();
        dx = droppableOffset.left - draggableOffset.left;
        dy = droppableOffset.top - draggableOffset.top;

        draggable1.simulate( "drag", {
                dx: dx,
                dy: dy
        } );

        draggableOffset = draggable1.offset();
        assert.equal( draggableOffset.left, droppableOffset.left );
        assert.equal( draggableOffset.top, droppableOffset.top );

        // Test that droppable doesn't accept draggable with old scope.
        draggableOffset = draggable2.offset();
        dx = droppableOffset.left - draggableOffset.left;
        dy = droppableOffset.top - draggableOffset.top;
        oldDraggableOffset = draggableOffset;

        draggable2.simulate( "drag", {
                dx: dx,
                dy: dy
        } );

        draggableOffset = draggable2.offset();
        assert.equal( draggableOffset.left, oldDraggableOffset.left );
        assert.equal( draggableOffset.top, oldDraggableOffset.top );
} );
/*
Test( "greedy", function() {
        ok(false, 'missing test - untested code is broken code');
});

test( "hoverClass", function() {
        ok(false, 'missing test - untested code is broken code');
});

test( "tolerance, fit", function() {
        ok(false, 'missing test - untested code is broken code');
});
*/

QUnit.test( "tolerance, intersect", function( assert ) {
        assert.expect( 2 );

        var draggable, droppable,
                dataset = [
                        [ 0, 0, false, "too far up and left" ],
                        [ 6, 0, false, "too far up" ],
                        [ 0, 6, false, "too far left" ],
                        [ 6, 6, true, "top left corner" ],
                        [ 14, 14, true, "bottom right corner" ],
                        [ 15, 6, false, "too far right" ],
                        [ 6, 15, false, "too far down" ],
                        [ 15, 15, false, "too far down and right" ]
                ];

        draggable = $( "<div />" )
                .appendTo( "#qunit-fixture" )
                .css( {
                        width: 10,
                        height: 10,
                        position: "absolute",

                        // Http://bugs.jqueryui.com/ticket/6876
                        // Droppable: droppable region is offset by draggables margin
                        marginTop: 3,
                        marginLeft: 3
                } )
                .draggable();

        droppable = $( "<div />" )
                .appendTo( "#qunit-fixture" )
                .css( { width: 10, height: 10, position: "absolute", top: 13, left: 13 } )
                .droppable( { tolerance: "intersect" } );

        $.each( dataset, function() {
                var data = this;

                draggable.css( {
                        top: 0,
                        left: 0
                } );

                droppable.off( "drop" ).on( "drop", function() {
                        assert.equal( true, data[ 2 ], data[ 3 ] );
                } );

                $( draggable ).simulate( "drag", {
                        dx: data[ 0 ],
                        dy: data[ 1 ]
                } );
        } );
} );

QUnit.test( "tolerance, pointer", function( assert ) {
        assert.expect( 3 );

        var draggable, droppable,
                dataset = [
                        [ -1, -1, false, "too far up and left" ],
                        [ -1, 0, false, "too far left" ],
                        [ 0, -1, false, "too far up" ],
                        [ 0, 0, true, "top left corner" ],
                        [ 9, 9, true, "bottom right corner" ],
                        [ 10, 9, false, "too far right" ],
                        [ 9, 10, false, "too far down" ],
                        [ 10, 10, false, "too far down and right" ]
                ];

        draggable = $( "<div />" )
                .appendTo( "#qunit-fixture" )
                .css( { width: 10, height: 10, position: "absolute" } )
                .draggable();

        droppable = $( "<div />" )
                .appendTo( "#qunit-fixture" )
                .css( { width: 10, height: 10, position: "absolute", top: 5, left: 5 } )
                .droppable( { tolerance: "pointer" } );

        $.each( dataset, function() {
                var data = this;

                droppable.off( "drop" ).on( "drop", function() {
                        assert.equal( true, data[ 2 ], data[ 3 ] );
                } );

                $( draggable ).simulate( "drag", {
                        dx: ( data[ 0 ] - $( draggable ).position().left ),
                        dy: ( data[ 1 ] - $( draggable ).position().top )
                } );
        } );

        // Http://bugs.jqueryui.com/ticket/4977 - tolerance, pointer - bug when pointer outside draggable
        draggable.css( { top: 0, left: 0 } ).draggable( "option", "axis", "x" );
        droppable.css( { top: 15, left: 15 } );

        droppable.off( "drop" ).on( "drop", function() {
                assert.ok( true, "drop fires as long as pointer is within droppable" );
        } );

        $( draggable ).simulate( "drag", {
                dx: 10,
                dy: 10
        } );
} );

/*
Test( "tolerance, touch", function() {
        ok(false, 'missing test - untested code is broken code');
});
*/
} );