diff options
author | Scott González <scott.gonzalez@gmail.com> | 2015-07-15 09:40:38 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2015-07-15 09:40:38 -0400 |
commit | 71d8f16ad4bc60d8946cf73f4b0c0bc99840e6ab (patch) | |
tree | a48489064648b2cbb59772d8a62f4fb66496ed4f /tests/unit/draggable/events.js | |
parent | a3df6dd8a8e363a276392acd7744f7db1e75eb61 (diff) | |
parent | de4984da244289c259e8fc8d1106898908b6ffce (diff) | |
download | jquery-ui-71d8f16ad4bc60d8946cf73f4b0c0bc99840e6ab.tar.gz jquery-ui-71d8f16ad4bc60d8946cf73f4b0c0bc99840e6ab.zip |
Merge branch 'master' into datepicker
Diffstat (limited to 'tests/unit/draggable/events.js')
-rw-r--r-- | tests/unit/draggable/events.js | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/tests/unit/draggable/events.js b/tests/unit/draggable/events.js new file mode 100644 index 000000000..ebbf606ef --- /dev/null +++ b/tests/unit/draggable/events.js @@ -0,0 +1,164 @@ +define( [ + "jquery", + "ui/draggable" +], function( $ ) { + +var element; + +module( "draggable: events", { + setup: function() { + element = $("<div>").appendTo("#qunit-fixture"); + }, + teardown: function() { + element.draggable("destroy"); + } +}); + +test( "callbacks occurrence count", function() { + expect( 3 ); + + var start = 0, + stop = 0, + dragc = 0; + + element.draggable({ + start: function() { + start++; + }, + drag: function() { + dragc++; + }, + stop: function() { + stop++; + } + }); + + element.simulate( "drag", { + dx: 10, + dy: 10 + }); + + equal( start, 1, "start callback should happen exactly once" ); + equal( dragc, 3, "drag callback should happen exactly once per mousemove" ); + equal( stop, 1, "stop callback should happen exactly once" ); +}); + +test( "stopping the start callback", function() { + expect( 3 ); + + var start = 0, + stop = 0, + dragc = 0; + + element.draggable({ + start: function() { + start++; + return false; + }, + drag: function() { + dragc++; + }, + stop: function() { + stop++; + } + }); + + element.simulate( "drag", { + dx: 10, + dy: 10 + }); + + equal( start, 1, "start callback should happen exactly once" ); + equal( dragc, 0, "drag callback should not happen at all" ); + equal( stop, 0, "stop callback should not happen if there wasnt even a start" ); +}); + +test( "stopping the drag callback", function() { + expect( 2 ); + + var start = 0, + stop = 0, + dragc = 0; + + element.draggable({ + start: function() { + start++; + }, + drag: function() { + dragc++; + return false; + }, + stop: function() { + stop++; + } + }); + + element.simulate( "drag", { + dx: 10, + dy: 10 + }); + + equal( start, 1, "start callback should happen exactly once" ); + equal( stop, 1, "stop callback should happen, as we need to actively stop the drag" ); +}); + +test( "stopping the stop callback", function() { + expect( 1 ); + + element.draggable({ + helper: "clone", + stop: function() { + return false; + } + }); + + element.simulate( "drag", { + dx: 10, + dy: 10 + }); + + ok( element.draggable( "instance" ).helper, "the clone should not be deleted if the stop callback is stopped" ); +}); + +// http://bugs.jqueryui.com/ticket/6884 +// Draggable: ui.offset.left differs between the "start" and "drag" hooks +test( "position and offset in hash is consistent between start, drag, and stop", function() { + expect( 4 ); + + var startPos, startOffset, dragPos, dragOffset, stopPos, stopOffset; + + element = $( "<div style='margin: 2px;'></div>" ).appendTo( "#qunit-fixture" ); + + element.draggable({ + start: function( event, ui ) { + startPos = ui.position; + startOffset = ui.offset; + }, + drag: function( event, ui ) { + dragPos = ui.position; + dragOffset = ui.offset; + }, + stop: function( event, ui ) { + stopPos = ui.position; + stopOffset = ui.offset; + } + }); + + element.simulate( "drag", { + dx: 10, + dy: 10, + moves: 1 + }); + + startPos.left += 10; + startPos.top += 10; + startOffset.left += 10; + startOffset.top += 10; + + deepEqual( startPos, dragPos, "start position equals drag position plus distance" ); + deepEqual( dragPos, stopPos, "drag position equals stop position" ); + deepEqual( startOffset, dragOffset, "start offset equals drag offset plus distance" ); + deepEqual( dragOffset, stopOffset, "drag offset equals stop offset" ); +}); + +} ); |