2
* selectable unit tests
6
// Selectable Test Helper Functions
10
var drag = function(dx, dy) {
11
var off = el.offset(), pos = { clientX: off.left, clientY: off.top };
12
el.simulate("mousedown", pos);
13
$(document).simulate("mousemove", pos);
16
$(document).simulate("mousemove", pos);
17
$(document).simulate("mouseup", pos);
20
var border = function(el, side) { return parseInt(el.css('border-' + side + '-width')); }
22
var margin = function(el, side) { return parseInt(el.css('margin-' + side)); }
27
test("init", function() {
30
$("#selectable1").selectable().remove();
31
ok(true, '.selectable() called on element');
33
$([]).selectable().remove();
34
ok(true, '.selectable() called on empty collection');
36
$("<div/>").selectable().remove();
37
ok(true, '.selectable() called on disconnected DOMElement');
39
$("<div/>").selectable().selectable("foo").remove();
40
ok(true, 'arbitrary method called after init');
42
el = $("<div/>").selectable()
43
var foo = el.data("foo.selectable");
45
ok(true, 'arbitrary option getter after init');
47
$("<div/>").selectable().data("foo.selectable", "bar").remove();
48
ok(true, 'arbitrary option setter after init');
51
test("destroy", function() {
54
$("#selectable1").selectable().selectable("destroy").remove();
55
ok(true, '.selectable("destroy") called on element');
57
$([]).selectable().selectable("destroy").remove();
58
ok(true, '.selectable("destroy") called on empty collection');
60
$("<div/>").selectable().selectable("destroy").remove();
61
ok(true, '.selectable("destroy") called on disconnected DOMElement');
63
$("<div/>").selectable().selectable("destroy").selectable("foo").remove();
64
ok(true, 'arbitrary method called after destroy');
66
el = $("<div/>").selectable();
67
var foo = el.selectable("destroy").data("foo.selectable");
69
ok(true, 'arbitrary option getter after destroy');
71
$("<div/>").selectable().selectable("destroy").data("foo.selectable", "bar").remove();
72
ok(true, 'arbitrary option setter after destroy');
75
test("defaults", function() {
76
el = $('#selectable1').selectable();
81
$.each(defaults, function(key, val) {
82
var actual = el.data(key + ".selectable"), expected = val,
83
method = (expected && expected.constructor == Object) ?
85
method(actual, expected, key);
90
module("selectable: Options");
92
test("autoRefresh", function() {
94
el = $("#selectable1");
95
var actual, sel = $("*", el), selected = function() { actual += 1 };
98
el = $("#selectable1").selectable({ autoRefresh: false, selected: selected });
101
equals(actual, sel.length);
102
el.selectable("destroy");
106
el = $("#selectable1").selectable({ autoRefresh: true, selected: selected });
112
equals(actual, sel.length);
113
el.selectable("destroy");
117
test("filter", function() {
119
el = $("#selectable1");
120
var actual, sel = $("*", el), selected = function() { actual += 1 };
123
el = $("#selectable1").selectable({ filter: '.special', selected: selected });
125
ok(sel.length != 1, "this test assumes more than 1 selectee");
127
el.selectable("destroy");
130
module("selectable: Methods");
132
test("disable", function() {
136
el = $("#selectable1");
139
start: function() { fired = true; }
141
el.simulate("drag", 20, 20);
142
equals(fired, true, "start fired");
143
el.selectable("disable");
145
el.simulate("drag", 20, 20);
146
equals(fired, false, "start fired");
147
el.selectable("destroy");
150
test("enable", function() {
154
el = $("#selectable1");
157
start: function() { fired = true; }
159
el.simulate("drag", 20, 20);
160
equals(fired, false, "start fired");
161
el.selectable("enable");
162
el.simulate("drag", 20, 20);
163
equals(fired, true, "start fired");
164
el.selectable("destroy");
167
test("toggle", function() {
170
el = $("#selectable1").selectable({ disabled: true }).selectable("toggle");
171
equals(el.data("disabled.selectable"), false, "disabled -> enabled");
172
el.selectable("destroy");
174
el = $("#selectable1").selectable({ disabled: false }).selectable("toggle");
175
equals(el.data("disabled.selectable"), true, "enabled -> disabled");
176
el.selectable("destroy");
179
module("selectable: Callbacks");
181
test("start", function() {
183
el = $("#selectable1");
185
start: function(ev, ui) {
186
ok(true, "drag fired start callback");
187
equals(this, el[0], "context of callback");
190
el.simulate("drag", 20, 20);
193
test("stop", function() {
195
el = $("#selectable1");
197
start: function(ev, ui) {
198
ok(true, "drag fired stop callback");
199
equals(this, el[0], "context of callback");
202
el.simulate("drag", 20, 20);
205
module("selectable: Tickets");