Merge commit 'd21ea7816e' as 'jquery-ui'

This commit is contained in:
Mark Schouten 2016-08-05 13:20:20 +02:00
commit e904a80717
629 changed files with 341074 additions and 0 deletions

View file

@ -0,0 +1,26 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Droppable Test Suite</title>
<script src="../../../external/jquery/jquery.js"></script>
<link rel="stylesheet" href="../../../external/qunit/qunit.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit/qunit.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>
<script>
testAllVersions( "droppable" );
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">
</div>
</body>
</html>

View file

@ -0,0 +1,46 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Droppable Test Suite</title>
<script src="../../jquery.js"></script>
<link rel="stylesheet" href="../../../external/qunit/qunit.css">
<script src="../../../external/qunit/qunit.js"></script>
<script src="../../../external/jquery-simulate/jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
TestHelpers.loadResources({
css: [ "core" ],
js: [
"ui/core.js",
"ui/widget.js",
"ui/mouse.js",
"ui/draggable.js",
"ui/droppable.js"
]
});
</script>
<script src="droppable_common.js"></script>
<script src="droppable_core.js"></script>
<script src="droppable_events.js"></script>
<script src="droppable_methods.js"></script>
<script src="droppable_options.js"></script>
<script src="droppable_test_helpers.js"></script>
<script src="../swarminject.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">
<div id="draggable1" style="width: 25px; height: 25px;">Draggable</div>
<div id="droppable1" style="width: 100px; height: 100px;">Droppable</div>
<div id="droppable2" style="width: 100px; height: 100px;">Droppable</div>
<div style='width:1000px;height:1000px;'>&nbsp;</div>
</div>
</body>
</html>

View file

@ -0,0 +1,20 @@
TestHelpers.commonWidgetTests( "droppable", {
defaults: {
accept: "*",
activeClass: false,
addClasses: true,
disabled: false,
greedy: false,
hoverClass: false,
scope: "default",
tolerance: "intersect",
// callbacks
activate: null,
create: null,
deactivate: null,
drop: null,
out: null,
over: null
}
});

View file

@ -0,0 +1,29 @@
/*
* droppable_core.js
*/
(function($) {
module("droppable: core");
test("element types", function() {
var typeNames = ("p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form" +
",table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr" +
",acronym,code,samp,kbd,var,img,hr" +
",input,button,label,select,iframe").split(",");
expect( typeNames.length );
$.each(typeNames, function(i) {
var typeName = typeNames[i],
el = $(document.createElement(typeName)).appendTo("body");
(typeName === "table" && el.append("<tr><td>content</td></tr>"));
el.droppable();
TestHelpers.droppable.shouldDrop();
el.droppable("destroy");
el.remove();
});
});
})(jQuery);

View file

@ -0,0 +1,63 @@
(function( $ ) {
module( "droppable: events" );
test( "droppable destruction/recreation on drop event", function() {
expect( 1 );
var config = {
activeClass: "active",
drop: function() {
var element = $( this ),
newDroppable = $( "<div>" )
.css({ width: 100, height: 100 })
.text( "Droppable" );
element.after( newDroppable );
element.remove();
newDroppable.droppable( config );
}
},
draggable = $( "#draggable1" ).draggable(),
droppable1 = $( "#droppable1" ).droppable( config ),
droppable2 = $( "#droppable2" ).droppable( config ),
droppableOffset = droppable1.offset(),
draggableOffset = draggable.offset(),
dx = droppableOffset.left - draggableOffset.left,
dy = droppableOffset.top - draggableOffset.top;
draggable.simulate( "drag", {
dx: dx,
dy: dy
});
ok( !droppable2.hasClass( "active" ), "subsequent droppable no longer active" );
});
// todo: comment the following in when ready to actually test
/*
test("activate", function() {
ok(false, 'missing test - untested code is broken code');
});
test("deactivate", function() {
ok(false, 'missing test - untested code is broken code');
});
test("over", function() {
ok(false, 'missing test - untested code is broken code');
});
test("out", function() {
ok(false, 'missing test - untested code is broken code');
});
test("drop", function() {
ok(false, 'missing test - untested code is broken code');
});
*/
})( jQuery );

View file

@ -0,0 +1,91 @@
/*
* droppable_methods.js
*/
(function($) {
module("droppable: methods");
test("init", function() {
expect( 5 );
$("<div></div>").appendTo("body").droppable().remove();
ok(true, ".droppable() called on element");
$([]).droppable();
ok(true, ".droppable() called on empty collection");
$("<div></div>").droppable();
ok(true, ".droppable() called on disconnected DOMElement");
$("<div></div>").droppable().droppable("option", "foo");
ok(true, "arbitrary option getter after init");
$("<div></div>").droppable().droppable("option", "foo", "bar");
ok(true, "arbitrary option setter after init");
});
test("destroy", function() {
expect( 4 );
$("<div></div>").appendTo("body").droppable().droppable("destroy").remove();
ok(true, ".droppable('destroy') called on element");
$([]).droppable().droppable("destroy");
ok(true, ".droppable('destroy') called on empty collection");
$("<div></div>").droppable().droppable("destroy");
ok(true, ".droppable('destroy') called on disconnected DOMElement");
var expected = $("<div></div>").droppable(),
actual = expected.droppable("destroy");
equal(actual, expected, "destroy is chainable");
});
test("enable", function() {
expect(7);
var el, expected, actual;
el = $("#droppable1").droppable({ disabled: true });
TestHelpers.droppable.shouldNotDrop();
el.droppable("enable");
TestHelpers.droppable.shouldDrop();
equal(el.droppable("option", "disabled"), false, "disabled option getter");
el.droppable("destroy");
el.droppable({ disabled: true });
TestHelpers.droppable.shouldNotDrop();
el.droppable("option", "disabled", false);
equal(el.droppable("option", "disabled"), false, "disabled option setter");
TestHelpers.droppable.shouldDrop();
expected = $("<div></div>").droppable(),
actual = expected.droppable("enable");
equal(actual, expected, "enable is chainable");
});
test( "disable", function() {
expect( 10 );
var actual, expected,
element = $( "#droppable1" ).droppable({ disabled: false });
TestHelpers.droppable.shouldDrop();
element.droppable( "disable" );
TestHelpers.droppable.shouldNotDrop();
equal( element.droppable( "option", "disabled" ), true, "disabled option getter" );
element.droppable( "destroy" );
element.droppable({ disabled: false });
TestHelpers.droppable.shouldDrop();
element.droppable( "option", "disabled", true );
ok( !element.droppable( "widget" ).hasClass( "ui-state-disabled" ), "element does not get ui-state-disabled" );
ok( !element.droppable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
ok( element.droppable( "widget" ).hasClass( "ui-droppable-disabled" ), "element gets ui-droppable-disabled" );
equal( element.droppable( "option", "disabled" ), true, "disabled option setter" );
TestHelpers.droppable.shouldNotDrop();
expected = $( "<div></div>" ).droppable();
actual = expected.droppable( "disable" );
equal( actual, expected, "disable is chainable" );
});
})( jQuery );

View file

@ -0,0 +1,204 @@
/*
* droppable_options.js
*/
(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() {
expect( 1 );
var el = $( "<div />" ).droppable({ addClasses: true });
ok( el.is( ".ui-droppable" ), "'ui-droppable' class added" );
el.droppable( "destroy" );
});
test( "{ addClasses: false }", function() {
expect( 1 );
var el = $( "<div />" ).droppable({ addClasses: false });
ok( !el.is( ".ui-droppable" ), "'ui-droppable' class not added" );
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');
});
*/
})(jQuery);

View file

@ -0,0 +1,10 @@
TestHelpers.droppable = {
shouldDrop: function() {
// todo: actually implement this
ok(true, "missing test - untested code is broken code");
},
shouldNotDrop: function() {
// todo: actually implement this
ok(true, "missing test - untested code is broken code");
}
};