Skip to content
Permalink
Browse files

tests - added selectable unit tests

  • Loading branch information
rdworth committed Jun 9, 2008
1 parent 279b579 commit 665f17ce2c12105697b98655a6c398dd2ad63b2f
Showing with 251 additions and 0 deletions.
  1. +46 −0 tests/selectable.html
  2. +205 −0 tests/selectable.js
@@ -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>
@@ -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");

0 comments on commit 665f17c

Please sign in to comment.
You can’t perform that action at this time.