r1989 - trunk/tests/unit/selectable

r1989 - trunk/tests/unit/selectable


Author: rdworth
Date: Tue Feb 3 20:53:09 2009
New Revision: 1989
Removed:
trunk/tests/unit/selectable/selectable.js
Modified:
trunk/tests/unit/selectable/selectable.html
trunk/tests/unit/selectable/selectable_core.js
trunk/tests/unit/selectable/selectable_defaults.js
trunk/tests/unit/selectable/selectable_events.js
trunk/tests/unit/selectable/selectable_methods.js
trunk/tests/unit/selectable/selectable_options.js
trunk/tests/unit/selectable/selectable_tickets.js
Log:
selectable unit tests: split tests into individual files
Modified: trunk/tests/unit/selectable/selectable.html
==============================================================================
--- trunk/tests/unit/selectable/selectable.html    (original)
+++ trunk/tests/unit/selectable/selectable.html    Tue Feb 3 20:53:09 2009
@@ -12,7 +12,12 @@
    <script type="text/javascript"
src="../../../external/qunit/testrunner.js"></script>
    <script type="text/javascript"
src="../../../external/simulate/jquery.simulate.js"></script>
-    <script type="text/javascript" src="selectable.js"></script>
+    <script type="text/javascript" src="selectable_core.js"></script>
+    <script type="text/javascript" src="selectable_defaults.js"></script>
+    <script type="text/javascript" src="selectable_events.js"></script>
+    <script type="text/javascript" src="selectable_methods.js"></script>
+    <script type="text/javascript" src="selectable_options.js"></script>
+    <script type="text/javascript" src="selectable_tickets.js"></script>
</head>
<body>
Modified: trunk/tests/unit/selectable/selectable_core.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_core.js    (original)
+++ trunk/tests/unit/selectable/selectable_core.js    Tue Feb 3 20:53:09 2009
@@ -1,6 +1,23 @@
/*
* selectable_core.js
*/
+
+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)); }
+
(function($) {
module("selectable: core");
Modified: trunk/tests/unit/selectable/selectable_defaults.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_defaults.js    (original)
+++ trunk/tests/unit/selectable/selectable_defaults.js    Tue Feb 3 20:53:09
2009
@@ -3,7 +3,14 @@
*/
var selectable_defaults = {
-    disabled: false
+    appendTo: 'body',
+    autoRefresh: true,
+    cancel: ':input,option',
+    delay: 0,
+    disabled: false,
+    distance: 0,
+    filter: '*',
+    tolerance: 'touch'
};
commonWidgetTests('selectable', { defaults: selectable_defaults });
Modified: trunk/tests/unit/selectable/selectable_events.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_events.js    (original)
+++ trunk/tests/unit/selectable/selectable_events.js    Tue Feb 3 20:53:09
2009
@@ -5,8 +5,28 @@
module("selectable: events");
-test("testname", function() {
-    ok(false, "missing test - untested code is broken code.");
+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);
});
})(jQuery);
Modified: trunk/tests/unit/selectable/selectable_methods.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_methods.js    (original)
+++ trunk/tests/unit/selectable/selectable_methods.js    Tue Feb 3 20:53:09
2009
@@ -5,8 +5,87 @@
module("selectable: methods");
-test("testname", function() {
-    ok(false, "missing test - untested code is broken code.");
+test("init", function() {
+    expect(6);
+
+    $("<div></div>").appendTo('body').selectable().remove();
+    ok(true, '.selectable() called on element');
+
+    $([]).selectable().remove();
+    ok(true, '.selectable() called on empty collection');
+
+    $("<div></div>").selectable().remove();
+    ok(true, '.selectable() called on disconnected DOMElement');
+
+    $("<div></div>").selectable().selectable("foo").remove();
+    ok(true, 'arbitrary method called after init');
+
+    el = $("<div></div>").selectable()
+    var foo = el.data("foo.selectable");
+    el.remove();
+    ok(true, 'arbitrary option getter after init');
+
+    $("<div></div>").selectable().data("foo.selectable", "bar").remove();
+    ok(true, 'arbitrary option setter after init');
+});
+
+test("destroy", function() {
+    expect(6);
+
+    
$("<div></div>").appendTo('body').selectable().selectable("destroy").remove();
+    ok(true, '.selectable("destroy") called on element');
+
+    $([]).selectable().selectable("destroy").remove();
+    ok(true, '.selectable("destroy") called on empty collection');
+
+    $("<div></div>").selectable().selectable("destroy").remove();
+    ok(true, '.selectable("destroy") called on disconnected DOMElement');
+
+    
$("<div></div>").selectable().selectable("destroy").selectable("foo").remove();
+    ok(true, 'arbitrary method called after destroy');
+
+    el = $("<div></div>").selectable();
+    var foo = el.selectable("destroy").data("foo.selectable");
+    el.remove();
+    ok(true, 'arbitrary option getter after destroy');
+
+    
$("<div></div>").selectable().selectable("destroy").data("foo.selectable", "bar").remove();
+    ok(true, 'arbitrary option setter after 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("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");
});
})(jQuery);
Modified: trunk/tests/unit/selectable/selectable_options.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_options.js    (original)
+++ trunk/tests/unit/selectable/selectable_options.js    Tue Feb 3 20:53:09
2009
@@ -5,8 +5,42 @@
module("selectable: options");
-test("testname", function() {
-    ok(false, "missing test - untested code is broken code.");
+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");
});
})(jQuery);
Modified: trunk/tests/unit/selectable/selectable_tickets.js
==============================================================================
--- trunk/tests/unit/selectable/selectable_tickets.js    (original)
+++ trunk/tests/unit/selectable/selectable_tickets.js    Tue Feb 3 20:53:09
2009
@@ -5,8 +5,4 @@
module("selectable: tickets");
-test("testname", function() {
-    ok(false, "missing test - untested code is broken code.");
-});
-
})(jQuery);