From bde431bb449b1d957d4e0b736111ff342f2a919d Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 7 Apr 2015 10:55:52 -0400 Subject: Tests: Rename files Ref gh-1528 --- tests/unit/tooltip/common-deprecated.js | 31 ++++ tests/unit/tooltip/common.js | 30 ++++ tests/unit/tooltip/core.js | 224 ++++++++++++++++++++++++ tests/unit/tooltip/deprecated.html | 29 +++ tests/unit/tooltip/deprecated.js | 16 ++ tests/unit/tooltip/events.js | 60 +++++++ tests/unit/tooltip/methods.js | 139 +++++++++++++++ tests/unit/tooltip/options.js | 215 +++++++++++++++++++++++ tests/unit/tooltip/tooltip_common.js | 30 ---- tests/unit/tooltip/tooltip_common_deprecated.js | 31 ---- tests/unit/tooltip/tooltip_core.js | 224 ------------------------ tests/unit/tooltip/tooltip_deprecated.html | 29 --- tests/unit/tooltip/tooltip_deprecated.js | 16 -- tests/unit/tooltip/tooltip_events.js | 60 ------- tests/unit/tooltip/tooltip_methods.js | 139 --------------- tests/unit/tooltip/tooltip_options.js | 215 ----------------------- 16 files changed, 744 insertions(+), 744 deletions(-) create mode 100644 tests/unit/tooltip/common-deprecated.js create mode 100644 tests/unit/tooltip/common.js create mode 100644 tests/unit/tooltip/core.js create mode 100644 tests/unit/tooltip/deprecated.html create mode 100644 tests/unit/tooltip/deprecated.js create mode 100644 tests/unit/tooltip/events.js create mode 100644 tests/unit/tooltip/methods.js create mode 100644 tests/unit/tooltip/options.js delete mode 100644 tests/unit/tooltip/tooltip_common.js delete mode 100644 tests/unit/tooltip/tooltip_common_deprecated.js delete mode 100644 tests/unit/tooltip/tooltip_core.js delete mode 100644 tests/unit/tooltip/tooltip_deprecated.html delete mode 100644 tests/unit/tooltip/tooltip_deprecated.js delete mode 100644 tests/unit/tooltip/tooltip_events.js delete mode 100644 tests/unit/tooltip/tooltip_methods.js delete mode 100644 tests/unit/tooltip/tooltip_options.js (limited to 'tests/unit/tooltip') diff --git a/tests/unit/tooltip/common-deprecated.js b/tests/unit/tooltip/common-deprecated.js new file mode 100644 index 000000000..d32e7656d --- /dev/null +++ b/tests/unit/tooltip/common-deprecated.js @@ -0,0 +1,31 @@ +define( [ + "lib/common", + "ui/tooltip" +], function( common ) { + +common.testWidget( "tooltip", { + defaults: { + classes: { + "ui-tooltip": "ui-corner-all ui-widget-shadow" + }, + content: function() {}, + disabled: false, + hide: true, + items: "[title]:not([disabled])", + position: { + my: "left top+15", + at: "left bottom", + collision: "flipfit flip" + }, + show: true, + tooltipClass: null, + track: false, + + // callbacks + close: null, + create: null, + open: null + } +}); + +} ); diff --git a/tests/unit/tooltip/common.js b/tests/unit/tooltip/common.js new file mode 100644 index 000000000..f8045fc33 --- /dev/null +++ b/tests/unit/tooltip/common.js @@ -0,0 +1,30 @@ +define( [ + "lib/common", + "ui/tooltip" +], function( common ) { + +common.testWidget( "tooltip", { + defaults: { + classes: { + "ui-tooltip": "ui-corner-all ui-widget-shadow" + }, + content: function() {}, + disabled: false, + hide: true, + items: "[title]:not([disabled])", + position: { + my: "left top+15", + at: "left bottom", + collision: "flipfit flip" + }, + show: true, + track: false, + + // callbacks + close: null, + create: null, + open: null + } +}); + +} ); diff --git a/tests/unit/tooltip/core.js b/tests/unit/tooltip/core.js new file mode 100644 index 000000000..fa24d72ce --- /dev/null +++ b/tests/unit/tooltip/core.js @@ -0,0 +1,224 @@ +define( [ + "jquery", + "ui/tooltip" +], function( $ ) { + +module( "tooltip: core" ); + +test( "markup structure", function( assert ) { + expect( 7 ); + var element = $( "#tooltipped1" ).tooltip(), + tooltip = $( ".ui-tooltip" ); + + equal( element.attr( "aria-describedby" ), undefined, "no aria-describedby on init" ); + equal( tooltip.length, 0, "no tooltip on init" ); + + element.tooltip( "open" ); + tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); + equal( tooltip.length, 1, "tooltip exists" ); + equal( element.attr( "aria-describedby" ), tooltip.attr( "id" ), "aria-describedby" ); + assert.hasClasses( tooltip, "ui-tooltip ui-widget ui-widget-content ui-widget-shadow" ); + equal( tooltip.length, 1, ".ui-tooltip exists" ); + equal( tooltip.find( ".ui-tooltip-content" ).length, 1, + ".ui-tooltip-content exists" ); +}); + +test( "accessibility", function() { + expect( 15 ); + + var tooltipId, tooltip, + element = $( "#multiple-describedby" ).tooltip(), + liveRegion = element.tooltip( "instance" ).liveRegion; + + equal( liveRegion.find( ">div" ).length, 0 ); + equal( liveRegion.attr( "role" ), "log" ); + equal( liveRegion.attr( "aria-live" ), "assertive" ); + equal( liveRegion.attr( "aria-relevant" ), "additions" ); + element.tooltip( "open" ); + tooltipId = element.data( "ui-tooltip-id" ); + tooltip = $( "#" + tooltipId ); + equal( tooltip.attr( "role" ), "tooltip", "role" ); + equal( element.attr( "aria-describedby" ), "fixture-span " + tooltipId, + "multiple describedby when open" ); + + equal( element.attr( "title" ), null, "no title when open" ); + equal( liveRegion.children().length, 1 ); + equal( liveRegion.children().last().html(), "..." ); + element.tooltip( "close" ); + equal( element.attr( "aria-describedby" ), "fixture-span", + "correct describedby when closed" ); + equal( element.attr( "title" ), "...", "title restored when closed" ); + + element.tooltip( "open" ); + equal( liveRegion.children().length, 2, + "After the second tooltip show, there should be two children" ); + equal( liveRegion.children().filter( ":visible" ).length, 1, + "Only one of the children should be visible" ); + ok( liveRegion.children().last().is( ":visible" ), + "Only the last child should be visible" ); + element.tooltip( "close" ); + + element.tooltip( "destroy" ); + equal( liveRegion.parent().length, 0, + "Tooltip liveregion element should be removed" ); +}); + +test( "delegated removal", function() { + expect( 2 ); + + var container = $( "#contains-tooltipped" ).tooltip(), + element = $( "#contained-tooltipped" ); + + element.trigger( "mouseover" ); + equal( $( ".ui-tooltip" ).length, 1 ); + + container.empty(); + equal( $( ".ui-tooltip" ).length, 0 ); +}); + +test( "nested tooltips", function() { + expect( 2 ); + + var child = $( "#contained-tooltipped" ), + parent = $( "#contains-tooltipped" ).tooltip({ + show: null, + hide: null + }); + + parent.trigger( "mouseover" ); + equal( $( ".ui-tooltip:visible" ).text(), "parent" ); + + child.trigger( "mouseover" ); + equal( $( ".ui-tooltip" ).text(), "child" ); +}); + +// #8742 +test( "form containing an input with name title", function() { + expect( 4 ); + + var form = $( "#tooltip-form" ).tooltip({ + show: null, + hide: null + }), + input = form.find( "[name=title]" ); + + equal( $( ".ui-tooltip" ).length, 0, "no tooltips on init" ); + + input.trigger( "mouseover" ); + equal( $( ".ui-tooltip" ).length, 1, "tooltip for input" ); + input.trigger( "mouseleave" ); + equal( $( ".ui-tooltip" ).length, 0, "tooltip for input closed" ); + + form.trigger( "mouseover" ); + equal( $( ".ui-tooltip" ).length, 0, "no tooltip for form" ); +}); + +test( "tooltip on .ui-state-disabled element", function() { + expect( 2 ); + + var container = $( "#contains-tooltipped" ).tooltip(), + element = $( "#contained-tooltipped" ).addClass( "ui-state-disabled" ); + + element.trigger( "mouseover" ); + equal( $( ".ui-tooltip" ).length, 1 ); + + container.empty(); + equal( $( ".ui-tooltip" ).length, 0 ); +}); + +// http://bugs.jqueryui.com/ticket/8740 +asyncTest( "programmatic focus with async content", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip({ + content: function( response ) { + setTimeout(function() { + response( "test" ); + }); + } + }); + + element.bind( "tooltipopen", function( event ) { + deepEqual( event.originalEvent.type, "focusin" ); + + element.bind( "tooltipclose", function( event ) { + deepEqual( event.originalEvent.type, "focusout" ); + start(); + }); + + setTimeout(function() { + element.blur(); + }); + }); + + element.focus(); +}); + +asyncTest( "destroy during hide animation; only one close event", function() { + expect( 1 ); + + var element = $( "#tooltipped1" ).tooltip({ + show: false, + hide: true + }); + + element.bind( "tooltipclose", function() { + ok( true, "tooltip closed" ); + }); + + element.tooltip( "open" ); + element.tooltip( "close" ); + setTimeout(function() { + element.tooltip( "destroy" ); + start(); + }); +}); + +// http://bugs.jqueryui.com/ticket/10602 +asyncTest( "multiple active delegated tooltips", function() { + expect( 1 ); + + var anchor = $( "#tooltipped1" ), + input = anchor.next(), + actions = []; + + $( document ).tooltip({ + show: false, + hide: false, + open: function( event, ui ) { + actions.push( "open:" + ui.tooltip.text() ); + }, + close: function( event, ui ) { + actions.push( "close:" + ui.tooltip.text() ); + } + }); + + function step1() { + anchor.simulate( "mouseover" ); + setTimeout( step2 ); + } + + function step2() { + input.simulate( "focus" ); + setTimeout( step3 ); + } + + function step3() { + input.simulate( "blur" ); + setTimeout( step4 ); + } + + function step4() { + anchor.simulate( "mouseout" ); + deepEqual( actions, [ + "open:anchortitle", + "open:inputtitle", + "close:inputtitle", + "close:anchortitle" + ], "Both tooltips open and close" ); + start(); + } + + step1(); +}); + +} ); diff --git a/tests/unit/tooltip/deprecated.html b/tests/unit/tooltip/deprecated.html new file mode 100644 index 000000000..d21fea57b --- /dev/null +++ b/tests/unit/tooltip/deprecated.html @@ -0,0 +1,29 @@ + + + + + jQuery UI Tooltip Test Suite + + + + + + +
+
+ +
+ anchor + + aria-describedby + span + baz +
+ +
+ +
+ +
+ + diff --git a/tests/unit/tooltip/deprecated.js b/tests/unit/tooltip/deprecated.js new file mode 100644 index 000000000..057171ee2 --- /dev/null +++ b/tests/unit/tooltip/deprecated.js @@ -0,0 +1,16 @@ +define( [ + "jquery", + "ui/tooltip" +], function( $ ) { + +module( "tooltip: (deprecated) options" ); + +test( "tooltipClass", function( assert ) { + expect( 1 ); + var element = $( "#tooltipped1" ).tooltip({ + tooltipClass: "custom" + }).tooltip( "open" ); + assert.hasClasses( $( "#" + element.data( "ui-tooltip-id" ) ), "custom" ); +}); + +} ); diff --git a/tests/unit/tooltip/events.js b/tests/unit/tooltip/events.js new file mode 100644 index 000000000..a953c6e91 --- /dev/null +++ b/tests/unit/tooltip/events.js @@ -0,0 +1,60 @@ +define( [ + "jquery", + "ui/tooltip" +], function( $ ) { + +module( "tooltip: events" ); + +test( "programmatic triggers", function() { + expect( 4 ); + var tooltip, + element = $( "#tooltipped1" ).tooltip(); + + element.one( "tooltipopen", function( event, ui ) { + tooltip = ui.tooltip; + ok( !( "originalEvent" in event ), "open" ); + strictEqual( ui.tooltip[0], + $( "#" + element.data( "ui-tooltip-id" ) )[0], "ui.tooltip" ); + }); + element.tooltip( "open" ); + + element.one( "tooltipclose", function( event, ui ) { + ok( !( "originalEvent" in event ), "close" ); + strictEqual( ui.tooltip[0], tooltip[0], "ui.tooltip" ); + }); + element.tooltip( "close" ); +}); + +test( "mouse events", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip(); + + element.bind( "tooltipopen", function( event ) { + deepEqual( event.originalEvent.type, "mouseover" ); + }); + element.trigger( "mouseover" ); + + element.bind( "tooltipclose", function( event ) { + deepEqual( event.originalEvent.type, "mouseleave" ); + }); + element.trigger( "focusout" ); + element.trigger( "mouseleave" ); +}); + +test( "focus events", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip(); + + element.bind( "tooltipopen", function( event ) { + deepEqual( event.originalEvent.type, "focusin" ); + }); + element.trigger( "focusin" ); + + element.bind( "tooltipclose", function( event ) { + deepEqual( event.originalEvent.type, "focusout" ); + }); + element.trigger( "mouseleave" ); + element.trigger( "focusout" ); +}); + +} ); diff --git a/tests/unit/tooltip/methods.js b/tests/unit/tooltip/methods.js new file mode 100644 index 000000000..3db7b8f7c --- /dev/null +++ b/tests/unit/tooltip/methods.js @@ -0,0 +1,139 @@ +define( [ + "jquery", + "ui/tooltip" +], function( $ ) { + +module( "tooltip: methods" ); + +test( "destroy", function( assert ) { + expect( 3 ); + var element = $( "#tooltipped1" ); + + assert.domEqual( "#tooltipped1", function() { + element.tooltip().tooltip( "destroy" ); + }); + + // make sure that open tooltips are removed on destroy + assert.domEqual( "#tooltipped1", function() { + element + .tooltip() + .tooltip( "open", $.Event( "mouseover", { target: element[0] }) ) + .tooltip( "destroy" ); + }); + equal( $( ".ui-tooltip" ).length, 0 ); +}); + +test( "open/close", function() { + expect( 3 ); + $.fx.off = true; + var tooltip, + element = $( "#tooltipped1" ).tooltip(); + equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); + + element.tooltip( "open" ); + tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); + ok( tooltip.is( ":visible" ) ); + + element.tooltip( "close" ); + ok( tooltip.is( ":hidden" ) ); + $.fx.off = false; +}); + +// #8626 - Calling open() without an event +test( "open/close with tracking", function() { + expect( 3 ); + $.fx.off = true; + var tooltip, + element = $( "#tooltipped1" ).tooltip({ track: true }); + equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); + + element.tooltip( "open" ); + tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); + ok( tooltip.is( ":visible" ) ); + + element.tooltip( "close" ); + ok( tooltip.is( ":hidden" ) ); + $.fx.off = false; +}); + +test( "enable/disable", function( assert ) { + expect( 11 ); + $.fx.off = true; + var tooltip, + element = $( "#tooltipped1" ).tooltip(); + equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); + + element.tooltip( "open" ); + tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); + ok( tooltip.is( ":visible" ) ); + + element.tooltip( "disable" ); + equal( $( ".ui-tooltip" ).length, 0, "no tooltip when disabled" ); + + assert.lacksClasses( element.tooltip( "widget" ), "ui-state-disabled" ); + ok( !element.tooltip( "widget" ).attr( "aria-disabled" ), "element doesn't get aria-disabled" ); + assert.lacksClasses( element.tooltip( "widget" ), "ui-tooltip-disabled" ); + equal( tooltip.attr( "title" ), null, "title removed on disable" ); + + element.tooltip( "open" ); + equal( $( ".ui-tooltip" ).length, 0, "open does nothing when disabled" ); + + element.tooltip( "enable" ); + equal( element.attr( "title" ), "anchortitle", "title restored on enable" ); + + // #9719 - Title should be preserved after disabling twice + element.tooltip( "disable" ); + element.tooltip( "disable" ); + element.tooltip( "enable" ); + equal( element.attr( "title" ), "anchortitle", "title restored on enable after being disabled twice" ); + + element.tooltip( "open" ); + tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); + ok( tooltip.is( ":visible" ) ); + $.fx.off = false; +}); + +test( "widget", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip(), + widgetElement = element.tooltip( "widget" ); + equal( widgetElement.length, 1, "one element" ); + strictEqual( widgetElement[ 0 ], element[ 0 ], "same element" ); +}); + +test( "preserve changes to title attributes on close and destroy", function() { + expect( 6 ); + var element = $( "#tooltipped1" ), + changed = "changed title text", + original = "original title text", + tests = []; + + // 1. Changes to title attribute are preserved on close() + tests[ 0 ] = { title: changed, expected: changed, method: "close" }; + // 2. Changes to title attribute are preserved on destroy() + tests[ 1 ] = { title: changed, expected: changed , method: "destroy" }; + // 3. Changes to title attribute are NOT preserved when set to empty string on close() + tests[ 2 ] = { title: "", expected: original, method: "close" }; + // 4. Changes to title attribute are NOT preserved when set to empty string on destroy() + tests[ 3 ] = { title: "", expected: original, method: "destroy" }; + // 5. Changes to title attribute NOT preserved when attribute has been removed on close() + tests[ 4 ] = { expected: original, method: "close" }; + // 6. Changes to title attribute NOT preserved when attribute has been removed on destroy() + tests[ 5 ] = { expected: original, method: "destroy" }; + + $.each( tests, function( index, test ) { + + element.attr( "title", original ).tooltip() + .tooltip( "open", $.Event( "mouseover", { target: element[ 0 ] } ) ); + if ( test.title ) { + element.attr( "title", test.title ); + } else { + element.removeAttr( "title" ); + } + element.tooltip( test.method ); + equal( $( "#tooltipped1" ).attr( "title" ), test.expected ); + + } ); +}); + +} ); diff --git a/tests/unit/tooltip/options.js b/tests/unit/tooltip/options.js new file mode 100644 index 000000000..d091e3bad --- /dev/null +++ b/tests/unit/tooltip/options.js @@ -0,0 +1,215 @@ +define( [ + "jquery", + "ui/tooltip" +], function( $ ) { + +module( "tooltip: options" ); + +test( "disabled: true", function() { + expect( 1 ); + $( "#tooltipped1" ).tooltip({ + disabled: true + }).tooltip( "open" ); + equal( $( ".ui-tooltip" ).length, 0 ); +}); + +test( "content: default", function() { + expect( 1 ); + var element = $( "#tooltipped1" ).tooltip().tooltip( "open" ); + deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "anchortitle" ); +}); + +test( "content: default; HTML escaping", function() { + expect( 2 ); + var scriptText = "", + element = $( "#tooltipped1" ); + + $.ui.tooltip.hacked = false; + element.attr( "title", scriptText ) + .tooltip() + .tooltip( "open" ); + equal( $.ui.tooltip.hacked, false, "script did not execute" ); + deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), scriptText, + "correct tooltip text" ); +}); + +test( "content: return string", function() { + expect( 1 ); + var element = $( "#tooltipped1" ).tooltip({ + content: function() { + return "customstring"; + } + }).tooltip( "open" ); + deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" ); +}); + +test( "content: return jQuery", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip({ + content: function() { + return $( "
" ).html( "customstring" ); + } + }).tooltip( "open" ), + liveRegion = element.tooltip( "instance" ).liveRegion; + deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" ); + equal( liveRegion.children().last().html().toLowerCase(), "
customstring
", + "The accessibility live region will strip the ids but keep the structure" ); +}); + +asyncTest( "content: sync + async callback", function() { + expect( 2 ); + var element = $( "#tooltipped1" ).tooltip({ + content: function( response ) { + setTimeout(function() { + deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "loading..." ); + + response( "customstring2" ); + setTimeout(function() { + deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "customstring2" ); + start(); + }, 13 ); + }, 13 ); + return "loading..."; + } + }).tooltip( "open" ); +}); + +// http://bugs.jqueryui.com/ticket/8740 +asyncTest( "content: async callback loses focus before load", function() { + expect( 1 ); + + var element = $( "#tooltipped1" ).tooltip({ + content: function( response ) { + setTimeout(function() { + element.trigger( "mouseleave" ); + setTimeout(function() { + response( "sometext" ); + setTimeout(function() { + ok( !$( "#" + element.data( "ui-tooltip-id" ) ).is( ":visible" ), + "Tooltip should not display" ); + start(); + }); + }); + }); + } + }); + element.trigger( "mouseover" ); +}); + +test( "content: change while open", function() { + expect( 2 ) ; + var element = $( "#tooltipped1" ).tooltip({ + content: function() { + return "old"; + } + }); + + element.one( "tooltipopen", function( event, ui ) { + equal( ui.tooltip.text(), "old", "original content" ); + element.tooltip( "option", "content", function() { + return "new"; + }); + equal( ui.tooltip.text(), "new", "updated content" ); + }); + + element.tooltip( "open" ); +}); + +test( "content: string", function() { + expect( 1 ); + $( "#tooltipped1" ).tooltip({ + content: "just a string", + open: function( event, ui ) { + equal( ui.tooltip.text(), "just a string" ); + } + }).tooltip( "open" ); +}); + +test( "content: element", function() { + expect( 1 ); + var content = "

this is a test of the emergency broadcast system.

", + element = $( content )[ 0 ]; + $( "#tooltipped1" ).tooltip({ + content: element, + open: function( event, ui ) { + equal( ui.tooltip.children().html().toLowerCase(), content ); + } + }).tooltip( "open" ); +}); + +test( "content: jQuery", function() { + expect( 1 ); + var content = "

this is a test of the emergency broadcast system.

", + element = $( content ); + $( "#tooltipped1" ).tooltip({ + content: element, + open: function( event, ui ) { + equal( ui.tooltip.children().html().toLowerCase(), content ); + } + }).tooltip( "open" ); +}); + +test( "items", function() { + expect( 2 ); + var event, + element = $( "#qunit-fixture" ).tooltip({ + items: "#fixture-span" + }); + + event = $.Event( "mouseenter" ); + event.target = $( "#fixture-span" )[ 0 ]; + element.tooltip( "open", event ); + deepEqual( $( "#" + $( "#fixture-span" ).data( "ui-tooltip-id" ) ).text(), "title-text" ); + + // make sure default [title] doesn't get used + event.target = $( "#tooltipped1" )[ 0 ]; + element.tooltip( "open", event ); + deepEqual( $( "#tooltipped1" ).data( "ui-tooltip-id" ), undefined ); + + element.tooltip( "destroy" ); +}); + +test( "track + show delay", function() { + expect( 2 ); + var event, + leftVal = 314, + topVal = 159, + offsetVal = 26, + element = $( "#tooltipped1" ).tooltip({ + track: true, + show: { + delay: 1 + }, + position: { + my: "left+" + offsetVal + " top+" + offsetVal, + at: "right bottom" + } + }); + + event = $.Event( "mouseover" ); + event.target = $( "#tooltipped1" )[ 0 ]; + event.originalEvent = { type: "mouseover" }; + event.pageX = leftVal; + event.pageY = topVal; + element.trigger( event ); + + event = $.Event( "mousemove" ); + event.target = $( "#tooltipped1" )[ 0 ]; + event.originalEvent = { type: "mousemove" }; + event.pageX = leftVal; + event.pageY = topVal; + element.trigger( event ); + + equal( $( ".ui-tooltip" ).css( "left" ), leftVal + offsetVal + "px" ); + equal( $( ".ui-tooltip" ).css( "top" ), topVal + offsetVal + "px" ); +}); + +test( "track and programmatic focus", function() { + expect( 1 ); + $( "#qunit-fixture div input" ).tooltip({ + track: true + }).focus(); + equal( "inputtitle", $( ".ui-tooltip" ).text() ); +}); + +} ); diff --git a/tests/unit/tooltip/tooltip_common.js b/tests/unit/tooltip/tooltip_common.js deleted file mode 100644 index f8045fc33..000000000 --- a/tests/unit/tooltip/tooltip_common.js +++ /dev/null @@ -1,30 +0,0 @@ -define( [ - "lib/common", - "ui/tooltip" -], function( common ) { - -common.testWidget( "tooltip", { - defaults: { - classes: { - "ui-tooltip": "ui-corner-all ui-widget-shadow" - }, - content: function() {}, - disabled: false, - hide: true, - items: "[title]:not([disabled])", - position: { - my: "left top+15", - at: "left bottom", - collision: "flipfit flip" - }, - show: true, - track: false, - - // callbacks - close: null, - create: null, - open: null - } -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_common_deprecated.js b/tests/unit/tooltip/tooltip_common_deprecated.js deleted file mode 100644 index d32e7656d..000000000 --- a/tests/unit/tooltip/tooltip_common_deprecated.js +++ /dev/null @@ -1,31 +0,0 @@ -define( [ - "lib/common", - "ui/tooltip" -], function( common ) { - -common.testWidget( "tooltip", { - defaults: { - classes: { - "ui-tooltip": "ui-corner-all ui-widget-shadow" - }, - content: function() {}, - disabled: false, - hide: true, - items: "[title]:not([disabled])", - position: { - my: "left top+15", - at: "left bottom", - collision: "flipfit flip" - }, - show: true, - tooltipClass: null, - track: false, - - // callbacks - close: null, - create: null, - open: null - } -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_core.js b/tests/unit/tooltip/tooltip_core.js deleted file mode 100644 index fa24d72ce..000000000 --- a/tests/unit/tooltip/tooltip_core.js +++ /dev/null @@ -1,224 +0,0 @@ -define( [ - "jquery", - "ui/tooltip" -], function( $ ) { - -module( "tooltip: core" ); - -test( "markup structure", function( assert ) { - expect( 7 ); - var element = $( "#tooltipped1" ).tooltip(), - tooltip = $( ".ui-tooltip" ); - - equal( element.attr( "aria-describedby" ), undefined, "no aria-describedby on init" ); - equal( tooltip.length, 0, "no tooltip on init" ); - - element.tooltip( "open" ); - tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); - equal( tooltip.length, 1, "tooltip exists" ); - equal( element.attr( "aria-describedby" ), tooltip.attr( "id" ), "aria-describedby" ); - assert.hasClasses( tooltip, "ui-tooltip ui-widget ui-widget-content ui-widget-shadow" ); - equal( tooltip.length, 1, ".ui-tooltip exists" ); - equal( tooltip.find( ".ui-tooltip-content" ).length, 1, - ".ui-tooltip-content exists" ); -}); - -test( "accessibility", function() { - expect( 15 ); - - var tooltipId, tooltip, - element = $( "#multiple-describedby" ).tooltip(), - liveRegion = element.tooltip( "instance" ).liveRegion; - - equal( liveRegion.find( ">div" ).length, 0 ); - equal( liveRegion.attr( "role" ), "log" ); - equal( liveRegion.attr( "aria-live" ), "assertive" ); - equal( liveRegion.attr( "aria-relevant" ), "additions" ); - element.tooltip( "open" ); - tooltipId = element.data( "ui-tooltip-id" ); - tooltip = $( "#" + tooltipId ); - equal( tooltip.attr( "role" ), "tooltip", "role" ); - equal( element.attr( "aria-describedby" ), "fixture-span " + tooltipId, - "multiple describedby when open" ); - - equal( element.attr( "title" ), null, "no title when open" ); - equal( liveRegion.children().length, 1 ); - equal( liveRegion.children().last().html(), "..." ); - element.tooltip( "close" ); - equal( element.attr( "aria-describedby" ), "fixture-span", - "correct describedby when closed" ); - equal( element.attr( "title" ), "...", "title restored when closed" ); - - element.tooltip( "open" ); - equal( liveRegion.children().length, 2, - "After the second tooltip show, there should be two children" ); - equal( liveRegion.children().filter( ":visible" ).length, 1, - "Only one of the children should be visible" ); - ok( liveRegion.children().last().is( ":visible" ), - "Only the last child should be visible" ); - element.tooltip( "close" ); - - element.tooltip( "destroy" ); - equal( liveRegion.parent().length, 0, - "Tooltip liveregion element should be removed" ); -}); - -test( "delegated removal", function() { - expect( 2 ); - - var container = $( "#contains-tooltipped" ).tooltip(), - element = $( "#contained-tooltipped" ); - - element.trigger( "mouseover" ); - equal( $( ".ui-tooltip" ).length, 1 ); - - container.empty(); - equal( $( ".ui-tooltip" ).length, 0 ); -}); - -test( "nested tooltips", function() { - expect( 2 ); - - var child = $( "#contained-tooltipped" ), - parent = $( "#contains-tooltipped" ).tooltip({ - show: null, - hide: null - }); - - parent.trigger( "mouseover" ); - equal( $( ".ui-tooltip:visible" ).text(), "parent" ); - - child.trigger( "mouseover" ); - equal( $( ".ui-tooltip" ).text(), "child" ); -}); - -// #8742 -test( "form containing an input with name title", function() { - expect( 4 ); - - var form = $( "#tooltip-form" ).tooltip({ - show: null, - hide: null - }), - input = form.find( "[name=title]" ); - - equal( $( ".ui-tooltip" ).length, 0, "no tooltips on init" ); - - input.trigger( "mouseover" ); - equal( $( ".ui-tooltip" ).length, 1, "tooltip for input" ); - input.trigger( "mouseleave" ); - equal( $( ".ui-tooltip" ).length, 0, "tooltip for input closed" ); - - form.trigger( "mouseover" ); - equal( $( ".ui-tooltip" ).length, 0, "no tooltip for form" ); -}); - -test( "tooltip on .ui-state-disabled element", function() { - expect( 2 ); - - var container = $( "#contains-tooltipped" ).tooltip(), - element = $( "#contained-tooltipped" ).addClass( "ui-state-disabled" ); - - element.trigger( "mouseover" ); - equal( $( ".ui-tooltip" ).length, 1 ); - - container.empty(); - equal( $( ".ui-tooltip" ).length, 0 ); -}); - -// http://bugs.jqueryui.com/ticket/8740 -asyncTest( "programmatic focus with async content", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip({ - content: function( response ) { - setTimeout(function() { - response( "test" ); - }); - } - }); - - element.bind( "tooltipopen", function( event ) { - deepEqual( event.originalEvent.type, "focusin" ); - - element.bind( "tooltipclose", function( event ) { - deepEqual( event.originalEvent.type, "focusout" ); - start(); - }); - - setTimeout(function() { - element.blur(); - }); - }); - - element.focus(); -}); - -asyncTest( "destroy during hide animation; only one close event", function() { - expect( 1 ); - - var element = $( "#tooltipped1" ).tooltip({ - show: false, - hide: true - }); - - element.bind( "tooltipclose", function() { - ok( true, "tooltip closed" ); - }); - - element.tooltip( "open" ); - element.tooltip( "close" ); - setTimeout(function() { - element.tooltip( "destroy" ); - start(); - }); -}); - -// http://bugs.jqueryui.com/ticket/10602 -asyncTest( "multiple active delegated tooltips", function() { - expect( 1 ); - - var anchor = $( "#tooltipped1" ), - input = anchor.next(), - actions = []; - - $( document ).tooltip({ - show: false, - hide: false, - open: function( event, ui ) { - actions.push( "open:" + ui.tooltip.text() ); - }, - close: function( event, ui ) { - actions.push( "close:" + ui.tooltip.text() ); - } - }); - - function step1() { - anchor.simulate( "mouseover" ); - setTimeout( step2 ); - } - - function step2() { - input.simulate( "focus" ); - setTimeout( step3 ); - } - - function step3() { - input.simulate( "blur" ); - setTimeout( step4 ); - } - - function step4() { - anchor.simulate( "mouseout" ); - deepEqual( actions, [ - "open:anchortitle", - "open:inputtitle", - "close:inputtitle", - "close:anchortitle" - ], "Both tooltips open and close" ); - start(); - } - - step1(); -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_deprecated.html b/tests/unit/tooltip/tooltip_deprecated.html deleted file mode 100644 index d21fea57b..000000000 --- a/tests/unit/tooltip/tooltip_deprecated.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - jQuery UI Tooltip Test Suite - - - - - - -
-
- -
- anchor - - aria-describedby - span - baz -
- -
- -
- -
- - diff --git a/tests/unit/tooltip/tooltip_deprecated.js b/tests/unit/tooltip/tooltip_deprecated.js deleted file mode 100644 index 057171ee2..000000000 --- a/tests/unit/tooltip/tooltip_deprecated.js +++ /dev/null @@ -1,16 +0,0 @@ -define( [ - "jquery", - "ui/tooltip" -], function( $ ) { - -module( "tooltip: (deprecated) options" ); - -test( "tooltipClass", function( assert ) { - expect( 1 ); - var element = $( "#tooltipped1" ).tooltip({ - tooltipClass: "custom" - }).tooltip( "open" ); - assert.hasClasses( $( "#" + element.data( "ui-tooltip-id" ) ), "custom" ); -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_events.js b/tests/unit/tooltip/tooltip_events.js deleted file mode 100644 index a953c6e91..000000000 --- a/tests/unit/tooltip/tooltip_events.js +++ /dev/null @@ -1,60 +0,0 @@ -define( [ - "jquery", - "ui/tooltip" -], function( $ ) { - -module( "tooltip: events" ); - -test( "programmatic triggers", function() { - expect( 4 ); - var tooltip, - element = $( "#tooltipped1" ).tooltip(); - - element.one( "tooltipopen", function( event, ui ) { - tooltip = ui.tooltip; - ok( !( "originalEvent" in event ), "open" ); - strictEqual( ui.tooltip[0], - $( "#" + element.data( "ui-tooltip-id" ) )[0], "ui.tooltip" ); - }); - element.tooltip( "open" ); - - element.one( "tooltipclose", function( event, ui ) { - ok( !( "originalEvent" in event ), "close" ); - strictEqual( ui.tooltip[0], tooltip[0], "ui.tooltip" ); - }); - element.tooltip( "close" ); -}); - -test( "mouse events", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip(); - - element.bind( "tooltipopen", function( event ) { - deepEqual( event.originalEvent.type, "mouseover" ); - }); - element.trigger( "mouseover" ); - - element.bind( "tooltipclose", function( event ) { - deepEqual( event.originalEvent.type, "mouseleave" ); - }); - element.trigger( "focusout" ); - element.trigger( "mouseleave" ); -}); - -test( "focus events", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip(); - - element.bind( "tooltipopen", function( event ) { - deepEqual( event.originalEvent.type, "focusin" ); - }); - element.trigger( "focusin" ); - - element.bind( "tooltipclose", function( event ) { - deepEqual( event.originalEvent.type, "focusout" ); - }); - element.trigger( "mouseleave" ); - element.trigger( "focusout" ); -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_methods.js b/tests/unit/tooltip/tooltip_methods.js deleted file mode 100644 index 3db7b8f7c..000000000 --- a/tests/unit/tooltip/tooltip_methods.js +++ /dev/null @@ -1,139 +0,0 @@ -define( [ - "jquery", - "ui/tooltip" -], function( $ ) { - -module( "tooltip: methods" ); - -test( "destroy", function( assert ) { - expect( 3 ); - var element = $( "#tooltipped1" ); - - assert.domEqual( "#tooltipped1", function() { - element.tooltip().tooltip( "destroy" ); - }); - - // make sure that open tooltips are removed on destroy - assert.domEqual( "#tooltipped1", function() { - element - .tooltip() - .tooltip( "open", $.Event( "mouseover", { target: element[0] }) ) - .tooltip( "destroy" ); - }); - equal( $( ".ui-tooltip" ).length, 0 ); -}); - -test( "open/close", function() { - expect( 3 ); - $.fx.off = true; - var tooltip, - element = $( "#tooltipped1" ).tooltip(); - equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); - - element.tooltip( "open" ); - tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); - ok( tooltip.is( ":visible" ) ); - - element.tooltip( "close" ); - ok( tooltip.is( ":hidden" ) ); - $.fx.off = false; -}); - -// #8626 - Calling open() without an event -test( "open/close with tracking", function() { - expect( 3 ); - $.fx.off = true; - var tooltip, - element = $( "#tooltipped1" ).tooltip({ track: true }); - equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); - - element.tooltip( "open" ); - tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); - ok( tooltip.is( ":visible" ) ); - - element.tooltip( "close" ); - ok( tooltip.is( ":hidden" ) ); - $.fx.off = false; -}); - -test( "enable/disable", function( assert ) { - expect( 11 ); - $.fx.off = true; - var tooltip, - element = $( "#tooltipped1" ).tooltip(); - equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); - - element.tooltip( "open" ); - tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); - ok( tooltip.is( ":visible" ) ); - - element.tooltip( "disable" ); - equal( $( ".ui-tooltip" ).length, 0, "no tooltip when disabled" ); - - assert.lacksClasses( element.tooltip( "widget" ), "ui-state-disabled" ); - ok( !element.tooltip( "widget" ).attr( "aria-disabled" ), "element doesn't get aria-disabled" ); - assert.lacksClasses( element.tooltip( "widget" ), "ui-tooltip-disabled" ); - equal( tooltip.attr( "title" ), null, "title removed on disable" ); - - element.tooltip( "open" ); - equal( $( ".ui-tooltip" ).length, 0, "open does nothing when disabled" ); - - element.tooltip( "enable" ); - equal( element.attr( "title" ), "anchortitle", "title restored on enable" ); - - // #9719 - Title should be preserved after disabling twice - element.tooltip( "disable" ); - element.tooltip( "disable" ); - element.tooltip( "enable" ); - equal( element.attr( "title" ), "anchortitle", "title restored on enable after being disabled twice" ); - - element.tooltip( "open" ); - tooltip = $( "#" + element.data( "ui-tooltip-id" ) ); - ok( tooltip.is( ":visible" ) ); - $.fx.off = false; -}); - -test( "widget", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip(), - widgetElement = element.tooltip( "widget" ); - equal( widgetElement.length, 1, "one element" ); - strictEqual( widgetElement[ 0 ], element[ 0 ], "same element" ); -}); - -test( "preserve changes to title attributes on close and destroy", function() { - expect( 6 ); - var element = $( "#tooltipped1" ), - changed = "changed title text", - original = "original title text", - tests = []; - - // 1. Changes to title attribute are preserved on close() - tests[ 0 ] = { title: changed, expected: changed, method: "close" }; - // 2. Changes to title attribute are preserved on destroy() - tests[ 1 ] = { title: changed, expected: changed , method: "destroy" }; - // 3. Changes to title attribute are NOT preserved when set to empty string on close() - tests[ 2 ] = { title: "", expected: original, method: "close" }; - // 4. Changes to title attribute are NOT preserved when set to empty string on destroy() - tests[ 3 ] = { title: "", expected: original, method: "destroy" }; - // 5. Changes to title attribute NOT preserved when attribute has been removed on close() - tests[ 4 ] = { expected: original, method: "close" }; - // 6. Changes to title attribute NOT preserved when attribute has been removed on destroy() - tests[ 5 ] = { expected: original, method: "destroy" }; - - $.each( tests, function( index, test ) { - - element.attr( "title", original ).tooltip() - .tooltip( "open", $.Event( "mouseover", { target: element[ 0 ] } ) ); - if ( test.title ) { - element.attr( "title", test.title ); - } else { - element.removeAttr( "title" ); - } - element.tooltip( test.method ); - equal( $( "#tooltipped1" ).attr( "title" ), test.expected ); - - } ); -}); - -} ); diff --git a/tests/unit/tooltip/tooltip_options.js b/tests/unit/tooltip/tooltip_options.js deleted file mode 100644 index d091e3bad..000000000 --- a/tests/unit/tooltip/tooltip_options.js +++ /dev/null @@ -1,215 +0,0 @@ -define( [ - "jquery", - "ui/tooltip" -], function( $ ) { - -module( "tooltip: options" ); - -test( "disabled: true", function() { - expect( 1 ); - $( "#tooltipped1" ).tooltip({ - disabled: true - }).tooltip( "open" ); - equal( $( ".ui-tooltip" ).length, 0 ); -}); - -test( "content: default", function() { - expect( 1 ); - var element = $( "#tooltipped1" ).tooltip().tooltip( "open" ); - deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "anchortitle" ); -}); - -test( "content: default; HTML escaping", function() { - expect( 2 ); - var scriptText = "", - element = $( "#tooltipped1" ); - - $.ui.tooltip.hacked = false; - element.attr( "title", scriptText ) - .tooltip() - .tooltip( "open" ); - equal( $.ui.tooltip.hacked, false, "script did not execute" ); - deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), scriptText, - "correct tooltip text" ); -}); - -test( "content: return string", function() { - expect( 1 ); - var element = $( "#tooltipped1" ).tooltip({ - content: function() { - return "customstring"; - } - }).tooltip( "open" ); - deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" ); -}); - -test( "content: return jQuery", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip({ - content: function() { - return $( "
" ).html( "customstring" ); - } - }).tooltip( "open" ), - liveRegion = element.tooltip( "instance" ).liveRegion; - deepEqual( $( "#" + element.data( "ui-tooltip-id" ) ).text(), "customstring" ); - equal( liveRegion.children().last().html().toLowerCase(), "
customstring
", - "The accessibility live region will strip the ids but keep the structure" ); -}); - -asyncTest( "content: sync + async callback", function() { - expect( 2 ); - var element = $( "#tooltipped1" ).tooltip({ - content: function( response ) { - setTimeout(function() { - deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "loading..." ); - - response( "customstring2" ); - setTimeout(function() { - deepEqual( $( "#" + element.data("ui-tooltip-id") ).text(), "customstring2" ); - start(); - }, 13 ); - }, 13 ); - return "loading..."; - } - }).tooltip( "open" ); -}); - -// http://bugs.jqueryui.com/ticket/8740 -asyncTest( "content: async callback loses focus before load", function() { - expect( 1 ); - - var element = $( "#tooltipped1" ).tooltip({ - content: function( response ) { - setTimeout(function() { - element.trigger( "mouseleave" ); - setTimeout(function() { - response( "sometext" ); - setTimeout(function() { - ok( !$( "#" + element.data( "ui-tooltip-id" ) ).is( ":visible" ), - "Tooltip should not display" ); - start(); - }); - }); - }); - } - }); - element.trigger( "mouseover" ); -}); - -test( "content: change while open", function() { - expect( 2 ) ; - var element = $( "#tooltipped1" ).tooltip({ - content: function() { - return "old"; - } - }); - - element.one( "tooltipopen", function( event, ui ) { - equal( ui.tooltip.text(), "old", "original content" ); - element.tooltip( "option", "content", function() { - return "new"; - }); - equal( ui.tooltip.text(), "new", "updated content" ); - }); - - element.tooltip( "open" ); -}); - -test( "content: string", function() { - expect( 1 ); - $( "#tooltipped1" ).tooltip({ - content: "just a string", - open: function( event, ui ) { - equal( ui.tooltip.text(), "just a string" ); - } - }).tooltip( "open" ); -}); - -test( "content: element", function() { - expect( 1 ); - var content = "

this is a test of the emergency broadcast system.

", - element = $( content )[ 0 ]; - $( "#tooltipped1" ).tooltip({ - content: element, - open: function( event, ui ) { - equal( ui.tooltip.children().html().toLowerCase(), content ); - } - }).tooltip( "open" ); -}); - -test( "content: jQuery", function() { - expect( 1 ); - var content = "

this is a test of the emergency broadcast system.

", - element = $( content ); - $( "#tooltipped1" ).tooltip({ - content: element, - open: function( event, ui ) { - equal( ui.tooltip.children().html().toLowerCase(), content ); - } - }).tooltip( "open" ); -}); - -test( "items", function() { - expect( 2 ); - var event, - element = $( "#qunit-fixture" ).tooltip({ - items: "#fixture-span" - }); - - event = $.Event( "mouseenter" ); - event.target = $( "#fixture-span" )[ 0 ]; - element.tooltip( "open", event ); - deepEqual( $( "#" + $( "#fixture-span" ).data( "ui-tooltip-id" ) ).text(), "title-text" ); - - // make sure default [title] doesn't get used - event.target = $( "#tooltipped1" )[ 0 ]; - element.tooltip( "open", event ); - deepEqual( $( "#tooltipped1" ).data( "ui-tooltip-id" ), undefined ); - - element.tooltip( "destroy" ); -}); - -test( "track + show delay", function() { - expect( 2 ); - var event, - leftVal = 314, - topVal = 159, - offsetVal = 26, - element = $( "#tooltipped1" ).tooltip({ - track: true, - show: { - delay: 1 - }, - position: { - my: "left+" + offsetVal + " top+" + offsetVal, - at: "right bottom" - } - }); - - event = $.Event( "mouseover" ); - event.target = $( "#tooltipped1" )[ 0 ]; - event.originalEvent = { type: "mouseover" }; - event.pageX = leftVal; - event.pageY = topVal; - element.trigger( event ); - - event = $.Event( "mousemove" ); - event.target = $( "#tooltipped1" )[ 0 ]; - event.originalEvent = { type: "mousemove" }; - event.pageX = leftVal; - event.pageY = topVal; - element.trigger( event ); - - equal( $( ".ui-tooltip" ).css( "left" ), leftVal + offsetVal + "px" ); - equal( $( ".ui-tooltip" ).css( "top" ), topVal + offsetVal + "px" ); -}); - -test( "track and programmatic focus", function() { - expect( 1 ); - $( "#qunit-fixture div input" ).tooltip({ - track: true - }).focus(); - equal( "inputtitle", $( ".ui-tooltip" ).text() ); -}); - -} ); -- cgit v1.2.3