Skip to content

Commit

Permalink
tests: Added droppable test suite
Browse files Browse the repository at this point in the history
  • Loading branch information
rdworth committed Nov 8, 2008
1 parent 64cfa04 commit caa51ee
Show file tree
Hide file tree
Showing 2 changed files with 256 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tests/droppable.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<title>jQuery UI Droppable Test Suite</title>

<link rel="stylesheet" href="qunit/testsuite.css" type="text/css" media="screen">

<script type="text/javascript" src="../jquery-1.2.6.js"></script>
<script type="text/javascript" src="../ui/ui.core.js"></script>
<script type="text/javascript" src="../ui/ui.draggable.js"></script>
<script type="text/javascript" src="../ui/ui.droppable.js"></script>

<script type="text/javascript" src="qunit/testrunner.js"></script>
<script type="text/javascript" src="simulate/jquery.simulate.js"></script>

<script type="text/javascript" src="droppable.js"></script>

<style type="text/css">
html { border: 0; }
#main {
position:absolute !important;
top: -1000px !important;
left: -1000px !important;
}
</style>
</head>
<body>

<h1 id="header">jQuery UI Droppable Test Suite</h1>
<h2 id="banner"></h2>
<h2 id="userAgent"></h2>

<ol id="tests"></ol>

<div id="main">
<div id="draggable1" style="width: 25px; height: 25px;">Draggable</div>
<div id="droppable1" style="width: 100px; height: 100px;">Droppable</div>
</div>

</body>
</html>
215 changes: 215 additions & 0 deletions tests/droppable.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
/*
* droppable unit tests
*/
(function($) {
//
// Droppable Test Helper Functions
//

var defaults = {
accept: null,
activeClass: null,
cssNamespace: "ui",
disabled: false,
greedy: false,
hoverClass: null,
scope: "default",
tolerance: "intersect"
};

var el, drg;

function shouldBeDroppable() {
ok(false, "missing test - should be droppable");
}

function shouldNotBeDroppable() {
ok(false, "missing test - should not be droppable");
}

// Droppable Tests
module("droppable");

test("init", function() {
expect(6);

el = $("#droppable1").droppable();
ok(true, '.droppable() called on element');

$([]).droppable();
ok(true, '.droppable() called on empty collection');

$("<div/>").droppable();
ok(true, '.droppable() called on disconnected DOMElement');

$("<div/>").droppable().droppable("foo");
ok(true, 'arbitrary method called after init');

$("<div/>").droppable().data("foo.droppable");
ok(true, 'arbitrary option getter after init');

$("<div/>").droppable().data("foo.droppable", "bar");
ok(true, 'arbitrary option setter after init');
});

test("destroy", function() {
expect(6);

$("#droppable1").droppable().droppable("destroy");
ok(true, '.droppable("destroy") called on element');

$([]).droppable().droppable("destroy");
ok(true, '.droppable("destroy") called on empty collection');

$("<div/>").droppable().droppable("destroy");
ok(true, '.droppable("destroy") called on disconnected DOMElement');

$("<div/>").droppable().droppable("destroy").droppable("foo");
ok(true, 'arbitrary method called after destroy');

$("<div/>").droppable().droppable("destroy").data("foo.droppable");
ok(true, 'arbitrary option getter after destroy');

$("<div/>").droppable().droppable("destroy").data("foo.droppable", "bar");
ok(true, 'arbitrary option setter after destroy');
});

test("enable", function() {
expect(6);
el = $("#droppable1").droppable({ disabled: true });
shouldNotBeDroppable();
el.droppable("enable");
shouldBeDroppable();
equals(el.data("disabled.droppable"), false, "disabled.droppable getter");
el.droppable("destroy");
el.droppable({ disabled: true });
shouldNotBeDroppable();
el.data("disabled.droppable", false);
equals(el.data("disabled.droppable"), false, "disabled.droppable setter");
shouldBeDroppable();
});

test("disable", function() {
expect(6);
el = $("#droppable1").droppable({ disabled: false });
shouldBeDroppable();
el.droppable("disable");
shouldNotBeDroppable();
equals(el.data("disabled.droppable"), true, "disabled.droppable getter");
el.droppable("destroy");
el.droppable({ disabled: false });
shouldBeDroppable();
el.data("disabled.droppable", true);
equals(el.data("disabled.droppable"), true, "disabled.droppable setter");
shouldNotBeDroppable();
});

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,object,hr'
+ ',input,button,label,select,iframe').split(',');

$.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();
shouldBeDroppable();
el.droppable("destroy");
el.remove();
});
});

test("defaults", function() {
el = $("<div></div>").droppable();
$.each(defaults, function(key, val) {
var actual = el.data(key + ".droppable"), expected = val;
same(actual, expected, key);
});
el.remove();
});

test("option setting", function() {
// The plugin shouldn't modify an option value set by the user
$.each(defaults, function(key, val) {
el = $("<div></div>").droppable();
el.data(key + ".droppable", val);
var actual = el.data(key + ".droppable"), expected = val;
same(actual, expected, key);
el.remove();
});
});

module("droppable: Options");

test("accept, selector", function() {
ok(false, "missing test");
});

test("accept, fn", function() {
ok(false, "missing test");
});

test("activeClass", function() {
ok(false, "missing test");
});

test("cssNamespace", function() {
ok(false, "missing test");
});

test("greedy", function() {
ok(false, "missing test");
});

test("hoverClass", function() {
ok(false, "missing test");
});

test("scope", function() {
ok(false, "missing test");
});

test("tolerance, fit", function() {
ok(false, "missing test");
});

test("tolerance, intersect", function() {
ok(false, "missing test");
});

test("tolerance, pointer", function() {
ok(false, "missing test");
});

test("tolerance, touch", function() {
ok(false, "missing test");
});

module("droppable: Callbacks");

test("activate", function() {
ok(false, "missing test");
});

test("deactivate", function() {
ok(false, "missing test");
});

test("over", function() {
ok(false, "missing test");
});

test("out", function() {
ok(false, "missing test");
});

test("drop", function() {
ok(false, "missing test");
});

module("droppable: Tickets");


})(jQuery);

0 comments on commit caa51ee

Please sign in to comment.