aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/selectmenu/selectmenu_methods.js
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2011-11-28 01:22:41 +0100
committerFelix Nagel <info@felixnagel.com>2011-11-28 01:22:41 +0100
commit53ea93327e9040b7472e8fd2af2abaea19058e4a (patch)
tree7bd66e1ebd133852ced707abc0f5ebb35b5da69d /tests/unit/selectmenu/selectmenu_methods.js
parent769abbabc3b7b27f6131705b5ebd64fb3120b817 (diff)
downloadjquery-ui-53ea93327e9040b7472e8fd2af2abaea19058e4a.tar.gz
jquery-ui-53ea93327e9040b7472e8fd2af2abaea19058e4a.zip
Selectmenu: improved method unit tests
Diffstat (limited to 'tests/unit/selectmenu/selectmenu_methods.js')
-rw-r--r--tests/unit/selectmenu/selectmenu_methods.js135
1 files changed, 99 insertions, 36 deletions
diff --git a/tests/unit/selectmenu/selectmenu_methods.js b/tests/unit/selectmenu/selectmenu_methods.js
index 17d5488d6..263d27be2 100644
--- a/tests/unit/selectmenu/selectmenu_methods.js
+++ b/tests/unit/selectmenu/selectmenu_methods.js
@@ -10,8 +10,8 @@ test( "destroy", function() {
});
-test( "open", function() {
- expect( 2 );
+test( "open / close", function() {
+ expect( 4 );
var element = $("#speed").selectmenu();
var widget = element.selectmenu("widget");
@@ -21,52 +21,115 @@ test( "open", function() {
element.selectmenu("open");
ok( menu.is( ":visible" ), "menu visible" );
equals( menu.find("ul").attr("aria-hidden"), "false", "menu aria-disabled" );
+
+ element.selectmenu("close");
+ ok( menu.is( ":hidden" ), "menu hidden" );
+ equals( menu.find("ul").attr("aria-hidden"), "true", "menu aria-disabled" );
});
-test( "close", function() {
- expect( 2 );
-
+test("enable / disable", function () {
+ expect(12);
var element = $("#speed").selectmenu();
var widget = element.selectmenu("widget");
var button = widget.filter(".ui-selectmenu-button");
var menu = widget.filter(".ui-selectmenu-menu");
- element.selectmenu("open");
- element.selectmenu("close");
- ok( menu.is( ":hidden" ), "menu hidden" );
- equals( menu.find("ul").attr("aria-hidden"), "true", "menu aria-disabled" );
+ element.selectmenu("disable")
+ ok( element.selectmenu("option", "disabled"), "disable: widget option" );
+ equals( button.attr("aria-disabled"), "true", "disable: button wrapper ARIA" );
+ equals( button.children("a").attr("aria-disabled"), "true", "disable: button ARIA" );
+ equals( button.children("a").attr("tabindex"), -1, "disable: button tabindex" );
+ equals( menu.attr("aria-disabled"), "true", "disable: menu wrapper ARIA" );
+ equals( menu.children("ul").attr("aria-disabled"), "true", "disable: menu ARIA" );
+
+ element.selectmenu("enable")
+ ok( !element.selectmenu("option", "disabled"), "enable: widget option" );
+ equals( button.attr("aria-disabled"), "false", "enable: button wrapper ARIA" );
+ equals( button.children("a").attr("aria-disabled"), "false", "enable: button ARIA" );
+ equals( button.children("a").attr("tabindex"), 0, "enable: button tabindex" );
+ equals( menu.attr("aria-disabled"), "false", "enable: menu wrapper ARIA" );
+ equals( menu.children("ul").attr("aria-disabled"), "false", "enable: menu ARIA" );
});
-$.each([
- {
- type: "default",
- selector: "#speed",
- options: null
- },
- {
- type: "pop-up",
- selector: "#number",
- options: {
- dropdown: false
- }
- },
- {
- type: "optgroups",
- selector: "#files",
- options: null
+test("refresh - structure", function () {
+ expect(3);
+ var element = $("#number").selectmenu();
+ var widget = element.selectmenu("widget");
+ var button = widget.filter(".ui-selectmenu-button");
+ var menu = widget.filter(".ui-selectmenu-menu");
+
+ element.find("option").eq(2).remove();
+ element.find("option").eq(3).remove();
+ element.append('<option value="added_option">Added option</option>');
+ element.find("option").first()
+ .attr("value", "changed_value")
+ .text("Changed value");
+ element.selectmenu("refresh");
+
+ equals( element.find("option").length, menu.find("li").not(".ui-selectmenu-optgroup").length, "menu item length" );
+ equals( element.find("option").last().text(), menu.find("li").not(".ui-selectmenu-optgroup").last().text(), "added item" );
+ equals( element.find("option").first().text(), menu.find("li").not(".ui-selectmenu-optgroup").first().text(), "chnaged item" );
+});
+
+
+test("refresh - disabled select", function () {
+ expect(6);
+ var element = $("#speed").selectmenu();
+ var widget = element.selectmenu("widget");
+ var button = widget.filter(".ui-selectmenu-button");
+ var menu = widget.filter(".ui-selectmenu-menu");
+
+ element.attr("disabled", "disabled");
+ element.selectmenu("refresh");
+
+ ok( element.selectmenu("option", "disabled"), "widget option" );
+ equals( button.attr("aria-disabled"), "true", "button wrapper ARIA" );
+ equals( button.children("a").attr("aria-disabled"), "true", "button ARIA" );
+ equals( button.children("a").attr("tabindex"), -1, "button tabindex" );
+ equals( menu.attr("aria-disabled"), "true", "menu wrapper ARIA" );
+ equals( menu.children("ul").attr("aria-disabled"), "true", "mene ARIA" );
+});
+
+test("refresh - disabled option", function () {
+ expect(2);
+ var element = $("#speed").selectmenu();
+ var widget = element.selectmenu("widget");
+ var button = widget.filter(".ui-selectmenu-button");
+ var menu = widget.filter(".ui-selectmenu-menu");
+
+ element.attr("disabled", "disabled");
+ element.find("option").eq(2).attr("disabled", "disabled");
+ element.selectmenu("refresh");
+
+ var disabledItem = menu.find("li").not(".ui-selectmenu-optgroup").eq(2);
+ ok( disabledItem.hasClass("ui-state-disabled"), "class" );
+ ok( disabledItem.children("a").length <= 0, "has no link" );
+});
+
+test("refresh - disabled optgroup", function () {
+ var element = $("#files").selectmenu();
+ var widget = element.selectmenu("widget");
+ var button = widget.filter(".ui-selectmenu-button");
+ var menu = widget.filter(".ui-selectmenu-menu");
+
+ var originalDisabledOptgroup = element.find("optgroup").first();
+ var originalDisabledOptions = originalDisabledOptgroup.find("option");
+ expect(2 + originalDisabledOptions.length * 2);
+
+ originalDisabledOptgroup.attr("disabled", "disabled");
+ element.selectmenu("refresh");
+
+ var item = menu.find("li.ui-selectmenu-optgroup").first();
+ ok( item.hasClass("ui-state-disabled"), "class" );
+
+ equals( menu.find("li").not(".ui-selectmenu-optgroup").filter(".ui-state-disabled").length, originalDisabledOptions.length, "disabled options" );
+ for ( var i = 0; i < originalDisabledOptions.length; i++ ) {
+ item = item.next("li");
+ ok( item.hasClass("ui-state-disabled"), "item #" + i + ": class" );
+ ok( item.children("a").length <= 0, "item #" + i + ": has no link" );
}
-], function( i, settings ) {
- test("refresh - " + settings.type, function () {
- // expect(6);
- var element = $(settings.selector).selectmenu(settings.options);
- var widget = element.selectmenu("widget");
- var button = widget.filter(".ui-selectmenu-button");
- var menu = widget.filter(".ui-selectmenu-menu");
-
- element.selectmenu("refresh");
- });
});