mirror of
https://github.com/jquery/jquery-ui.git
synced 2026-01-23 02:28:19 -05:00
tests - added selectable unit tests
This commit is contained in:
46
tests/selectable.html
Normal file
46
tests/selectable.html
Normal file
@@ -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>
|
||||
205
tests/selectable.js
Normal file
205
tests/selectable.js
Normal file
@@ -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");
|
||||
Reference in New Issue
Block a user