aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Worth <rdworth@gmail.com>2008-06-09 05:40:24 +0000
committerRichard Worth <rdworth@gmail.com>2008-06-09 05:40:24 +0000
commit665f17ce2c12105697b98655a6c398dd2ad63b2f (patch)
tree2d8178aa520e40ab4bf7cfd77f3483e5d6104612
parent279b579ba5c88c11127eaef1abc6e6ec88d7abc8 (diff)
downloadjquery-ui-665f17ce2c12105697b98655a6c398dd2ad63b2f.tar.gz
jquery-ui-665f17ce2c12105697b98655a6c398dd2ad63b2f.zip
tests - added selectable unit tests
-rw-r--r--tests/selectable.html46
-rw-r--r--tests/selectable.js205
2 files changed, 251 insertions, 0 deletions
diff --git a/tests/selectable.html b/tests/selectable.html
new file mode 100644
index 000000000..7f959ae87
--- /dev/null
+++ b/tests/selectable.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>jQuery UI Selectable Test Suite</title>
+
+ <link rel="stylesheet" href="qunit/testsuite.css" type="text/css" media="screen">
+ <!--link rel="stylesheet" href="../themes/flora/flora.selectable.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.selectable.js"></script>
+ <script type="text/javascript" src="../ui/ui.draggable.js"></script>
+ <script type="text/javascript" src="../ui/ui.resizable.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="selectable.js"></script>
+
+ <style type="text/css">
+ html { border: 0; }
+ </style>
+
+
+
+</head>
+<body class="flora">
+
+<h1 id="header">jQuery UI Selectable Test Suite</h1>
+<h2 id="banner"></h2>
+<h2 id="userAgent"></h2>
+
+<ol id="tests"></ol>
+
+<div id="main" style="position: absolute; top: -10000px; border: 1px solid black; padding: 10px; margin: 10px;">
+ <ul id="selectable1">
+ <li>Item 1</li>
+ <li>Item 2</li>
+ <li class="special">Item 3</li>
+ <li>Item 4</li>
+ <li>Item 5</li>
+ </ul>
+</div>
+
+</body>
+</html>
diff --git a/tests/selectable.js b/tests/selectable.js
new file mode 100644
index 000000000..2c127b11f
--- /dev/null
+++ b/tests/selectable.js
@@ -0,0 +1,205 @@
+/*
+ * selectable unit tests
+ */
+
+//
+// Selectable Test Helper Functions
+//
+var el;
+
+var drag = function(dx, dy) {
+ var off = el.offset(), pos = { clientX: off.left, clientY: off.top };
+ el.simulate("mousedown", pos);
+ $(document).simulate("mousemove", pos);
+ pos.clientX += dx;
+ pos.clientY += dy;
+ $(document).simulate("mousemove", pos);
+ $(document).simulate("mouseup", pos);
+}
+
+var border = function(el, side) { return parseInt(el.css('border-' + side + '-width')); }
+
+var margin = function(el, side) { return parseInt(el.css('margin-' + side)); }
+
+// Selectable Tests
+module("selectable");
+
+test("init", function() {
+ expect(6);
+
+ $("#selectable1").selectable().remove();
+ ok(true, '.selectable() called on element');
+
+ $([]).selectable().remove();
+ ok(true, '.selectable() called on empty collection');
+
+ $("<div/>").selectable().remove();
+ ok(true, '.selectable() called on disconnected DOMElement');
+
+ $("<div/>").selectable().selectable("foo").remove();
+ ok(true, 'arbitrary method called after init');
+
+ el = $("<div/>").selectable()
+ var foo = el.data("foo.selectable");
+ el.remove();
+ ok(true, 'arbitrary option getter after init');
+
+ $("<div/>").selectable().data("foo.selectable", "bar").remove();
+ ok(true, 'arbitrary option setter after init');
+});
+
+test("destroy", function() {
+ expect(6);
+
+ $("#selectable1").selectable().selectable("destroy").remove();
+ ok(true, '.selectable("destroy") called on element');
+
+ $([]).selectable().selectable("destroy").remove();
+ ok(true, '.selectable("destroy") called on empty collection');
+
+ $("<div/>").selectable().selectable("destroy").remove();
+ ok(true, '.selectable("destroy") called on disconnected DOMElement');
+
+ $("<div/>").selectable().selectable("destroy").selectable("foo").remove();
+ ok(true, 'arbitrary method called after destroy');
+
+ el = $("<div/>").selectable();
+ var foo = el.selectable("destroy").data("foo.selectable");
+ el.remove();
+ ok(true, 'arbitrary option getter after destroy');
+
+ $("<div/>").selectable().selectable("destroy").data("foo.selectable", "bar").remove();
+ ok(true, 'arbitrary option setter after destroy');
+});
+
+test("defaults", function() {
+ el = $('#selectable1').selectable();
+ var defaults = {
+ autoRefresh: true,
+ filter: '*'
+ };
+ $.each(defaults, function(key, val) {
+ var actual = el.data(key + ".selectable"), expected = val,
+ method = (expected && expected.constructor == Object) ?
+ compare2 : equals;
+ method(actual, expected, key);
+ });
+ el.remove();
+});
+
+module("selectable: Options");
+
+test("autoRefresh", function() {
+ expect(3);
+ el = $("#selectable1");
+ var actual, sel = $("*", el), selected = function() { actual += 1 };
+
+ actual = 0;
+ el = $("#selectable1").selectable({ autoRefresh: false, selected: selected });
+ sel.hide();
+ drag(1000, 1000);
+ equals(actual, sel.length);
+ el.selectable("destroy");
+
+ actual = 0;
+ sel.show();
+ el = $("#selectable1").selectable({ autoRefresh: true, selected: selected });
+ sel.hide();
+ drag(1000, 1000);
+ equals(actual, 0);
+ sel.show();
+ drag(1000, 1000);
+ equals(actual, sel.length);
+ el.selectable("destroy");
+ sel.show();
+});
+
+test("filter", function() {
+ expect(2);
+ el = $("#selectable1");
+ var actual, sel = $("*", el), selected = function() { actual += 1 };
+
+ actual = 0;
+ el = $("#selectable1").selectable({ filter: '.special', selected: selected });
+ drag(1000, 1000);
+ ok(sel.length != 1, "this test assumes more than 1 selectee");
+ equals(actual, 1);
+ el.selectable("destroy");
+});
+
+module("selectable: Methods");
+
+test("disable", function() {
+ expect(2);
+ var fired = false;
+
+ el = $("#selectable1");
+ el.selectable({
+ disabled: false,
+ start: function() { fired = true; }
+ });
+ el.simulate("drag", 20, 20);
+ equals(fired, true, "start fired");
+ el.selectable("disable");
+ fired = false;
+ el.simulate("drag", 20, 20);
+ equals(fired, false, "start fired");
+ el.selectable("destroy");
+});
+
+test("enable", function() {
+ expect(2);
+ var fired = false;
+
+ el = $("#selectable1");
+ el.selectable({
+ disabled: true,
+ start: function() { fired = true; }
+ });
+ el.simulate("drag", 20, 20);
+ equals(fired, false, "start fired");
+ el.selectable("enable");
+ el.simulate("drag", 20, 20);
+ equals(fired, true, "start fired");
+ el.selectable("destroy");
+});
+
+test("toggle", function() {
+ expect(2);
+
+ el = $("#selectable1").selectable({ disabled: true }).selectable("toggle");
+ equals(el.data("disabled.selectable"), false, "disabled -> enabled");
+ el.selectable("destroy");
+
+ el = $("#selectable1").selectable({ disabled: false }).selectable("toggle");
+ equals(el.data("disabled.selectable"), true, "enabled -> disabled");
+ el.selectable("destroy");
+});
+
+module("selectable: Callbacks");
+
+test("start", function() {
+ expect(2);
+ el = $("#selectable1");
+ el.selectable({
+ start: function(ev, ui) {
+ ok(true, "drag fired start callback");
+ equals(this, el[0], "context of callback");
+ }
+ });
+ el.simulate("drag", 20, 20);
+});
+
+test("stop", function() {
+ expect(2);
+ el = $("#selectable1");
+ el.selectable({
+ start: function(ev, ui) {
+ ok(true, "drag fired stop callback");
+ equals(this, el[0], "context of callback");
+ }
+ });
+ el.simulate("drag", 20, 20);
+});
+
+module("selectable: Tickets");