aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/menu/menu_core.js11
-rw-r--r--tests/unit/position/position_core.js27
-rw-r--r--tests/unit/tabs/tabs_deprecated.js186
-rw-r--r--tests/unit/tabs/tabs_methods.js2
-rw-r--r--tests/unit/tabs/tabs_options.js4
-rw-r--r--tests/unit/testsuite.js4
-rw-r--r--tests/unit/tooltip/tooltip.html2
-rw-r--r--tests/unit/tooltip/tooltip_defaults.js6
-rw-r--r--tests/unit/tooltip/tooltip_events.js6
-rw-r--r--tests/unit/tooltip/tooltip_methods.js5
-rw-r--r--tests/unit/tooltip/tooltip_options.js14
11 files changed, 161 insertions, 106 deletions
diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js
index 5b00e17e8..c0feae75c 100644
--- a/tests/unit/menu/menu_core.js
+++ b/tests/unit/menu/menu_core.js
@@ -13,23 +13,26 @@ test("accessibility", function () {
var item0 = $("li:eq(0) a");
ok( ac.hasClass("ui-menu ui-widget ui-widget-content ui-corner-all"), "menu class");
- equals( ac.attr("role"), "listbox", "main role");
+ equals( ac.attr("role"), "menu", "main role");
ok( !ac.attr("aria-activedescendant"), "aria attribute not yet active");
+
var item = ac.find( "li:first" ).find( "a" ).attr( "id", "xid" ).end();
ac.menu( "focus", $.Event(), item );
equals( ac.attr("aria-activedescendant"), "xid", "aria attribute, id from dom");
+
var item = ac.find( "li:last" );
ac.menu( "focus", $.Event(), item );
- equals( ac.attr("aria-activedescendant"), "menu1-activedescendant", "aria attribute, generated id");
+ equals( ac.attr("aria-activedescendant"), "menu1-4", "aria attribute, generated id");
});
test("items class and role", function () {
var ac = $('#menu1').menu();
- expect(1 + 4 * $("li",ac).length);
+ expect(1 + 5 * $("li",ac).length);
ok( ($("li",ac).length > 0 ), "number of menu items");
$("li",ac).each(function(item) {
ok( $(this).hasClass("ui-menu-item"), "menu item ("+ item + ") class for item");
- equals( $(this).attr("role"), "menuitem", "menu item ("+ item + ") role");
+ equals( $(this).attr("role"), "presentation", "menu item ("+ item + ") role");
+ equals( $("a", this).attr("role"), "menuitem", "menu item ("+ item + ") role");
ok( $("a",this).hasClass("ui-corner-all"), "a element class for menu item ("+ item + ") ");
equals( $("a",this).attr("tabindex"), "-1", "a element tabindex for menu item ("+ item + ") ");
});
diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js
index 5a47fe6bb..dbbda8a3b 100644
--- a/tests/unit/position/position_core.js
+++ b/tests/unit/position/position_core.js
@@ -1,5 +1,10 @@
(function( $ ) {
+function scrollTopSupport() {
+ $( window ).scrollTop( 1 );
+ return $( window ).scrollTop() === 1;
+}
+
module( "position" );
test( "my, at, of", function() {
@@ -161,11 +166,7 @@ test( "of", function() {
left: $( window ).width() - 10
}, "window as jQuery object" );
- var scrollTopSupport = (function() {
- $( window ).scrollTop( 1 );
- return $( window ).scrollTop() === 1;
- }() );
- if ( scrollTopSupport ) {
+ if ( scrollTopSupport() ) {
$( window ).scrollTop( 500 ).scrollLeft( 200 );
$( "#elx" ).position({
my: "right bottom",
@@ -311,6 +312,22 @@ test( "collision: fit, with offset", function() {
}, { top: 0, left: 0 }, "left top, negative offset" );
});
+test( "collision: fit, window scrolled", function() {
+ if ( scrollTopSupport() ) {
+ var win = $( window );
+ win.scrollTop( 300 ).scrollLeft( 200 );
+ collisionTest({
+ collision: "fit",
+ at: "left-100 top-100"
+ }, { top: 300, left: 200 }, "top left" );
+ collisionTest2({
+ collision: "fit",
+ at: "right+100 bottom+100"
+ }, { top: 300 + win.height() - 10, left: 200 + win.width() - 10 }, "right bottom" );
+ win.scrollTop( 0 ).scrollLeft( 0 );
+ }
+});
+
test( "collision: flip, no offset", function() {
collisionTest({
collision: "flip"
diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js
index 25877e69c..90c43037c 100644
--- a/tests/unit/tabs/tabs_deprecated.js
+++ b/tests/unit/tabs/tabs_deprecated.js
@@ -107,84 +107,90 @@ test('spinner', function() {
});
});
-test('selected', function() {
- expect(10);
+test( "selected", function() {
+ expect( 19 );
- el = $('#tabs1').tabs();
- equals(el.tabs('option', 'selected'), 0, 'should be 0 by default');
+ var element = $( "#tabs1" ).tabs();
+ equals( element.tabs( "option", "selected" ), 0, "should be 0 by default" );
+ tabs_state( element, 1, 0, 0 );
+ element.tabs( "destroy" );
- el.tabs('destroy');
- //set a hash in the url
- location.hash = '#fragment-2';
- //selection of tab with divs ordered differently than list
- el = $('#tabs1').tabs();
- equals(el.tabs('option', 'selected'), 1, 'second tab should be selected');
+ location.hash = "#fragment-3";
+ element = $( "#tabs1" ).tabs();
+ equals( element.tabs( "option", "selected" ), 2, "should be 2 based on URL" );
+ tabs_state( element, 0, 0, 1 );
+ element.tabs( "destroy" );
- el.tabs('destroy');
- //set a hash in the url
- location.hash = '#tabs7-2';
- //selection of tab with divs ordered differently than list
- el = $('#tabs7').tabs();
- equals(el.tabs('option', 'selected'), 1, 'second tab should be selected');
+ el = $('#tabs1').tabs({
+ selected: -1,
+ collapsible: true
+ });
+ tabs_state( element, 0, 0, 0 );
+ equal( element.find( ".ui-tabs-nav .ui-state-active" ).size(), 0, "no tabs selected" );
+ strictEqual( element.tabs( "option", "selected" ), -1 );
- el.tabs('destroy');
- el = $('#tabs1').tabs({ selected: -1 });
- equals(el.tabs('option', 'selected'), -1, 'should be -1 for all tabs unselected');
- equals( $('li.ui-tabs-active', el).length, 0, 'no tab should be selected' );
- equals( $('div:hidden', '#tabs1').length, 3, 'all panels should be hidden' );
+ element.tabs( "option", "collapsible", false );
+ tabs_state( element, 1, 0, 0 );
+ equal( element.tabs( "option", "selected" ), 0 );
+ element.tabs( "destroy" );
- el.tabs('destroy');
- el.tabs({ selected: 1 });
- equals(el.tabs('option', 'selected'), 1, 'should be specified tab');
+ element.tabs({
+ selected: -1
+ });
+ tabs_state( element, 1, 0, 0 );
+ strictEqual( element.tabs( "option", "selected" ), 0 );
+ element.tabs( "destroy" );
- el.tabs('destroy');
- el.tabs({ selected: 99 });
- equals(el.tabs('option', 'selected'), 0, 'selected should default to zero if given value is out of index');
+ element.tabs({ selected: 2 });
+ equals( element.tabs( "option", "selected" ), 2 );
+ tabs_state( element, 0, 0, 1 );
- el.tabs('destroy');
- el.tabs({ collapsible: true });
- el.tabs('option', 'selected', 0);
- equals(el.tabs('option', 'selected'), 0, 'should not collapse tab if value is same as selected');
+ element.tabs( "option", "selected", 0 );
+ equals( element.tabs( "option", "selected" ), 0 );
+ tabs_state( element, 1, 0, 0 );
- el.tabs('destroy');
- el = $('#tabs1').tabs();
- el.tabs('select', 1);
- equals(el.tabs('option', 'selected'), 1, 'should select tab');
+ element.find( ".ui-tabs-nav a" ).eq( 1 ).click();
+ equals( element.tabs( "option", "selected" ), 1 );
+ tabs_state( element, 0, 1, 0 );
+
+ element.tabs( "option", "selected", 10 );
+ equals( element.tabs( "option", "selected" ), 1 );
+ tabs_state( element, 0, 1, 0 );
+
+ location.hash = "#";
});
-module("tabs (deprecated): events");
+module( "tabs (deprecated): events" );
-test('enable', function() {
- expect(4);
+test( "enable", function() {
+ expect( 3 );
- var uiObj;
- el = $('#tabs1').tabs({
+ var element = $( "#tabs1" ).tabs({
disabled: [ 0, 1 ],
- enable: function (event, ui) {
- uiObj = ui;
+ enable: function ( event, ui ) {
+ equals( ui.tab, element.find( ".ui-tabs-nav a" )[ 1 ], "ui.tab" );
+ equals( ui.panel, element.find( ".ui-tabs-panel" )[ 1 ], "ui.panel" );
+ equals( ui.index, 1, "ui.index" );
}
});
- el.tabs('enable', 1);
- ok(uiObj !== undefined, 'trigger callback');
- equals(uiObj.tab, $('a', el)[1], 'contain tab as DOM anchor element');
- equals(uiObj.panel, $('div', el)[1], 'contain panel as DOM div element');
- equals(uiObj.index, 1, 'contain index');
+ element.tabs( "enable", 1 );
+ // shouldn't trigger event
+ element.tabs( "enable", 2 );
});
-test('disable', function() {
- expect(4);
+test( "disable", function() {
+ expect( 3 );
- var uiObj;
- el = $('#tabs1').tabs({
- disable: function (event, ui) {
- uiObj = ui;
+ var element = $( "#tabs1" ).tabs({
+ disable: function ( event, ui ) {
+ equals( ui.tab, element.find( ".ui-tabs-nav a" )[ 1 ], "ui.tab" );
+ equals( ui.panel, element.find( ".ui-tabs-panel" )[ 1 ], "ui.panel" );
+ equals( ui.index, 1, "ui.index" );
}
});
- el.tabs('disable', 1);
- ok(uiObj !== undefined, 'trigger callback');
- equals(uiObj.tab, $('a', el)[1], 'contain tab as DOM anchor element');
- equals(uiObj.panel, $('div', el)[1], 'contain panel as DOM div element');
- equals(uiObj.index, 1, 'contain index');
+ element.tabs( "disable", 1 );
+ // shouldn't trigger event
+ element.tabs( "disable", 1 );
});
test('show', function() {
@@ -332,33 +338,49 @@ test( "remove", function() {
equals( element.tabs( "option", "active" ), false );
});
-test('select', function() {
- expect(6);
-
- el = $('#tabs1').tabs();
+test( "select", function() {
+ expect( 23 );
- el.tabs('select', 1);
- equals(el.tabs('option', 'active'), 1, 'should select tab');
-
- el.tabs('destroy');
- el.tabs({ collapsible: true });
- el.tabs('select', 0);
- equals(el.tabs('option', 'active'), -1, 'should collapse tab passing in the already active tab');
+ var element = $( "#tabs1" ).tabs();
+ tabs_state( element, 1, 0, 0 );
+ element.tabs( "select", 1 );
+ tabs_state( element, 0, 1, 0 );
+ equals( element.tabs( "option", "active" ), 1, "active" );
+ equals( element.tabs( "option", "selected" ), 1, "selected" );
+ element.tabs( "destroy" );
- el.tabs('destroy');
- el.tabs({ collapsible: true });
- el.tabs('select', -1);
- equals(el.tabs('option', 'active'), -1, 'should collapse tab passing in -1');
+ element.tabs({ collapsible: true });
+ tabs_state( element, 1, 0, 0 );
+ element.tabs( "select", 0 );
+ tabs_state( element, 0, 0, 0 );
+ equals( element.tabs( "option", "active" ), false, "active" );
+ equals( element.tabs( "option", "selected" ), -1, "selected" );
+ element.tabs( "destroy" );
+
+ element.tabs({ collapsible: true });
+ element.tabs( "select", -1 );
+ tabs_state( element, 0, 0, 0 );
+ equals( element.tabs( "option", "active" ), false, "active" );
+ equals( element.tabs( "option", "selected" ), -1, "selected" );
+ element.tabs( "destroy" );
+
+ element.tabs();
+ tabs_state( element, 1, 0, 0 );
+ equals( element.tabs( "option", "active" ), 0, "active" );
+ equals( element.tabs( "option", "selected" ), 0, "selected" );
+ element.tabs( "select", 0 );
+ tabs_state( element, 1, 0, 0 );
+ equals( element.tabs( "option", "active" ), 0, "active" );
+ equals( element.tabs( "option", "selected" ), 0, "selected" );
+ element.tabs( "select", -1 );
+ tabs_state( element, 1, 0, 0 );
+ equals( element.tabs( "option", "active" ), 0, "active" );
+ equals( element.tabs( "option", "selected" ), 0, "selected" );
- el.tabs('destroy');
- el.tabs();
- el.tabs('select', 0);
- equals(el.tabs('option', 'active'), 0, 'should not collapse tab if collapsible is not set to true');
- el.tabs('select', -1);
- equals(el.tabs('option', 'active'), 0, 'should not collapse tab if collapsible is not set to true');
-
- el.tabs('select', '#fragment-2');
- equals(el.tabs('option', 'active'), 1, 'should select tab by id');
+ element.tabs( "select", "#fragment-2" );
+ tabs_state( element, 0, 1, 0 );
+ equals( element.tabs( "option", "active" ), 1, "active" );
+ equals( element.tabs( "option", "selected" ), 1, "selected" );
});
test( "length", function() {
diff --git a/tests/unit/tabs/tabs_methods.js b/tests/unit/tabs/tabs_methods.js
index 361ace45b..a6e60a4b3 100644
--- a/tests/unit/tabs/tabs_methods.js
+++ b/tests/unit/tabs/tabs_methods.js
@@ -85,7 +85,7 @@ test( "disable( index )", function() {
tabs_disabled( element, true );
});
-test( "refersh", function() {
+test( "refresh", function() {
expect( 27 );
var element = $( "#tabs1" ).tabs();
diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js
index 884a566c6..691186276 100644
--- a/tests/unit/tabs/tabs_options.js
+++ b/tests/unit/tabs/tabs_options.js
@@ -15,6 +15,7 @@ test( "{ active: default }", function() {
equals( element.tabs( "option", "active" ), 2, "should be 2 based on URL" );
tabs_state( element, 0, 0, 1 );
element.tabs( "destroy" );
+ location.hash = "#";
});
test( "{ active: false }", function() {
@@ -92,7 +93,8 @@ test( "active - mismatched tab/panel order", function() {
equals( element.tabs( "option", "active" ), 1, "should be 1 based on URL" );
tabs_state( element, 0, 1 );
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0 );
+ tabs_state( element, 1, 0 );
+ location.hash = "#";
});
test( "{ collapsible: false }", function() {
diff --git a/tests/unit/testsuite.js b/tests/unit/testsuite.js
index 4b273ce78..c1f394ed9 100644
--- a/tests/unit/testsuite.js
+++ b/tests/unit/testsuite.js
@@ -75,6 +75,10 @@ window.domEqual = function( selector, modifier, message ) {
var attributes = ["class", "role", "id", "tabIndex", "aria-activedescendant"];
function extract(value) {
+ if (!value || !value.length) {
+ QUnit.push( false, actual, expected, "domEqual failed, can't extract " + selector + ", message was: " + message );
+ return;
+ }
var result = {};
result.nodeName = value[0].nodeName;
$.each(attributes, function(index, attr) {
diff --git a/tests/unit/tooltip/tooltip.html b/tests/unit/tooltip/tooltip.html
index ee4e92723..189c75261 100644
--- a/tests/unit/tooltip/tooltip.html
+++ b/tests/unit/tooltip/tooltip.html
@@ -39,7 +39,7 @@
<div>
<a id="tooltipped1" href="#" title="anchortitle">anchor</a>
<input title="inputtitle" />
- <span data-tooltip="text">span</span>
+ <span id="fixture-span" data-tooltip="text">span</span>
</div>
</div>
diff --git a/tests/unit/tooltip/tooltip_defaults.js b/tests/unit/tooltip/tooltip_defaults.js
index c1fc49f1a..5f304f497 100644
--- a/tests/unit/tooltip/tooltip_defaults.js
+++ b/tests/unit/tooltip/tooltip_defaults.js
@@ -4,10 +4,10 @@ commonWidgetTests( "tooltip", {
items: "[title]",
content: $.ui.tooltip.prototype.options.content,
position: {
- my: "left center",
- at: "right center",
- offset: "15 0"
+ my: "left+15 center",
+ at: "right center"
},
+ tooltipClass: null,
// callbacks
create: null
diff --git a/tests/unit/tooltip/tooltip_events.js b/tests/unit/tooltip/tooltip_events.js
index 35620df47..5c915ae30 100644
--- a/tests/unit/tooltip/tooltip_events.js
+++ b/tests/unit/tooltip/tooltip_events.js
@@ -28,10 +28,10 @@ test("mouse events", function() {
},
close: function(event, ui) {
same( event.type, "tooltipclose" );
- same( event.originalEvent.type, "mouseout" );
+ same( event.originalEvent.type, "mouseleave" );
}
});
- e.trigger("mouseover").trigger("mouseout");
+ e.trigger("mouseover").trigger("mouseleave");
e.tooltip("destroy");
});
@@ -40,7 +40,7 @@ test("focus events", function() {
var e = $("#tooltipped1").tooltip({
open: function(event, ui) {
same( event.type, "tooltipopen" );
- same( event.originalEvent.type, "focus" );
+ same( event.originalEvent.type, "focusin" );
},
close: function(event, ui) {
same( event.type, "tooltipclose" );
diff --git a/tests/unit/tooltip/tooltip_methods.js b/tests/unit/tooltip/tooltip_methods.js
index ace1a1288..496a5fdb7 100644
--- a/tests/unit/tooltip/tooltip_methods.js
+++ b/tests/unit/tooltip/tooltip_methods.js
@@ -14,17 +14,20 @@ test("destroy", function() {
test("open", function() {
var e = $("#tooltipped1").tooltip();
- ok( $(".ui-tooltip").is(":hidden") );
e.tooltip("open");
ok( $(".ui-tooltip").is(":visible") );
$(":ui-tooltip").tooltip("destroy");
});
+/*
+TODO currently tooltip doesn't override widget
+can't return anything useful if no element is kept around and there's no useful reference
test("widget", function() {
var tooltip = $("#tooltipped1").tooltip();
same(tooltip.tooltip("widget")[0], $(".ui-tooltip")[0]);
same(tooltip.tooltip("widget").end()[0], tooltip[0]);
});
+*/
})(jQuery);
diff --git a/tests/unit/tooltip/tooltip_options.js b/tests/unit/tooltip/tooltip_options.js
index ea4b14229..37a468489 100644
--- a/tests/unit/tooltip/tooltip_options.js
+++ b/tests/unit/tooltip/tooltip_options.js
@@ -19,12 +19,12 @@ test("option: items", function() {
return $(this).attr("data-tooltip");
}
}).tooltip("open", event);
- same( $(".ui-tooltip").text(), "text" );
+ same( $( "#" + $("#fixture-span").attr("aria-describedby") ).text(), "text" );
});
test("content: default", function() {
$("#tooltipped1").tooltip().tooltip("open");
- same( $(".ui-tooltip").text(), "anchortitle" );
+ same( $( "#" + $("#tooltipped1").attr("aria-describedby") ).text(), "anchortitle" );
});
test("content: return string", function() {
@@ -33,7 +33,7 @@ test("content: return string", function() {
return "customstring";
}
}).tooltip("open");
- same( $(".ui-tooltip").text(), "customstring" );
+ same( $( "#" + $("#tooltipped1").attr("aria-describedby") ).text(), "customstring" );
});
test("content: return jQuery", function() {
@@ -42,21 +42,25 @@ test("content: return jQuery", function() {
return $("<div></div>").html("cu<b>s</b>tomstring");
}
}).tooltip("open");
- same( $(".ui-tooltip").text(), "customstring" );
+ same( $( "#" + $("#tooltipped1").attr("aria-describedby") ).text(), "customstring" );
});
+/*
+TODO broken, probably related to async content
test("content: callback string", function() {
stop();
$("#tooltipped1").tooltip({
content: function(response) {
response("customstring2");
setTimeout(function() {
- same( $(".ui-tooltip").text(), "customstring2" );
+ //console.log($("#tooltipped1").attr("aria-describedby"))
+ same( $( "#" + $("#tooltipped1").attr("aria-describedby") ).text(), "customstring2" );
start();
}, 100)
}
}).tooltip("open");
});
+*/
})(jQuery);