From a8cc03ac5a249ed24c727940221997d18eacc531 Mon Sep 17 00:00:00 2001 From: David Uselmann Date: Tue, 1 Jul 2014 01:18:31 -0500 Subject: [PATCH] add html5 DND events for simulation --- jquery.simulate.js | 2 +- test/unit/simulate.js | 63 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/jquery.simulate.js b/jquery.simulate.js index eeb5624..02d33e9 100644 --- a/jquery.simulate.js +++ b/jquery.simulate.js @@ -12,7 +12,7 @@ ;(function( $, undefined ) { var rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/; + rmouseEvent = /^(?:mouse|contextmenu)|click|drag(?:start|end|over|leave|enter)|drop/; $.fn.simulate = function( type, options ) { return this.each(function() { diff --git a/test/unit/simulate.js b/test/unit/simulate.js index 07d246a..8bea640 100644 --- a/test/unit/simulate.js +++ b/test/unit/simulate.js @@ -25,6 +25,69 @@ test( "click on radio triggers change", function() { notEqual( checked, firstRadio.prop( "checked" ), "radio state changed" ); }); +test( "accept dragstart event", function() { + var bindCalled = false + jQuery('
').bind('dragstart', function(e) { + bindCalled = true + }).simulate('dragstart',{}) + equal(bindCalled, true) +}); + +test( "accept dragenter event", function() { + var bindCalled = false + jQuery('
').bind('dragenter', function(e) { + bindCalled = true + }).simulate('dragenter',{}) + equal(bindCalled, true) +}); + +test( "accept drageleave event", function() { + var bindCalled = false + jQuery('
').bind('dragleave', function(e) { + bindCalled = true + }).simulate('dragleave',{}) + equal(bindCalled, true) +}); + +test( "accept drageover event", function() { + var bindCalled = false + jQuery('
').bind('dragover', function(e) { + bindCalled = true + }).simulate('dragover',{}) + equal(bindCalled, true) +}); + +test( "accept dragend event", function() { + var bindCalled = false + jQuery('
').bind('dragend', function(e) { + bindCalled = true + }).simulate('dragend',{}) + equal(bindCalled, true) +}); + +test( "accept drop event", function() { + var bindCalled = false + jQuery('
').bind('drop', function(e) { + bindCalled = true + }).simulate('drop',{}) + equal(bindCalled, true) +}); + +test( "do not accept dragunknown event", function() { + var bindCalled = false + var expectException = false + try { + jQuery('
').bind('dragunknown', function(e) { + bindCalled = true + }).simulate('dragunknown',{}) + } catch (e) { + expectException = true + } + notEqual(bindCalled, true) + equal(expectException, true) +}); + + var key = jQuery.simulate.keyCode, keyEvents = [ "keydown", "keyup", "keypress" ], i = 0;