From 3c1a3ca252a24f63ab7f4ac819cc7744eaf57c77 Mon Sep 17 00:00:00 2001 From: Mike Sherov Date: Sun, 7 Apr 2013 12:10:59 -0400 Subject: [PATCH] Draggable Tests: fix old Safari and old Opera tests with jQuery < 1.8 tests by accounting for a bug in $.contains on disconnected Elements. --- tests/unit/draggable/draggable_options.js | 12 +++++++++--- tests/unit/draggable/draggable_test_helpers.js | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/unit/draggable/draggable_options.js b/tests/unit/draggable/draggable_options.js index 6a0cd593b3a..635d318e760 100644 --- a/tests/unit/draggable/draggable_options.js +++ b/tests/unit/draggable/draggable_options.js @@ -1289,9 +1289,15 @@ test( "#8459: element can snap to an element that was removed during drag", func moves: 1 }); - // 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" ); + // Support: Opera 12.10, Safari 5.1, jQuery <1.8 + if ( TestHelpers.draggable.unreliableContains ) { + ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" ); + ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" ); + } else { + // 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/draggable/draggable_test_helpers.js b/tests/unit/draggable/draggable_test_helpers.js index 44e37c55961..24617560484 100644 --- a/tests/unit/draggable/draggable_test_helpers.js +++ b/tests/unit/draggable/draggable_test_helpers.js @@ -1,6 +1,11 @@ TestHelpers.draggable = { // todo: remove the unreliable offset hacks unreliableOffset: $.ui.ie && ( !document.documentMode || document.documentMode < 8 ) ? 2 : 0, + // Support: Opera 12.10, Safari 5.1, jQuery <1.8 + unreliableContains: function(){ + var element = $( "
" ); + return $.contains( element[ 0 ].ownerDocument, element[ 0 ] ); + }(), testDrag: function(el, handle, dx, dy, expectedDX, expectedDY, msg) { var offsetAfter, actual, expected, offsetBefore = el.offset();