diff options
Diffstat (limited to 'tests/unit/droppable/options.js')
-rw-r--r-- | tests/unit/droppable/options.js | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/tests/unit/droppable/options.js b/tests/unit/droppable/options.js new file mode 100644 index 000000000..f2d1757c2 --- /dev/null +++ b/tests/unit/droppable/options.js @@ -0,0 +1,205 @@ +define( [ + "jquery", + "ui/droppable" +], function( $ ) { + +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'); +}); +*/ +test( "{ addClasses: true }, default", function( assert ) { + expect( 1 ); + var el = $( "<div />" ).droppable({ addClasses: true }); + assert.hasClasses( el, "ui-droppable" ); + el.droppable( "destroy" ); +}); + +test( "{ addClasses: false }", function( assert ) { + expect( 1 ); + var el = $( "<div />" ).droppable({ addClasses: false }); + + assert.lacksClasses( el, "ui-droppable" ); + el.droppable( "destroy" ); +}); + +test( "scope", function() { + 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(); + equal( draggableOffset.left, droppableOffset.left ); + 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(); + equal( draggableOffset.left, oldDraggableOffset.left ); + 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'); +}); +*/ + +test( "tolerance, intersect", function() { + 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.unbind( "drop" ).bind( "drop", function() { + equal( true, data[ 2 ], data[ 3 ] ); + }); + + $( draggable ).simulate( "drag", { + dx: data[ 0 ], + dy: data[ 1 ] + }); + }); +}); + +test( "tolerance, pointer", function() { + 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.unbind( "drop" ).bind( "drop", function() { + 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.unbind( "drop" ).bind( "drop", function() { + 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'); +}); +*/ +} ); |