Skip to content

Commit c900187

Browse files
committed
Draggable Tests: Added tests for appendTo and axis
1 parent c70b3dc commit c900187

File tree

2 files changed

+124
-4
lines changed

2 files changed

+124
-4
lines changed

tests/unit/draggable/draggable_options.js

Lines changed: 105 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ test("{ addClasses: false }", function() {
2121
el.draggable("destroy");
2222
});
2323

24-
test("{ appendTo: 'parent' }, default", function() {
24+
// TODO: This doesn't actually test whether append happened, possibly remove
25+
test("{ appendTo: 'parent' }, default, no clone", function() {
2526
expect( 2 );
2627
var el = $("#draggable2").draggable({ appendTo: "parent" });
2728
TestHelpers.draggable.shouldMove(el);
@@ -31,16 +32,19 @@ test("{ appendTo: 'parent' }, default", function() {
3132

3233
});
3334

34-
test("{ appendTo: Element }", function() {
35+
// TODO: This doesn't actually test whether append happened, possibly remove
36+
test("{ appendTo: Element }, no clone", function() {
3537
expect( 2 );
36-
var el = $("#draggable2").draggable({ appendTo: $("#draggable2").parent()[0] });
38+
var el = $("#draggable2").draggable({appendTo: $("#draggable2").parent()[0] });
39+
3740
TestHelpers.draggable.shouldMove(el);
3841

3942
el = $("#draggable1").draggable({ appendTo: $("#draggable2").parent()[0] });
4043
TestHelpers.draggable.shouldMove(el);
4144
});
4245

43-
test("{ appendTo: Selector }", function() {
46+
// TODO: This doesn't actually test whether append happened, possibly remove
47+
test("{ appendTo: Selector }, no clone", function() {
4448
expect( 2 );
4549
var el = $("#draggable2").draggable({ appendTo: "#main" });
4650
TestHelpers.draggable.shouldMove(el);
@@ -49,6 +53,83 @@ test("{ appendTo: Selector }", function() {
4953
TestHelpers.draggable.shouldMove(el);
5054
});
5155

56+
test("{ appendTo: 'parent' }, default", function() {
57+
58+
expect(2);
59+
60+
var el = $("#draggable1").draggable();
61+
62+
TestHelpers.draggable.trackAppendedParent(el);
63+
64+
equal( el.draggable( "option", "appendTo" ), "parent" );
65+
66+
TestHelpers.draggable.move(el, 1, 1);
67+
equal( el.data("last_parent"), $("#qunit-fixture")[0] );
68+
69+
});
70+
71+
test("{ appendTo: Element }", function() {
72+
73+
expect(1);
74+
75+
var appendTo = $("#draggable2").parent()[0],
76+
el = $("#draggable1").draggable({ appendTo: appendTo });
77+
78+
TestHelpers.draggable.trackAppendedParent(el);
79+
80+
TestHelpers.draggable.move(el, 1, 1);
81+
equal( el.data("last_parent"), appendTo );
82+
83+
});
84+
85+
test("{ appendTo: jQuery }", function() {
86+
87+
expect(1);
88+
89+
var appendTo = $("#draggable2").parent(),
90+
el = $("#draggable1").draggable({ appendTo: appendTo });
91+
92+
TestHelpers.draggable.trackAppendedParent(el);
93+
94+
TestHelpers.draggable.move(el, 1, 1);
95+
equal( el.data("last_parent"), appendTo[0] );
96+
97+
});
98+
test("{ appendTo: Selector }", function() {
99+
100+
expect(1);
101+
102+
103+
var appendTo = "#main",
104+
el = $("#draggable1").draggable({ appendTo: appendTo });
105+
106+
TestHelpers.draggable.trackAppendedParent(el);
107+
108+
TestHelpers.draggable.move(el, 1, 1);
109+
equal( el.data("last_parent"), $(appendTo)[0] );
110+
111+
});
112+
113+
114+
test("{ appendTo: 'parent' }, switching after initialization", function() {
115+
116+
expect(2);
117+
118+
var el = $("#draggable1").draggable({ helper : "clone" });
119+
120+
TestHelpers.draggable.trackAppendedParent(el);
121+
122+
// Move and make sure el was appended to fixture
123+
TestHelpers.draggable.move(el, 1, 1);
124+
equal( el.data("last_parent"), $("#qunit-fixture")[0] );
125+
126+
// Move and make sure el was appended to main
127+
el.draggable( "option", "appendTo", $("#main") );
128+
TestHelpers.draggable.move(el, 2, 2);
129+
equal( el.data("last_parent"), $("#main")[0] );
130+
131+
});
132+
52133
test("{ axis: false }, default", function() {
53134
expect( 1 );
54135
var el = $("#draggable2").draggable({ axis: false });
@@ -87,6 +168,26 @@ test("{ axis: ? }, unexpected", function() {
87168
});
88169
});
89170

171+
test("{ axis: false }, switching after initialization", function() {
172+
173+
expect(3);
174+
175+
var el;
176+
177+
// Any direction
178+
el = $("#draggable1").draggable({ axis : false });
179+
TestHelpers.draggable.testDrag(el, el, 50, 50, 50, 50);
180+
181+
// Only horizontal
182+
el.draggable("option", "axis", "x");
183+
TestHelpers.draggable.testDrag(el, el, 50, 50, 50, 0);
184+
185+
// Vertical only
186+
el.draggable("option", "axis", "y");
187+
TestHelpers.draggable.testDrag(el, el, 50, 50, 0, 50);
188+
189+
});
190+
90191
test("{ cancel: 'input,textarea,button,select,option' }, default", function() {
91192
expect( 2 );
92193

tests/unit/draggable/draggable_test_helpers.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,24 @@ TestHelpers.draggable = {
5050
},
5151
margin: function(el, side) {
5252
return parseInt(el.css("margin-" + side), 10) || 0;
53+
},
54+
move: function( el, x, y ) {
55+
56+
$( el ).simulate( "drag", {
57+
dx: x,
58+
dy: y
59+
});
60+
61+
},
62+
trackAppendedParent : function( el ) {
63+
64+
// appendTo ignored without being clone
65+
el.draggable( "option", "helper", "clone" );
66+
67+
el.on( "drag", function(e,ui) {
68+
// Get what parent is at time of drag
69+
el.data( "last_parent", ui.helper.parent()[0] );
70+
});
71+
5372
}
5473
};

0 commit comments

Comments
 (0)