aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2013-04-02 19:42:19 +0200
committerFelix Nagel <info@felixnagel.com>2013-04-02 19:42:19 +0200
commit73c7342bc4418a902bf021c89e7d2c43172e004e (patch)
tree1c4d622cc91c2cfb76a0ee1e5977ac2b03799551 /tests
parent26c528a4a3b712760792c62b005307a2fe0f6ba6 (diff)
parent09b3533910e887377fc87126608db1ded06f38f6 (diff)
downloadjquery-ui-73c7342bc4418a902bf021c89e7d2c43172e004e.tar.gz
jquery-ui-73c7342bc4418a902bf021c89e7d2c43172e004e.zip
Merge branch 'master' into selectmenu
Diffstat (limited to 'tests')
-rw-r--r--tests/.jshintrc42
-rw-r--r--tests/unit/accordion/accordion_methods.js11
-rw-r--r--tests/unit/autocomplete/autocomplete_core.js10
-rw-r--r--tests/unit/button/button_methods.js2
-rw-r--r--tests/unit/draggable/draggable_core.js41
-rw-r--r--tests/unit/draggable/draggable_options.js26
-rw-r--r--tests/unit/position/position_core.js12
-rw-r--r--tests/unit/selectable/selectable_events.js27
-rw-r--r--tests/unit/sortable/sortable.html3
-rw-r--r--tests/unit/sortable/sortable_options.js74
-rw-r--r--tests/unit/spinner/spinner_core.js7
-rw-r--r--tests/unit/testsuite.js26
12 files changed, 188 insertions, 93 deletions
diff --git a/tests/.jshintrc b/tests/.jshintrc
index c196d86ef..b987c5df6 100644
--- a/tests/.jshintrc
+++ b/tests/.jshintrc
@@ -13,25 +13,25 @@
"trailing": true,
"undef": true,
"unused": true,
- "predef": [
- "asyncTest",
- "closeEnough",
- "deepEqual",
- "domEqual",
- "equal",
- "expect",
- "Globalize",
- "module",
- "notEqual",
- "notDeepEqual",
- "notStrictEqual",
- "ok",
- "QUnit",
- "start",
- "strictEqual",
- "stop",
- "test",
- "TestHelpers",
- "JSHINT"
- ]
+ "globals": {
+ "asyncTest": false,
+ "closeEnough": false,
+ "deepEqual": false,
+ "domEqual": false,
+ "equal": false,
+ "expect": false,
+ "Globalize": false,
+ "module": false,
+ "notEqual": false,
+ "notDeepEqual": false,
+ "notStrictEqual": false,
+ "ok": false,
+ "QUnit": true,
+ "start": false,
+ "strictEqual": false,
+ "stop": false,
+ "test": false,
+ "TestHelpers": true,
+ "JSHINT": false
+ }
} \ No newline at end of file
diff --git a/tests/unit/accordion/accordion_methods.js b/tests/unit/accordion/accordion_methods.js
index 7612479f7..1e809b310 100644
--- a/tests/unit/accordion/accordion_methods.js
+++ b/tests/unit/accordion/accordion_methods.js
@@ -35,7 +35,7 @@ test( "enable/disable", function() {
});
test( "refresh", function() {
- expect( 17 );
+ expect( 19 );
var element = $( "#navigation" )
.parent()
.height( 300 )
@@ -109,6 +109,15 @@ test( "refresh", function() {
element.find( "div.foo" ).eq( 0 ).remove();
element.accordion( "refresh" );
state( element, 1 );
+
+ // collapse all panels
+ element.accordion( "option", {
+ collapsible: true,
+ active: false
+ });
+ state( element, 0 );
+ element.accordion( "refresh" );
+ state( element, 0 );
});
test( "widget", function() {
diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js
index a9fc1143c..2961cb09a 100644
--- a/tests/unit/autocomplete/autocomplete_core.js
+++ b/tests/unit/autocomplete/autocomplete_core.js
@@ -188,4 +188,14 @@ test( "ARIA", function() {
"Live region for multiple values" );
});
+test( ".replaceWith() (#9172)", function() {
+ expect( 1 );
+
+ var element = $( "#autocomplete" ).autocomplete(),
+ replacement = "<div>test</div>",
+ parent = element.parent();
+ element.replaceWith( replacement );
+ equal( parent.html().toLowerCase(), replacement );
+});
+
}( jQuery ) );
diff --git a/tests/unit/button/button_methods.js b/tests/unit/button/button_methods.js
index c53444005..467938f00 100644
--- a/tests/unit/button/button_methods.js
+++ b/tests/unit/button/button_methods.js
@@ -15,7 +15,7 @@ test("destroy", function() {
test( "refresh: Ensure disabled state is preserved correctly.", function() {
expect( 8 );
-
+
var element = $( "<a href='#'></a>" );
element.button({ disabled: true }).button( "refresh" );
ok( element.button( "option", "disabled" ), "Anchor button should remain disabled after refresh" ); //See #8237
diff --git a/tests/unit/draggable/draggable_core.js b/tests/unit/draggable/draggable_core.js
index 2090f2fd9..f22d483a6 100644
--- a/tests/unit/draggable/draggable_core.js
+++ b/tests/unit/draggable/draggable_core.js
@@ -4,18 +4,7 @@
(function( $ ) {
-var relativeElement, absoluteElement;
-
-module( "draggable: core", {
- setup: function() {
- relativeElement = $("<div style='width: 200px; height: 100px;'>Relative</div>").appendTo("#qunit-fixture");
- absoluteElement = $("<div style='background: green; width: 200px; height: 100px; position: absolute; top: 10px; left: 10px;'><span>Absolute</span></div>").appendTo("#qunit-fixture");
- },
- teardown: function() {
- relativeElement.remove();
- absoluteElement.remove();
- }
-});
+module( "draggable: core" );
test( "element types", function() {
var typeNames = (
@@ -55,18 +44,18 @@ test( "element types", function() {
test( "No options, relative", function() {
expect( 1 );
- TestHelpers.draggable.shouldMove( relativeElement.draggable() );
+ TestHelpers.draggable.shouldMove( $( "#draggable1" ).draggable() );
});
test( "No options, absolute", function() {
expect( 1 );
- TestHelpers.draggable.shouldMove( absoluteElement.draggable() );
+ TestHelpers.draggable.shouldMove( $( "#draggable2" ).draggable() );
});
test( "resizable handle with complex markup (#8756 / #8757)", function() {
expect( 2 );
- relativeElement
+ $( "#draggable1" )
.append(
$("<div>")
.addClass("ui-resizable-handle ui-resizable-w")
@@ -74,7 +63,7 @@ test( "resizable handle with complex markup (#8756 / #8757)", function() {
);
var handle = $(".ui-resizable-w div"),
- target = relativeElement.draggable().resizable({ handles: "all" });
+ target = $( "#draggable1" ).draggable().resizable({ handles: "all" });
// todo: fix resizable so it doesn't require a mouseover
handle.simulate("mouseover").simulate( "drag", { dx: -50 } );
@@ -85,4 +74,24 @@ test( "resizable handle with complex markup (#8756 / #8757)", function() {
equal( target.width(), 200, "compare width" );
});
+test( "#8269: Removing draggable element on drop", function() {
+ expect( 1 );
+
+ var element = $( "#draggable1" ).wrap( "<div id='wrapper' />" ).draggable(),
+ dropOffset = $( "#droppable" ).offset();
+
+ $( "#droppable" ).droppable({
+ drop: function() {
+ $( "#wrapper" ).remove();
+ ok( true, "element removed from DOM on drop" );
+ }
+ });
+
+ element.simulate( "drag", {
+ handle: "corner",
+ x: dropOffset.left,
+ y: dropOffset.top
+ });
+});
+
})( jQuery );
diff --git a/tests/unit/draggable/draggable_options.js b/tests/unit/draggable/draggable_options.js
index f4fca0b2e..6a0cd593b 100644
--- a/tests/unit/draggable/draggable_options.js
+++ b/tests/unit/draggable/draggable_options.js
@@ -378,7 +378,7 @@ test( "containment, account for border", function() {
});
test( "containment, default, switching after initialization", function() {
- expect( 2 );
+ expect( 3 );
var element = $( "#draggable1" ).draggable({ containment: false });
@@ -393,9 +393,8 @@ test( "containment, default, switching after initialization", function() {
TestHelpers.draggable.testDrag( element, element, -100, -100, 0, 0 );
- // TODO: Switching back to false does not update to false
- // element.draggable( "option", "containment", false );
- // TestHelpers.draggable.testDrag( element, element, -100, -100, -100, -100 );
+ element.draggable( "option", "containment", false );
+ TestHelpers.draggable.testDrag( element, element, -100, -100, -100, -100 );
});
test( "{ cursor: 'auto' }, default", function() {
@@ -1057,11 +1056,11 @@ test( "scope", function() {
$( "#droppable" ).droppable({ scope: "tasks" });
- TestHelpers.draggable.testDrag( element, element, 100, 100, 0, 0, "revert: valid reverts when dropped on a droppable" );
+ TestHelpers.draggable.testDrag( element, element, 100, 100, 0, 0, "revert: valid reverts when dropped on a droppable in scope" );
$( "#droppable" ).droppable( "destroy" ).droppable({ scope: "nottasks" });
- TestHelpers.draggable.testDrag( element, element, 100, 100, 100, 100, "revert: valid reverts when dropped on a droppable" );
+ TestHelpers.draggable.testDrag( element, element, 100, 100, 100, 100, "revert: valid reverts when dropped on a droppable out of scope" );
});
test( "scroll, scrollSensitivity, and scrollSpeed", function() {
@@ -1113,7 +1112,8 @@ test( "#6817: auto scroll goes double distance when dragging", function() {
scroll: true,
stop: function( e, ui ) {
equal( ui.offset.top, newY, "offset of item matches pointer position after scroll" );
- equal( ui.offset.top - offsetBefore.top, distance, "offset of item only moves expected distance after scroll" );
+ // TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
+ closeEnough( ui.offset.top - offsetBefore.top, distance, 1, "offset of item only moves expected distance after scroll" );
}
}),
scrollSensitivity = element.draggable( "option", "scrollSensitivity" ),
@@ -1138,7 +1138,7 @@ test( "#6817: auto scroll goes double distance when dragging", function() {
});
test( "snap, snapMode, and snapTolerance", function() {
- expect( 9 );
+ expect( 10 );
var newX, newY,
snapTolerance = 15,
@@ -1164,7 +1164,9 @@ test( "snap, snapMode, and snapTolerance", function() {
moves: 1
});
- deepEqual( element.offset(), { top: newY, left: newX }, "doesn't snap outside the snapTolerance" );
+ // TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
+ closeEnough( element.offset().left, newX, 1, "doesn't snap outside the snapTolerance" );
+ closeEnough( element.offset().top, newY, 1, "doesn't snap outside the snapTolerance" );
newX += 3;
@@ -1258,7 +1260,7 @@ test( "snap, snapMode, and snapTolerance", function() {
});
test( "#8459: element can snap to an element that was removed during drag", function() {
- expect( 1 );
+ expect( 2 );
var newX, newY,
snapTolerance = 15,
@@ -1287,7 +1289,9 @@ test( "#8459: element can snap to an element that was removed during drag", func
moves: 1
});
- deepEqual( element.offset(), { top: newY, left: newX }, "doesn't snap to a removed element" );
+ // TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
+ closeEnough( element.offset().left, newX, 1, "doesn't snap to a removed element" );
+ closeEnough( element.offset().top, newY, 1, "doesn't snap to a removed element" );
});
test( "#8165: Snapping large rectangles to small rectangles doesn't snap properly", function() {
diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js
index cefd7929c..e03d4c111 100644
--- a/tests/unit/position/position_core.js
+++ b/tests/unit/position/position_core.js
@@ -221,7 +221,9 @@ test( "of", function() {
});
test( "offsets", function() {
- expect( 7 );
+ expect( 9 );
+
+ var offset;
$( "#elx" ).position({
my: "left top",
@@ -261,7 +263,9 @@ test( "offsets", function() {
of: "#parentx",
collision: "none"
});
- deepEqual( $( "#elx" ).offset(), { top: 65, left: 37 }, "decimal percentage offsets in my" );
+ offset = $( "#elx" ).offset();
+ equal( Math.round( offset.top ), 65, "decimal percentage offsets in my" );
+ equal( Math.round( offset.left ), 37, "decimal percentage offsets in my" );
$( "#elx" ).position({
my: "left+10.4 top-10.6",
@@ -269,7 +273,9 @@ test( "offsets", function() {
of: "#parentx",
collision: "none"
});
- deepEqual( $( "#elx" ).offset(), { top: 49, left: 50 }, "decimal offsets in my" );
+ offset = $( "#elx" ).offset();
+ equal( Math.round( offset.top ), 49, "decimal offsets in my" );
+ equal( Math.round( offset.left ), 50, "decimal offsets in my" );
$( "#elx" ).position({
my: "left+right top-left",
diff --git a/tests/unit/selectable/selectable_events.js b/tests/unit/selectable/selectable_events.js
index f933d3890..ae35fa3ce 100644
--- a/tests/unit/selectable/selectable_events.js
+++ b/tests/unit/selectable/selectable_events.js
@@ -38,27 +38,30 @@ test( "stop", function() {
test( "mousedown: initial position of helper", function() {
expect( 2 );
- var contentToForceScroll, helper,
- element = $("#selectable1").selectable();
+ var helperOffset,
+ element = $( "#selectable1" ).selectable(),
+ contentToForceScroll = $( "<div>" ).css({
+ height: "10000px",
+ width: "10000px"
+ });
- contentToForceScroll = $("<div>").css({
- height: "10000px",
- width: "10000px"
- });
+ contentToForceScroll.appendTo( "body" );
+ $( window ).scrollTop( 100 ).scrollLeft( 100 );
- contentToForceScroll.appendTo("body");
- $( window ).scrollTop( 1 ).scrollLeft( 1 );
element.simulate( "mousedown", {
clientX: 10,
clientY: 10
});
- helper = $(".ui-selectable-helper");
- equal( helper.css("top"), "11px", "Scroll top should be accounted for." );
- equal( helper.css("left"), "11px", "Scroll left should be accounted for." );
+ // we do a GTE comparison here because IE7 erroneously subtracts
+ // 2 pixels from a simulated mousedown for clientX/Y
+ // Support: IE7
+ helperOffset = $( ".ui-selectable-helper" ).offset();
+ ok( helperOffset.top >= 99, "Scroll top should be accounted for." );
+ ok( helperOffset.left >= 99, "Scroll left should be accounted for." );
// Cleanup
- element.simulate("mouseup");
+ element.simulate( "mouseup" );
contentToForceScroll.remove();
$( window ).scrollTop( 0 ).scrollLeft( 0 );
});
diff --git a/tests/unit/sortable/sortable.html b/tests/unit/sortable/sortable.html
index 7db14d482..8e0bac501 100644
--- a/tests/unit/sortable/sortable.html
+++ b/tests/unit/sortable/sortable.html
@@ -44,6 +44,9 @@
border-width: 0;
height:19px;
}
+ #sortable-table {
+ width: 100%;
+ }
</style>
</head>
<body>
diff --git a/tests/unit/sortable/sortable_options.js b/tests/unit/sortable/sortable_options.js
index 8dcf0e82f..f2beb4dbc 100644
--- a/tests/unit/sortable/sortable_options.js
+++ b/tests/unit/sortable/sortable_options.js
@@ -136,21 +136,51 @@ test( "#8792: issues with floated items in connected lists", function() {
element = $( "#qunit-fixture li:eq(0)" );
+ // move the first li to the right of the second li in the first ul
element.simulate( "drag", {
- dx: 51,
+ dx: 55,
moves: 15
});
equal( changeCount, 1, "change fired only once (no jitters) when dragging a floated sortable in it's own container" );
+ // move the first li ( which is now in the second spot )
+ // through the first spot in the second ul to the second spot in the second ul
element.simulate( "drag", {
- dx: 50,
+ dx: 100,
moves: 15
});
equal( changeCount, 3, "change fired once for each expected change when dragging a floated sortable to a connected container" );
});
+test( "#8301: single axis with connected list", function() {
+ expect( 1 );
+
+ var element = $( "#sortable" ).sortable({
+ axis: "y",
+ tolerance: "pointer",
+ connectWith: ".connected"
+ });
+
+ $( "<ul class='connected'><li>Item 7</li><li>Item 8</li></ul>" )
+ .sortable({
+ axis: "y",
+ tolerance: "pointer",
+ connectWith: "#sortable",
+ receive: function() {
+ ok( true, "connected list received item" );
+ }
+ })
+ .insertAfter( element );
+
+ element.find( "li" ).eq( 0 ).simulate( "drag", {
+ handle: "corner",
+ dy: 120,
+ moves: 1
+ });
+});
+
/*
test("{ connectWith: false }, default", function() {
ok(false, "missing test - untested code is broken code.");
@@ -302,7 +332,7 @@ test( "{ placeholder: false } img", function() {
var element = $( "#sortable-images" ).sortable({
start: function( event, ui ) {
- equal( ui.placeholder.attr( "src" ), "../images/jqueryui_32x32.png", "placeholder img has correct src" );
+ ok( ui.placeholder.attr( "src" ).indexOf( "images/jqueryui_32x32.png" ) > 0, "placeholder img has correct src" );
equal( ui.placeholder.height(), 32, "placeholder has correct height" );
equal( ui.placeholder.width(), 32, "placeholder has correct width" );
}
@@ -329,19 +359,31 @@ test( "{ placeholder: String }", function() {
});
test( "{ placholder: String } tr", function() {
- expect( 3 );
-
- var element = $( "#sortable-table tbody" ).sortable({
- placeholder: "test",
- start: function( event, ui ) {
- ok( ui.placeholder.hasClass( "test" ), "placeholder has class" );
- equal( ui.placeholder.children().length, 1, "placeholder tr contains a td" );
- equal( ui.placeholder.children().html(), $( "<span>&#160;</span>" ).html(),
- "placeholder td has content for forced dimensions" );
- }
- });
-
- element.find( "tr" ).eq( 0 ).simulate( "drag", {
+ expect( 4 );
+
+ var originalWidths,
+ element = $( "#sortable-table tbody" ).sortable({
+ placeholder: "test",
+ start: function( event, ui ) {
+ var currentWidths = otherRow.children().map(function() {
+ return $( this ).width();
+ }).get();
+ ok( ui.placeholder.hasClass( "test" ), "placeholder has class" );
+ deepEqual( currentWidths, originalWidths, "table cells maintian size" );
+ equal( ui.placeholder.children().length, dragRow.children().length,
+ "placeholder has correct number of cells" );
+ equal( ui.placeholder.children().html(), $( "<span>&#160;</span>" ).html(),
+ "placeholder td has content for forced dimensions" );
+ }
+ }),
+ rows = element.children( "tr" ),
+ dragRow = rows.eq( 0 ),
+ otherRow = rows.eq( 1 );
+
+ originalWidths = otherRow.children().map(function() {
+ return $( this ).width();
+ }).get();
+ dragRow.simulate( "drag", {
dy: 1
});
});
diff --git a/tests/unit/spinner/spinner_core.js b/tests/unit/spinner/spinner_core.js
index bea5f9122..03088fecd 100644
--- a/tests/unit/spinner/spinner_core.js
+++ b/tests/unit/spinner/spinner_core.js
@@ -94,8 +94,11 @@ asyncTest( "blur input while spinning with UP", function() {
function step2() {
value = element.val();
ok( value > 11, "repeating while key is down" );
- element[0].blur();
- setTimeout( step3, 250 );
+
+ element.bind( "blur", function() {
+ value = element.val();
+ setTimeout( step3, 750 );
+ })[ 0 ].blur();
}
function step3() {
diff --git a/tests/unit/testsuite.js b/tests/unit/testsuite.js
index d2403beeb..ddc59ed08 100644
--- a/tests/unit/testsuite.js
+++ b/tests/unit/testsuite.js
@@ -77,16 +77,22 @@ TestHelpers.testJshint = function( module ) {
dataType: "text"
})
).done(function( hintArgs, srcArgs ) {
- var passed = JSHINT( srcArgs[ 0 ], hintArgs[ 0 ] ),
- errors = $.map( JSHINT.errors, function( error ) {
- // JSHINT may report null if there are too many errors
- if ( !error ) {
- return;
- }
-
- return "[L" + error.line + ":C" + error.character + "] " +
- error.reason + "\n" + error.evidence + "\n";
- }).join( "\n" );
+ var globals, passed, errors,
+ jshintrc = hintArgs[ 0 ],
+ source = srcArgs[ 0 ];
+
+ globals = jshintrc.globals || {};
+ delete jshintrc.globals;
+ passed = JSHINT( source, jshintrc, globals ),
+ errors = $.map( JSHINT.errors, function( error ) {
+ // JSHINT may report null if there are too many errors
+ if ( !error ) {
+ return;
+ }
+
+ return "[L" + error.line + ":C" + error.character + "] " +
+ error.reason + "\n" + error.evidence + "\n";
+ }).join( "\n" );
ok( passed, errors );
start();
})