diff options
author | Scott González <scott.gonzalez@gmail.com> | 2012-04-20 11:06:11 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2012-04-20 11:06:11 -0400 |
commit | 308b55e50ca781ad9db08a252f313ee2e8e2f257 (patch) | |
tree | b287b6936d45efdfe067d2bdf4c732b13a1726bd /tests | |
parent | 2cf9948cadf45a24c591d6f7232f2470b4d9743e (diff) | |
parent | 33df9b788d3f60459c43acbfefdfeef8a07ce632 (diff) | |
download | jquery-ui-308b55e50ca781ad9db08a252f313ee2e8e2f257.tar.gz jquery-ui-308b55e50ca781ad9db08a252f313ee2e8e2f257.zip |
Merge branch 'master' into position-notification
Diffstat (limited to 'tests')
83 files changed, 1440 insertions, 1370 deletions
diff --git a/tests/unit/accordion/accordion_core.js b/tests/unit/accordion/accordion_core.js index 92d79c121..7a1d56c18 100644 --- a/tests/unit/accordion/accordion_core.js +++ b/tests/unit/accordion/accordion_core.js @@ -1,6 +1,9 @@ (function( $ ) { -module( "accordion: core", accordion_setupTeardown() ); +var setupTeardown = TestHelpers.accordion.setupTeardown, + state = TestHelpers.accordion.state; + +module( "accordion: core", setupTeardown() ); $.each( { div: "#list1", ul: "#navigation", dl: "#accordion-dl" }, function( type, selector ) { test( "markup structure: " + type, function() { @@ -21,15 +24,15 @@ test( "handle click on header-descendant", function() { expect( 1 ); var element = $( "#navigation" ).accordion(); $( "#navigation h2:eq(1) a" ).click(); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "accessibility", function () { expect( 37 ); var element = $( "#list1" ).accordion({ - active: 1 - }); - var headers = element.find( ".ui-accordion-header" ); + active: 1 + }), + headers = element.find( ".ui-accordion-header" ); equal( element.attr( "role" ), "tablist", "element role" ); headers.each(function( i ) { @@ -85,22 +88,22 @@ asyncTest( "keybaord support", function() { ok( headers.eq( 2 ).is( ".ui-state-focus" ), "RIGHT moves focus to next header" ); headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.DOWN } ); ok( headers.eq( 0 ).is( ".ui-state-focus" ), "DOWN wraps focus to first header" ); - + headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.UP } ); ok( headers.eq( 2 ).is( ".ui-state-focus" ), "UP wraps focus to last header" ); headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.LEFT } ); ok( headers.eq( 1 ).is( ".ui-state-focus" ), "LEFT moves focus to previous header" ); - + headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.HOME } ); ok( headers.eq( 0 ).is( ".ui-state-focus" ), "HOME moves focus to first header" ); headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.END } ); ok( headers.eq( 2 ).is( ".ui-state-focus" ), "END moves focus to last header" ); - + headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.ENTER } ); equal( element.accordion( "option", "active" ) , 2, "ENTER activates panel" ); headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.SPACE } ); equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" ); - + anchor.simulate( "focus" ); setTimeout(function() { ok( !headers.eq( 1 ).is( ".ui-state-focus" ), "header loses focus when focusing inside the panel" ); diff --git a/tests/unit/accordion/accordion_defaults.js b/tests/unit/accordion/accordion_defaults.js index 9ad85bbce..ef24cf25e 100644 --- a/tests/unit/accordion/accordion_defaults.js +++ b/tests/unit/accordion/accordion_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "accordion", { +TestHelpers.commonWidgetTests( "accordion", { defaults: { active: 0, animate: {}, diff --git a/tests/unit/accordion/accordion_defaults_deprecated.js b/tests/unit/accordion/accordion_defaults_deprecated.js index 99f5ac827..22d5e1289 100644 --- a/tests/unit/accordion/accordion_defaults_deprecated.js +++ b/tests/unit/accordion/accordion_defaults_deprecated.js @@ -1,4 +1,4 @@ -commonWidgetTests( "accordion", { +TestHelpers.commonWidgetTests( "accordion", { defaults: { active: 0, animate: null, diff --git a/tests/unit/accordion/accordion_deprecated.js b/tests/unit/accordion/accordion_deprecated.js index eec034e18..8d8e8a0d6 100644 --- a/tests/unit/accordion/accordion_deprecated.js +++ b/tests/unit/accordion/accordion_deprecated.js @@ -1,70 +1,74 @@ (function( $ ) { -module( "accordion (deprecated): expanded active option, activate method", accordion_setupTeardown() ); +var equalHeights = TestHelpers.accordion.equalHeights, + setupTeardown = TestHelpers.accordion.setupTeardown, + state = TestHelpers.accordion.state; + +module( "accordion (deprecated): expanded active option, activate method", setupTeardown() ); test( "activate, numeric", function() { expect( 5 ); var element = $( "#list1" ).accordion({ active: 1 }); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "activate", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "activate", 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "activate", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "activate, numeric, collapsible:true", function() { expect( 3 ); var element = $( "#list1" ).accordion({ collapsible: true }); element.accordion( "activate", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "activate", -1 ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "activate, boolean, collapsible: true", function() { expect( 2 ); var element = $( "#list1" ).accordion({ collapsible: true }); element.accordion( "activate", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", false ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "activate, boolean, collapsible: false", function() { expect( 2 ); var element = $( "#list1" ).accordion(); element.accordion( "activate", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", false ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "activate, string expression", function() { expect( 4 ); var element = $( "#list1" ).accordion({ active: "h3:last" }); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", ":first" ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "activate", ":eq(1)" ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "activate", ":last" ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "activate, jQuery or DOM element", function() { expect( 3 ); var element = $( "#list1" ).accordion({ active: $( "#list1 h3:last" ) }); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "activate", $( "#list1 h3:first" ) ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "activate", $( "#list1 h3" )[ 1 ] ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ active: Selector }", function() { @@ -72,9 +76,9 @@ test( "{ active: Selector }", function() { var element = $("#list1").accordion({ active: "h3:last" }); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "active", "h3:eq(1)" ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ active: Element }", function() { @@ -82,9 +86,9 @@ test( "{ active: Element }", function() { var element = $( "#list1" ).accordion({ active: $( "#list1 h3:last" )[ 0 ] }); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "active", $( "#list1 h3:eq(1)" )[ 0 ] ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ active: jQuery Object }", function() { @@ -92,26 +96,26 @@ test( "{ active: jQuery Object }", function() { var element = $( "#list1" ).accordion({ active: $( "#list1 h3:last" ) }); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "active", $( "#list1 h3:eq(1)" ) ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); -module( "accordion (deprecated) - height options", accordion_setupTeardown() ); +module( "accordion (deprecated) - height options", setupTeardown() ); test( "{ autoHeight: true }, default", function() { expect( 3 ); - accordion_equalHeights( $( "#navigation" ).accordion({ autoHeight: true }), 95, 130 ); + equalHeights( $( "#navigation" ).accordion({ autoHeight: true }), 95, 130 ); }); test( "{ autoHeight: false }", function() { expect( 3 ); - var element = $( "#navigation" ).accordion({ autoHeight: false }); - var sizes = []; + var element = $( "#navigation" ).accordion({ autoHeight: false }), + sizes = []; element.find( ".ui-accordion-content" ).each(function() { sizes.push( $(this).height() ); }); @@ -124,7 +128,7 @@ test( "{ fillSpace: true }", function() { expect( 3 ); $( "#navigationWrapper" ).height( 500 ); var element = $( "#navigation" ).accordion({ fillSpace: true }); - accordion_equalHeights( element, 446, 458 ); + equalHeights( element, 446, 458 ); }); test( "{ fillSapce: true } with sibling", function() { @@ -138,7 +142,7 @@ test( "{ fillSapce: true } with sibling", function() { }) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion({ fillSpace: true }); - accordion_equalHeights( element , 346, 358); + equalHeights( element , 346, 358); }); test( "{ fillSpace: true } with multiple siblings", function() { @@ -167,14 +171,14 @@ test( "{ fillSpace: true } with multiple siblings", function() { }) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion({ fillSpace: true }); - accordion_equalHeights( element, 296, 308 ); + equalHeights( element, 296, 308 ); }); -module( "accordion (deprecated) - icons", accordion_setupTeardown() ); +module( "accordion (deprecated) - icons", setupTeardown() ); test( "icons, headerSelected", function() { expect( 3 ); @@ -191,7 +195,7 @@ test( "icons, headerSelected", function() { -module( "accordion (deprecated) - resize", accordion_setupTeardown() ); +module( "accordion (deprecated) - resize", setupTeardown() ); test( "resize", function() { expect( 6 ); @@ -202,29 +206,29 @@ test( "resize", function() { .accordion({ heightStyle: "fill" }); - accordion_equalHeights( element, 246, 258 ); + equalHeights( element, 246, 258 ); element.parent().height( 500 ); element.accordion( "resize" ); - accordion_equalHeights( element, 446, 458 ); + equalHeights( element, 446, 458 ); }); -module( "accordion (deprecated) - navigation", accordion_setupTeardown() ); +module( "accordion (deprecated) - navigation", setupTeardown() ); test( "{ navigation: true, navigationFilter: header }", function() { expect( 2 ); var element = $( "#navigation" ).accordion({ navigation: true, navigationFilter: function() { - return /\?p=1\.1\.3$/.test( this.href ); + return (/\?p=1\.1\.3$/).test( this.href ); } }); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "{ navigation: true, navigationFilter: content }", function() { @@ -232,27 +236,27 @@ test( "{ navigation: true, navigationFilter: content }", function() { var element = $( "#navigation" ).accordion({ navigation: true, navigationFilter: function() { - return /\?p=1\.1\.3\.2$/.test( this.href ); + return (/\?p=1\.1\.3\.2$/).test( this.href ); } }); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); -module( "accordion (deprecated) - changestart/change events", accordion_setupTeardown() ); +module( "accordion (deprecated) - changestart/change events", setupTeardown() ); test( "changestart", function() { expect( 26 ); var element = $( "#list1" ).accordion({ - active: false, - collapsible: true - }); - var headers = element.find( ".ui-accordion-header" ); - var content = element.find( ".ui-accordion-content" ); + active: false, + collapsible: true + }), + headers = element.find( ".ui-accordion-header" ), + content = element.find( ".ui-accordion-content" ); element.one( "accordionchangestart", function( event, ui ) { equal( ui.oldHeader.size(), 0 ); @@ -261,10 +265,10 @@ test( "changestart", function() { strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); equal( ui.newContent.size(), 1 ); strictEqual( ui.newContent[ 0 ], content[ 0 ] ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.accordion( "option", "active", 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.one( "accordionchangestart", function( event, ui ) { equal( ui.oldHeader.size(), 1 ); @@ -275,10 +279,10 @@ test( "changestart", function() { strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); equal( ui.newContent.size(), 1 ); strictEqual( ui.newContent[ 0 ], content[ 1 ] ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); headers.eq( 1 ).click(); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.one( "accordionchangestart", function( event, ui ) { equal( ui.oldHeader.size(), 1 ); @@ -287,20 +291,20 @@ test( "changestart", function() { strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); equal( ui.newHeader.size(), 0 ); equal( ui.newContent.size(), 0 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); element.accordion( "option", "active", false ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "change", function() { expect( 20 ); var element = $( "#list1" ).accordion({ - active: false, - collapsible: true - }); - var headers = element.find( ".ui-accordion-header" ); - var content = element.find( ".ui-accordion-content" ); + active: false, + collapsible: true + }), + headers = element.find( ".ui-accordion-header" ), + content = element.find( ".ui-accordion-content" ); element.one( "accordionchange", function( event, ui ) { equal( ui.oldHeader.size(), 0 ); diff --git a/tests/unit/accordion/accordion_events.js b/tests/unit/accordion/accordion_events.js index dbb3e37df..932e4637d 100644 --- a/tests/unit/accordion/accordion_events.js +++ b/tests/unit/accordion/accordion_events.js @@ -1,6 +1,9 @@ (function( $ ) { -module( "accordion: events", accordion_setupTeardown() ); +var setupTeardown = TestHelpers.accordion.setupTeardown, + state = TestHelpers.accordion.state; + +module( "accordion: events", setupTeardown() ); test( "create", function() { expect( 10 ); @@ -44,11 +47,11 @@ test( "create", function() { test( "beforeActivate", function() { expect( 38 ); var element = $( "#list1" ).accordion({ - active: false, - collapsible: true - }); - var headers = element.find( ".ui-accordion-header" ); - var content = element.find( ".ui-accordion-content" ); + active: false, + collapsible: true + }), + headers = element.find( ".ui-accordion-header" ), + content = element.find( ".ui-accordion-content" ); element.one( "accordionbeforeactivate", function( event, ui ) { ok( !( "originalEvent" in event ) ); @@ -58,10 +61,10 @@ test( "beforeActivate", function() { strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); equal( ui.newContent.size(), 1 ); strictEqual( ui.newContent[ 0 ], content[ 0 ] ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.accordion( "option", "active", 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { equal( event.originalEvent.type, "click" ); @@ -73,10 +76,10 @@ test( "beforeActivate", function() { strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); equal( ui.newContent.size(), 1 ); strictEqual( ui.newContent[ 0 ], content[ 1 ] ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); headers.eq( 1 ).click(); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { ok( !( "originalEvent" in event ) ); @@ -86,10 +89,10 @@ test( "beforeActivate", function() { strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); equal( ui.newHeader.size(), 0 ); equal( ui.newContent.size(), 0 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); element.accordion( "option", "active", false ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); element.one( "accordionbeforeactivate", function( event, ui ) { ok( !( "originalEvent" in event ) ); @@ -100,20 +103,20 @@ test( "beforeActivate", function() { equal( ui.newContent.size(), 1 ); strictEqual( ui.newContent[ 0 ], content[ 2 ] ); event.preventDefault(); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.accordion( "option", "active", 2 ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "activate", function() { expect( 21 ); var element = $( "#list1" ).accordion({ - active: false, - collapsible: true - }); - var headers = element.find( ".ui-accordion-header" ); - var content = element.find( ".ui-accordion-content" ); + active: false, + collapsible: true + }), + headers = element.find( ".ui-accordion-header" ), + content = element.find( ".ui-accordion-content" ); element.one( "accordionactivate", function( event, ui ) { equal( ui.oldHeader.size(), 0 ); diff --git a/tests/unit/accordion/accordion_methods.js b/tests/unit/accordion/accordion_methods.js index 2f4722070..2c5b36632 100644 --- a/tests/unit/accordion/accordion_methods.js +++ b/tests/unit/accordion/accordion_methods.js @@ -1,6 +1,10 @@ (function( $ ) { -module( "accordion: methods", accordion_setupTeardown() ); +var equalHeights = TestHelpers.accordion.equalHeights, + setupTeardown = TestHelpers.accordion.setupTeardown, + state = TestHelpers.accordion.state; + +module( "accordion: methods", setupTeardown() ); test( "destroy", function() { expect( 1 ); @@ -12,17 +16,17 @@ test( "destroy", function() { test( "enable/disable", function() { expect( 4 ); var element = $( "#list1" ).accordion(); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "disable" ); // event does nothing element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); // option still works element.accordion( "option", "active", 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "enable" ); element.accordion( "option", "active", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "refresh", function() { @@ -34,11 +38,11 @@ test( "refresh", function() { .accordion({ heightStyle: "fill" }); - accordion_equalHeights( element, 246, 258 ); + equalHeights( element, 246, 258 ); element.parent().height( 500 ); element.accordion( "refresh" ); - accordion_equalHeights( element, 446, 458 ); + equalHeights( element, 446, 458 ); }); }( jQuery ) ); diff --git a/tests/unit/accordion/accordion_options.js b/tests/unit/accordion/accordion_options.js index 2b7176394..f64ddc675 100644 --- a/tests/unit/accordion/accordion_options.js +++ b/tests/unit/accordion/accordion_options.js @@ -1,12 +1,16 @@ (function( $ ) { -module( "accordion: options", accordion_setupTeardown() ); +var equalHeights = TestHelpers.accordion.equalHeights, + setupTeardown = TestHelpers.accordion.setupTeardown, + state = TestHelpers.accordion.state; + +module( "accordion: options", setupTeardown() ); test( "{ active: default }", function() { expect( 2 ); var element = $( "#list1" ).accordion(); equal( element.accordion( "option", "active" ), 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); test( "{ active: false }", function() { @@ -15,19 +19,19 @@ test( "{ active: false }", function() { active: false, collapsible: true }); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); equal( element.find( ".ui-accordion-header.ui-state-active" ).size(), 0, "no headers selected" ); equal( element.accordion( "option", "active" ), false ); element.accordion( "option", "collapsible", false ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.accordion( "option", "active" ), 0 ); element.accordion( "destroy" ); element.accordion({ active: false }); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); strictEqual( element.accordion( "option", "active" ), 0 ); }); @@ -37,19 +41,19 @@ test( "{ active: Number }", function() { active: 2 }); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "active", 0 ); equal( element.accordion( "option", "active" ), 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).click(); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "option", "active", 10 ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); if ( $.uiBackCompat === false ) { @@ -59,19 +63,19 @@ if ( $.uiBackCompat === false ) { active: -1 }); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "active", -2 ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "option", "active", -10 ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.accordion( "option", "active", -3 ); equal( element.accordion( "option", "active" ), 0 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); } @@ -80,7 +84,7 @@ test( "{ animate: false }", function() { var element = $( "#list1" ).accordion({ animate: false }), - panels = element.find( ".ui-accordion-content" ); + panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; $.fn.animate = function() { ok( false, ".animate() called" ); @@ -98,7 +102,7 @@ asyncTest( "{ animate: Number }", function() { var element = $( "#list1" ).accordion({ animate: 100 }), - panels = element.find( ".ui-accordion-content" ); + panels = element.find( ".ui-accordion-content" ), animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { @@ -120,10 +124,10 @@ asyncTest( "{ animate: Number }", function() { asyncTest( "{ animate: String }", function() { expect( 7 ); var element = $( "#list1" ).accordion({ - animate: "linear" - }), - panels = element.find( ".ui-accordion-content" ); - animate = $.fn.animate; + animate: "linear" + }), + panels = element.find( ".ui-accordion-content" ), + animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { equal( duration, undefined, "default duration" ); @@ -144,10 +148,10 @@ asyncTest( "{ animate: String }", function() { asyncTest( "{ animate: {} }", function() { expect( 7 ); var element = $( "#list1" ).accordion({ - animate: {} - }), - panels = element.find( ".ui-accordion-content" ); - animate = $.fn.animate; + animate: {} + }), + panels = element.find( ".ui-accordion-content" ), + animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { equal( duration, undefined, "default duration" ); @@ -168,10 +172,10 @@ asyncTest( "{ animate: {} }", function() { asyncTest( "{ animate: { duration, easing } }", function() { expect( 7 ); var element = $( "#list1" ).accordion({ - animate: { duration: 100, easing: "linear" } - }), - panels = element.find( ".ui-accordion-content" ); - animate = $.fn.animate; + animate: { duration: 100, easing: "linear" } + }), + panels = element.find( ".ui-accordion-content" ), + animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { equal( duration, 100, "correct duration" ); @@ -192,11 +196,11 @@ asyncTest( "{ animate: { duration, easing } }", function() { asyncTest( "{ animate: { duration, easing } }, animate down", function() { expect( 7 ); var element = $( "#list1" ).accordion({ - active: 1, - animate: { duration: 100, easing: "linear" } - }), - panels = element.find( ".ui-accordion-content" ); - animate = $.fn.animate; + active: 1, + animate: { duration: 100, easing: "linear" } + }), + panels = element.find( ".ui-accordion-content" ), + animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { equal( duration, 100, "correct duration" ); @@ -217,17 +221,17 @@ asyncTest( "{ animate: { duration, easing } }, animate down", function() { asyncTest( "{ animate: { duration, easing, down } }, animate down", function() { expect( 7 ); var element = $( "#list1" ).accordion({ - active: 1, - animate: { - duration: 100, - easing: "linear", - down: { - easing: "swing" + active: 1, + animate: { + duration: 100, + easing: "linear", + down: { + easing: "swing" + } } - } - }), - panels = element.find( ".ui-accordion-content" ); - animate = $.fn.animate; + }), + panels = element.find( ".ui-accordion-content" ), + animate = $.fn.animate; // called twice (both panels) $.fn.animate = function( props, duration, easing ) { equal( duration, 100, "correct duration" ); @@ -252,11 +256,11 @@ test( "{ collapsible: false }", function() { }); element.accordion( "option", "active", false ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).click(); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ collapsible: true }", function() { @@ -268,15 +272,15 @@ test( "{ collapsible: true }", function() { element.accordion( "option", "active", false ); equal( element.accordion( "option", "active" ), false ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); element.accordion( "option", "active", 1 ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).click(); equal( element.accordion( "option", "active" ), false ); - accordion_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "{ event: null }", function() { @@ -284,16 +288,16 @@ test( "{ event: null }", function() { var element = $( "#list1" ).accordion({ event: null }); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "option", "active", 1 ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // ensure default click handler isn't bound element.find( ".ui-accordion-header" ).eq( 2 ).click(); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ event: custom }", function() { @@ -301,20 +305,20 @@ test( "{ event: custom }", function() { var element = $( "#list1" ).accordion({ event: "custom1 custom2" }); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // ensure default click handler isn't bound element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "custom2" ); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.accordion( "option", "event", "custom3" ); @@ -322,20 +326,20 @@ test( "{ event: custom }", function() { element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom2" ); equal( element.accordion( "option", "active" ), 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom3" ); equal( element.accordion( "option", "active" ), 1 ); - accordion_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ header: default }", function() { expect( 2 ); // default: > li > :first-child,> :not(li):even // > :not(li):even - accordion_state( $( "#list1" ).accordion(), 1, 0, 0); + state( $( "#list1" ).accordion(), 1, 0, 0); // > li > :first-child - accordion_state( $( "#navigation" ).accordion(), 1, 0, 0); + state( $( "#navigation" ).accordion(), 1, 0, 0); }); test( "{ header: custom }", function() { @@ -347,23 +351,23 @@ test( "{ header: custom }", function() { ok( $( this ).hasClass( "ui-accordion-header" ) ); }); equal( element.find( ".ui-accordion-header" ).length, 3 ); - accordion_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.accordion( "option", "active", 2 ); - accordion_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); }); test( "{ heightStyle: 'auto' }", function() { expect( 3 ); var element = $( "#navigation" ).accordion({ heightStyle: "auto" }); - accordion_equalHeights( element, 95, 130 ); + equalHeights( element, 95, 130 ); }); test( "{ heightStyle: 'content' }", function() { expect( 3 ); - var element = $( "#navigation" ).accordion({ heightStyle: "content" }); - var sizes = element.find( ".ui-accordion-content" ).map(function() { - return $( this ).height(); - }).get(); + var element = $( "#navigation" ).accordion({ heightStyle: "content" }), + sizes = element.find( ".ui-accordion-content" ).map(function() { + return $( this ).height(); + }).get(); ok( sizes[ 0 ] >= 70 && sizes[ 0 ] <= 105, "was " + sizes[ 0 ] ); ok( sizes[ 1 ] >= 98 && sizes[ 1 ] <= 126, "was " + sizes[ 1 ] ); ok( sizes[ 2 ] >= 42 && sizes[ 2 ] <= 54, "was " + sizes[ 2 ] ); @@ -373,7 +377,7 @@ test( "{ heightStyle: 'fill' }", function() { expect( 3 ); $( "#navigationWrapper" ).height( 500 ); var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); - accordion_equalHeights( element, 446, 458 ); + equalHeights( element, 446, 458 ); }); test( "{ heightStyle: 'fill' } with sibling", function() { @@ -387,7 +391,7 @@ test( "{ heightStyle: 'fill' } with sibling", function() { }) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); - accordion_equalHeights( element , 346, 358); + equalHeights( element , 346, 358); }); test( "{ heightStyle: 'fill' } with multiple siblings", function() { @@ -416,7 +420,7 @@ test( "{ heightStyle: 'fill' } with multiple siblings", function() { }) .prependTo( "#navigationWrapper" ); var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); - accordion_equalHeights( element, 296, 308 ); + equalHeights( element, 296, 308 ); }); test( "{ icons: false }", function() { diff --git a/tests/unit/accordion/accordion_test_helpers.js b/tests/unit/accordion/accordion_test_helpers.js index 542809ea0..56967793d 100644 --- a/tests/unit/accordion/accordion_test_helpers.js +++ b/tests/unit/accordion/accordion_test_helpers.js @@ -1,30 +1,32 @@ -function accordion_state( accordion ) { - var expected = $.makeArray( arguments ).slice( 1 ); - var actual = accordion.find( ".ui-accordion-content" ).map(function() { - return $( this ).css( "display" ) === "none" ? 0 : 1; - }).get(); - QUnit.push( QUnit.equiv(actual, expected), actual, expected ); -} +TestHelpers.accordion = { + equalHeights: function( accordion, min, max ) { + var sizes = []; + accordion.find( ".ui-accordion-content" ).each(function() { + sizes.push( $( this ).outerHeight() ); + }); + ok( sizes[ 0 ] >= min && sizes[ 0 ] <= max, + "must be within " + min + " and " + max + ", was " + sizes[ 0 ] ); + deepEqual( sizes[ 0 ], sizes[ 1 ] ); + deepEqual( sizes[ 0 ], sizes[ 2 ] ); + }, -function accordion_equalHeights( accordion, min, max ) { - var sizes = []; - accordion.find( ".ui-accordion-content" ).each(function() { - sizes.push( $( this ).outerHeight() ); - }); - ok( sizes[ 0 ] >= min && sizes[ 0 ] <= max, - "must be within " + min + " and " + max + ", was " + sizes[ 0 ] ); - deepEqual( sizes[ 0 ], sizes[ 1 ] ); - deepEqual( sizes[ 0 ], sizes[ 2 ] ); -} + setupTeardown: function() { + var animate = $.ui.accordion.prototype.options.animate; + return { + setup: function() { + $.ui.accordion.prototype.options.animate = false; + }, + teardown: function() { + $.ui.accordion.prototype.options.animate = animate; + } + }; + }, -function accordion_setupTeardown() { - var animate = $.ui.accordion.prototype.options.animate; - return { - setup: function() { - $.ui.accordion.prototype.options.animate = false; - }, - teardown: function() { - $.ui.accordion.prototype.options.animate = animate; - } - }; -} + state: function( accordion ) { + var expected = $.makeArray( arguments ).slice( 1 ), + actual = accordion.find( ".ui-accordion-content" ).map(function() { + return $( this ).css( "display" ) === "none" ? 0 : 1; + }).get(); + QUnit.push( QUnit.equiv(actual, expected), actual, expected ); + } +}; diff --git a/tests/unit/autocomplete/autocomplete_defaults.js b/tests/unit/autocomplete/autocomplete_defaults.js index ac83eaea4..c090ce4df 100644 --- a/tests/unit/autocomplete/autocomplete_defaults.js +++ b/tests/unit/autocomplete/autocomplete_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "autocomplete", { +TestHelpers.commonWidgetTests( "autocomplete", { defaults: { appendTo: "body", autoFocus: false, diff --git a/tests/unit/autocomplete/autocomplete_events.js b/tests/unit/autocomplete/autocomplete_events.js index 1c7ff7462..082263a35 100644 --- a/tests/unit/autocomplete/autocomplete_events.js +++ b/tests/unit/autocomplete/autocomplete_events.js @@ -123,7 +123,7 @@ asyncTest( "cancel search", function() { asyncTest( "cancel focus", function() { expect( 1 ); - var customVal = "custom value"; + var customVal = "custom value", element = $( "#autocomplete" ).autocomplete({ delay: 0, source: data, diff --git a/tests/unit/button/button_core.js b/tests/unit/button/button_core.js index c110b4311..0d93ecedf 100644 --- a/tests/unit/button/button_core.js +++ b/tests/unit/button/button_core.js @@ -8,7 +8,7 @@ module("button: core"); test("checkbox", function() { - var input = $("#check"); + var input = $("#check"), label = $("label[for=check]"); ok( input.is(":visible") ); ok( label.is(":not(.ui-button)") ); @@ -18,7 +18,7 @@ test("checkbox", function() { }); test("radios", function() { - var inputs = $("#radio0 input"); + var inputs = $("#radio0 input"), labels = $("#radio0 label"); ok( inputs.is(":visible") ); ok( labels.is(":not(.ui-button)") ); @@ -51,7 +51,7 @@ test("radio groups", function() { }); test("input type submit, don't create child elements", function() { - var input = $("#submit") + var input = $("#submit"); deepEqual( input.children().length, 0 ); input.button(); deepEqual( input.children().length, 0 ); @@ -68,11 +68,12 @@ test("buttonset", function() { }); test("buttonset (rtl)", function() { - var parent = $("#radio1").parent(); + var set, + parent = $("#radio1").parent(); // Set to rtl parent.attr("dir", "rtl"); - var set = $("#radio1").buttonset(); + set = $("#radio1").buttonset(); ok( set.is(".ui-buttonset") ); deepEqual( set.children(".ui-button").length, 3 ); deepEqual( set.children("input:radio.ui-helper-hidden-accessible").length, 3 ); diff --git a/tests/unit/button/button_defaults.js b/tests/unit/button/button_defaults.js index 96c7e5bfa..ef22d3011 100644 --- a/tests/unit/button/button_defaults.js +++ b/tests/unit/button/button_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "button", { +TestHelpers.commonWidgetTests( "button", { defaults: { disabled: null, icons: { diff --git a/tests/unit/button/button_methods.js b/tests/unit/button/button_methods.js index a83a73ba4..347806d4e 100644 --- a/tests/unit/button/button_methods.js +++ b/tests/unit/button/button_methods.js @@ -7,8 +7,8 @@ module("button: methods"); test("destroy", function() { - var beforeHtml = $("#button").parent().html(); - var afterHtml = $("#button").button().button("destroy").parent().html(); + var beforeHtml = $("#button").parent().html(), + afterHtml = $("#button").button().button("destroy").parent().html(); // Opera 9 outputs role="" instead of removing the attribute like everyone else if ($.browser.opera) { afterHtml = afterHtml.replace(/ role=""/g, ""); diff --git a/tests/unit/datepicker/datepicker_core.js b/tests/unit/datepicker/datepicker_core.js index bbc447ffe..4bf04d83e 100644 --- a/tests/unit/datepicker/datepicker_core.js +++ b/tests/unit/datepicker/datepicker_core.js @@ -53,52 +53,52 @@ test("widget method", function() { }); test('baseStructure', function() { - var inp = init('#inp'); - inp.focus(); - var dp = $('#ui-datepicker-div'); - var iframe = ($.browser.msie && parseInt($.browser.version) < 7); + var header, title, table, thead, week, panel, inl, child, + inp = init('#inp').focus(), + dp = $('#ui-datepicker-div'), + iframe = ($.browser.msie && parseInt($.browser.version, 10) < 7); ok(dp.is(':visible'), 'Structure - datepicker visible'); ok(!dp.is('.ui-datepicker-rtl'), 'Structure - not right-to-left'); ok(!dp.is('.ui-datepicker-multi'), 'Structure - not multi-month'); equal(dp.children().length, 2 + (iframe ? 1 : 0), 'Structure - child count'); - var header = dp.children(':first'); + header = dp.children(':first'); ok(header.is('div.ui-datepicker-header'), 'Structure - header division'); equal(header.children().length, 3, 'Structure - header child count'); - ok(header.children(':first').is('a.ui-datepicker-prev') && header.children(':first').html() != '', 'Structure - prev link'); - ok(header.children(':eq(1)').is('a.ui-datepicker-next') && header.children(':eq(1)').html() != '', 'Structure - next link'); + ok(header.children(':first').is('a.ui-datepicker-prev') && header.children(':first').html() !== '', 'Structure - prev link'); + ok(header.children(':eq(1)').is('a.ui-datepicker-next') && header.children(':eq(1)').html() !== '', 'Structure - next link'); - var title = header.children(':last'); - ok(title.is('div.ui-datepicker-title') && title.html() != '','Structure - title division'); + title = header.children(':last'); + ok(title.is('div.ui-datepicker-title') && title.html() !== '','Structure - title division'); equal(title.children().length, 2, 'Structure - title child count'); - ok(title.children(':first').is('span.ui-datepicker-month') && title.children(':first').text() != '', 'Structure - month text') - ok(title.children(':last').is('span.ui-datepicker-year') && title.children(':last').text() != '', 'Structure - year text') + ok(title.children(':first').is('span.ui-datepicker-month') && title.children(':first').text() !== '', 'Structure - month text'); + ok(title.children(':last').is('span.ui-datepicker-year') && title.children(':last').text() !== '', 'Structure - year text'); - var table = dp.children(':eq(1)'); + table = dp.children(':eq(1)'); ok(table.is('table.ui-datepicker-calendar'), 'Structure - month table'); ok(table.children(':first').is('thead'), 'Structure - month table thead'); - var thead = table.children(':first').children(':first'); + thead = table.children(':first').children(':first'); ok(thead.is('tr'), 'Structure - month table title row'); equal(thead.find('th').length, 7, 'Structure - month table title cells'); ok(table.children(':eq(1)').is('tbody'), 'Structure - month table body'); ok(table.children(':eq(1)').children('tr').length >= 4, 'Structure - month table week count'); - var week = table.children(':eq(1)').children(':first'); + week = table.children(':eq(1)').children(':first'); ok(week.is('tr'), 'Structure - month table week row'); equal(week.children().length, 7, 'Structure - week child count'); ok(week.children(':first').is('td.ui-datepicker-week-end'), 'Structure - month table first day cell'); ok(week.children(':last').is('td.ui-datepicker-week-end'), 'Structure - month table second day cell'); - ok(dp.children('iframe').length == (iframe ? 1 : 0), 'Structure - iframe'); + ok(dp.children('iframe').length === (iframe ? 1 : 0), 'Structure - iframe'); inp.datepicker('hide').datepicker('destroy'); // Editable month/year and button panel inp = init('#inp', {changeMonth: true, changeYear: true, showButtonPanel: true}); inp.focus(); - var title = dp.find('div.ui-datepicker-title'); + title = dp.find('div.ui-datepicker-title'); ok(title.children(':first').is('select.ui-datepicker-month'), 'Structure - month selector'); ok(title.children(':last').is('select.ui-datepicker-year'), 'Structure - year selector'); - var panel = dp.children(':last'); + panel = dp.children(':last'); ok(panel.is('div.ui-datepicker-buttonpane'), 'Structure - button panel division'); equal(panel.children().length, 2, 'Structure - button panel child count'); ok(panel.children(':first').is('button.ui-datepicker-current'), 'Structure - today button'); @@ -110,7 +110,7 @@ test('baseStructure', function() { inp.focus(); ok(dp.is('.ui-datepicker-multi'), 'Structure multi [2] - multi-month'); equal(dp.children().length, 3 + (iframe ? 1 : 0), 'Structure multi [2] - child count'); - var child = dp.children(':first'); + child = dp.children(':first'); ok(child.is('div.ui-datepicker-group') && child.is('div.ui-datepicker-group-first'), 'Structure multi [2] - first month division'); child = dp.children(':eq(1)'); ok(child.is('div.ui-datepicker-group') && child.is('div.ui-datepicker-group-last'), 'Structure multi [2] - second month division'); @@ -146,16 +146,16 @@ test('baseStructure', function() { inp.datepicker('hide').datepicker('destroy'); // Inline - var inl = init('#inl'); + inl = init('#inl'); dp = inl.children(); ok(dp.is('.ui-datepicker-inline'), 'Structure inline - main div'); ok(!dp.is('.ui-datepicker-rtl'), 'Structure inline - not right-to-left'); ok(!dp.is('.ui-datepicker-multi'), 'Structure inline - not multi-month'); equal(dp.children().length, 2, 'Structure inline - child count'); - var header = dp.children(':first'); + header = dp.children(':first'); ok(header.is('div.ui-datepicker-header'), 'Structure inline - header division'); equal(header.children().length, 3, 'Structure inline - header child count'); - var table = dp.children(':eq(1)'); + table = dp.children(':eq(1)'); ok(table.is('table.ui-datepicker-calendar'), 'Structure inline - month table'); ok(table.children(':first').is('thead'), 'Structure inline - month table thead'); ok(table.children(':eq(1)').is('tbody'), 'Structure inline - month table body'); @@ -176,19 +176,20 @@ test('baseStructure', function() { }); test('customStructure', function() { - var dp = $('#ui-datepicker-div'); - // Check right-to-left localisation - var inp = init('#inp', $.datepicker.regional['he']); + var iframe, header, panel, title, thead, + dp = $('#ui-datepicker-div'), + // Check right-to-left localisation + inp = init('#inp', $.datepicker.regional.he); inp.data('showButtonPanel.datepicker',true); inp.focus(); - var iframe = ($.browser.msie && parseInt($.browser.version) < 7); + iframe = ($.browser.msie && parseInt($.browser.version, 10) < 7); ok(dp.is('.ui-datepicker-rtl'), 'Structure RTL - right-to-left'); - var header = dp.children(':first'); + header = dp.children(':first'); ok(header.is('div.ui-datepicker-header'), 'Structure RTL - header division'); equal(header.children().length, 3, 'Structure RTL - header child count'); ok(header.children(':first').is('a.ui-datepicker-next'), 'Structure RTL - prev link'); ok(header.children(':eq(1)').is('a.ui-datepicker-prev'), 'Structure RTL - next link'); - var panel = dp.children(':last'); + panel = dp.children(':last'); ok(panel.is('div.ui-datepicker-buttonpane'), 'Structure RTL - button division'); equal(panel.children().length, 2, 'Structure RTL - button panel child count'); ok(panel.children(':first').is('button.ui-datepicker-close'), 'Structure RTL - close button'); @@ -198,7 +199,7 @@ test('customStructure', function() { // Hide prev/next inp = init('#inp', {hideIfNoPrevNext: true, minDate: new Date(2008, 2 - 1, 4), maxDate: new Date(2008, 2 - 1, 14)}); inp.val('02/10/2008').focus(); - var header = dp.children(':first'); + header = dp.children(':first'); ok(header.is('div.ui-datepicker-header'), 'Structure hide prev/next - header division'); equal(header.children().length, 1, 'Structure hide prev/next - links child count'); ok(header.children(':first').is('div.ui-datepicker-title'), 'Structure hide prev/next - title division'); @@ -207,7 +208,7 @@ test('customStructure', function() { // Changeable Month with read-only year inp = init('#inp', {changeMonth: true}); inp.focus(); - var title = dp.children(':first').children(':last'); + title = dp.children(':first').children(':last'); equal(title.children().length, 2, 'Structure changeable month - title child count'); ok(title.children(':first').is('select.ui-datepicker-month'), 'Structure changeable month - month selector'); ok(title.children(':last').is('span.ui-datepicker-year'), 'Structure changeable month - read-only year'); @@ -216,7 +217,7 @@ test('customStructure', function() { // Changeable year with read-only month inp = init('#inp', {changeYear: true}); inp.focus(); - var title = dp.children(':first').children(':last'); + title = dp.children(':first').children(':last'); equal(title.children().length, 2, 'Structure changeable year - title child count'); ok(title.children(':first').is('span.ui-datepicker-month'), 'Structure changeable year - read-only month'); ok(title.children(':last').is('select.ui-datepicker-year'), 'Structure changeable year - year selector'); @@ -225,15 +226,15 @@ test('customStructure', function() { // Read-only first day of week inp = init('#inp', {changeFirstDay: false}); inp.focus(); - var thead = dp.find('.ui-datepicker-calendar thead tr'); + thead = dp.find('.ui-datepicker-calendar thead tr'); equal(thead.children().length, 7, 'Structure read-only first day - thead child count'); equal(thead.find('a').length, 0, 'Structure read-only first day - thead links count'); inp.datepicker('hide').datepicker('destroy'); }); test('keystrokes', function() { - var inp = init('#inp'); - var date = new Date(); + var inp = init('#inp'), + date = new Date(); inp.val('').datepicker('show'). simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Keystroke enter'); @@ -366,9 +367,10 @@ test('keystrokes', function() { }); test('mouse', function() { - var inp = init('#inp'); - var dp = $('#ui-datepicker-div'); - var date = new Date(); + var inl, + inp = init('#inp'), + dp = $('#ui-datepicker-div'), + date = new Date(); inp.val('').datepicker('show'); $('.ui-datepicker-calendar tbody a:contains(10)', dp).simulate('click', {}); date.setDate(10); @@ -419,9 +421,9 @@ test('mouse', function() { equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 18), 'Mouse click - next + min/max'); // Inline - var inl = init('#inl'); - var dp = $('.ui-datepicker-inline', inl); - var date = new Date(); + inl = init('#inl'); + dp = $('.ui-datepicker-inline', inl); + date = new Date(); inl.datepicker('setDate', date); $('.ui-datepicker-calendar tbody a:contains(10)', dp).simulate('click', {}); date.setDate(10); diff --git a/tests/unit/datepicker/datepicker_defaults.js b/tests/unit/datepicker/datepicker_defaults.js index 4243cf187..28e150791 100644 --- a/tests/unit/datepicker/datepicker_defaults.js +++ b/tests/unit/datepicker/datepicker_defaults.js @@ -6,4 +6,4 @@ var datepicker_defaults = { disabled: false }; -//commonWidgetTests('datepicker', { defaults: datepicker_defaults }); +//TestHelpers.commonWidgetTests('datepicker', { defaults: datepicker_defaults }); diff --git a/tests/unit/datepicker/datepicker_events.js b/tests/unit/datepicker/datepicker_events.js index 9876b7e60..b3e6704ef 100644 --- a/tests/unit/datepicker/datepicker_events.js +++ b/tests/unit/datepicker/datepicker_events.js @@ -5,9 +5,9 @@ module("datepicker: events"); -var selectedThis = null; -var selectedDate = null; -var selectedInst = null; +var selectedThis = null, +selectedDate = null, +selectedInst = null; function callback(date, inst) { selectedThis = this; @@ -22,8 +22,9 @@ function callback2(year, month, inst) { } test('events', function() { - var inp = init('#inp', {onSelect: callback}); - var date = new Date(); + var dateStr, newMonthYear, inp2, + inp = init('#inp', {onSelect: callback}), + date = new Date(); // onSelect inp.val('').datepicker('show'). simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); @@ -41,7 +42,7 @@ test('events', function() { simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date), 'Callback selected date - esc'); - var dateStr = '02/04/2008'; + dateStr = '02/04/2008'; inp.val(dateStr).datepicker('show'). simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(dateStr, selectedDate, @@ -49,7 +50,7 @@ test('events', function() { // onChangeMonthYear inp.datepicker('option', {onChangeMonthYear: callback2, onSelect: null}). val('').datepicker('show'); - var newMonthYear = function(date) { + newMonthYear = function(date) { return date.getFullYear() + '/' + (date.getMonth() + 1); }; date = new Date(); @@ -118,7 +119,7 @@ test('events', function() { simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END}); equal(selectedDate, '', 'Callback close date - ctrl+end'); - var inp2 = init('#inp2'); + inp2 = init('#inp2'); inp2.datepicker().datepicker('option', {onClose: callback}).datepicker('show'); inp.datepicker('show'); equal(selectedThis, inp2[0], 'Callback close this'); diff --git a/tests/unit/datepicker/datepicker_methods.js b/tests/unit/datepicker/datepicker_methods.js index c8f1b75b2..603427440 100644 --- a/tests/unit/datepicker/datepicker_methods.js +++ b/tests/unit/datepicker/datepicker_methods.js @@ -6,7 +6,8 @@ module("datepicker: methods"); test('destroy', function() { - var inp = init('#inp'); + var inl, + inp = init('#inp'); ok(inp.is('.hasDatepicker'), 'Default - marker class set'); ok($.data(inp[0], PROP_NAME), 'Default - instance present'); ok(inp.next().is('#alt'), 'Default - button absent'); @@ -19,7 +20,7 @@ test('destroy', function() { inp= init('#inp', {showOn: 'both'}); ok(inp.is('.hasDatepicker'), 'Button - marker class set'); ok($.data(inp[0], PROP_NAME), 'Button - instance present'); - ok(inp.next().text() == '...', 'Button - button added'); + ok(inp.next().text() === '...', 'Button - button added'); inp.datepicker('destroy'); inp = $('#inp'); ok(!inp.is('.hasDatepicker'), 'Button - marker class cleared'); @@ -29,7 +30,7 @@ test('destroy', function() { inp = init('#inp', {appendText: 'Testing'}); ok(inp.is('.hasDatepicker'), 'Append - marker class set'); ok($.data(inp[0], PROP_NAME), 'Append - instance present'); - ok(inp.next().text() == 'Testing', 'Append - append text added'); + ok(inp.next().text() === 'Testing', 'Append - append text added'); inp.datepicker('destroy'); inp = $('#inp'); ok(!inp.is('.hasDatepicker'), 'Append - marker class cleared'); @@ -40,29 +41,30 @@ test('destroy', function() { buttonImage: 'img/calendar.gif', appendText: 'Testing'}); ok(inp.is('.hasDatepicker'), 'Both - marker class set'); ok($.data(inp[0], PROP_NAME), 'Both - instance present'); - ok(inp.next()[0].nodeName.toLowerCase() == 'img', 'Both - button added'); - ok(inp.next().next().text() == 'Testing', 'Both - append text added'); + ok(inp.next()[0].nodeName.toLowerCase() === 'img', 'Both - button added'); + ok(inp.next().next().text() === 'Testing', 'Both - append text added'); inp.datepicker('destroy'); inp = $('#inp'); ok(!inp.is('.hasDatepicker'), 'Both - marker class cleared'); ok(!$.data(inp[0], PROP_NAME), 'Both - instance absent'); ok(inp.next().is('#alt'), 'Both - button and append text absent'); // Inline - var inl = init('#inl'); + inl = init('#inl'); ok(inl.is('.hasDatepicker'), 'Inline - marker class set'); - ok(inl.html() != '', 'Inline - datepicker present'); + ok(inl.html() !== '', 'Inline - datepicker present'); ok($.data(inl[0], PROP_NAME), 'Inline - instance present'); - ok(inl.next().length == 0 || inl.next().is('p'), 'Inline - button absent'); + ok(inl.next().length === 0 || inl.next().is('p'), 'Inline - button absent'); inl.datepicker('destroy'); inl = $('#inl'); ok(!inl.is('.hasDatepicker'), 'Inline - marker class cleared'); - ok(inl.html() == '', 'Inline - datepicker absent'); + ok(inl.html() === '', 'Inline - datepicker absent'); ok(!$.data(inl[0], PROP_NAME), 'Inline - instance absent'); - ok(inl.next().length == 0 || inl.next().is('p'), 'Inline - button absent'); + ok(inl.next().length === 0 || inl.next().is('p'), 'Inline - button absent'); }); test('enableDisable', function() { - var inp = init('#inp'); + var inl, dp, + inp = init('#inp'); ok(!inp.datepicker('isDisabled'), 'Enable/disable - initially marked as enabled'); ok(!inp[0].disabled, 'Enable/disable - field initially enabled'); inp.datepicker('disable'); @@ -91,19 +93,19 @@ test('enableDisable', function() { buttonImage: 'img/calendar.gif'}); ok(!inp.datepicker('isDisabled'), 'Enable/disable image - initially marked as enabled'); ok(!inp[0].disabled, 'Enable/disable image - field initially enabled'); - ok(inp.next('img').css('opacity') == 1, 'Enable/disable image - image initially enabled'); + ok(parseFloat(inp.next('img').css('opacity')) === 1, 'Enable/disable image - image initially enabled'); inp.datepicker('disable'); ok(inp.datepicker('isDisabled'), 'Enable/disable image - now marked as disabled'); ok(inp[0].disabled, 'Enable/disable image - field now disabled'); - ok(inp.next('img').css('opacity') != 1, 'Enable/disable image - image now disabled'); + ok(parseFloat(inp.next('img').css('opacity')) !== 1, 'Enable/disable image - image now disabled'); inp.datepicker('enable'); ok(!inp.datepicker('isDisabled'), 'Enable/disable image - now marked as enabled'); ok(!inp[0].disabled, 'Enable/disable image - field now enabled'); - ok(inp.next('img').css('opacity') == 1, 'Enable/disable image - image now enabled'); + ok(parseFloat(inp.next('img').css('opacity')) === 1, 'Enable/disable image - image now enabled'); inp.datepicker('destroy'); // Inline - var inl = init('#inl', {changeYear: true}); - var dp = $('.ui-datepicker-inline', inl); + inl = init('#inl', {changeYear: true}); + dp = $('.ui-datepicker-inline', inl); ok(!inl.datepicker('isDisabled'), 'Enable/disable inline - initially marked as enabled'); ok(!dp.children().is('.ui-state-disabled'), 'Enable/disable inline - not visually disabled initially'); ok(!dp.find('select').prop('disabled'), 'Enable/disable inline - form element enabled initially'); diff --git a/tests/unit/datepicker/datepicker_options.js b/tests/unit/datepicker/datepicker_options.js index f538c6d03..3e200ecaa 100644 --- a/tests/unit/datepicker/datepicker_options.js +++ b/tests/unit/datepicker/datepicker_options.js @@ -16,8 +16,8 @@ test('setDefaults', function() { }); test('option', function() { - var inp = init('#inp'); - var inst = $.data(inp[0], PROP_NAME); + var inp = init('#inp'), + inst = $.data(inp[0], PROP_NAME); // Set option equal(inst.settings.showOn, null, 'Initial setting showOn'); equal($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance showOn'); @@ -47,8 +47,8 @@ test('option', function() { }); test('change', function() { - var inp = init('#inp'); - var inst = $.data(inp[0], PROP_NAME); + var inp = init('#inp'), + inst = $.data(inp[0], PROP_NAME); equal(inst.settings.showOn, null, 'Initial setting showOn'); equal($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance showOn'); equal($.datepicker._defaults.showOn, 'focus', 'Initial default showOn'); @@ -67,14 +67,15 @@ test('change', function() { }); test('invocation', function() { - var inp = init('#inp'); - var dp = $('#ui-datepicker-div'); - var body = $('body'); + var button, image, + inp = init('#inp'), + dp = $('#ui-datepicker-div'), + body = $('body'); // On focus - var button = inp.siblings('button'); - ok(button.length == 0, 'Focus - button absent'); - var image = inp.siblings('img'); - ok(image.length == 0, 'Focus - image absent'); + button = inp.siblings('button'); + ok(button.length === 0, 'Focus - button absent'); + image = inp.siblings('img'); + ok(image.length === 0, 'Focus - image absent'); inp.focus(); ok(dp.is(':visible'), 'Focus - rendered on focus'); inp.simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); @@ -89,8 +90,8 @@ test('invocation', function() { ok(!dp.is(':visible'), 'Button - initially hidden'); button = inp.siblings('button'); image = inp.siblings('img'); - ok(button.length == 1, 'Button - button present'); - ok(image.length == 0, 'Button - image absent'); + ok(button.length === 1, 'Button - button present'); + ok(image.length === 0, 'Button - image absent'); equal(button.text(), 'Popup', 'Button - button text'); inp.focus(); ok(!dp.is(':visible'), 'Button - not rendered on focus'); @@ -104,9 +105,9 @@ test('invocation', function() { buttonImage: 'img/calendar.gif', buttonText: 'Cal'}); ok(!dp.is(':visible'), 'Image button - initially hidden'); button = inp.siblings('button'); - ok(button.length == 0, 'Image button - button absent'); + ok(button.length === 0, 'Image button - button absent'); image = inp.siblings('img'); - ok(image.length == 1, 'Image button - image present'); + ok(image.length === 1, 'Image button - image present'); equal(image.attr('src'), 'img/calendar.gif', 'Image button - image source'); equal(image.attr('title'), 'Cal', 'Image button - image text'); inp.focus(); @@ -120,11 +121,11 @@ test('invocation', function() { inp = init('#inp', {showOn: 'both', buttonImage: 'img/calendar.gif'}); ok(!dp.is(':visible'), 'Both - initially hidden'); button = inp.siblings('button'); - ok(button.length == 1, 'Both - button present'); + ok(button.length === 1, 'Both - button present'); image = inp.siblings('img'); - ok(image.length == 0, 'Both - image absent'); + ok(image.length === 0, 'Both - image absent'); image = button.children('img'); - ok(image.length == 1, 'Both - button image present'); + ok(image.length === 1, 'Both - button image present'); inp.focus(); ok(dp.is(':visible'), 'Both - rendered on focus'); body.simulate('mousedown', {}); @@ -137,29 +138,29 @@ test('invocation', function() { }); test('otherMonths', function() { - var inp = init('#inp'); - var pop = $('#ui-datepicker-div'); + var inp = init('#inp'), + pop = $('#ui-datepicker-div'); inp.val('06/01/2009').datepicker('show'); equal(pop.find('tbody').text(), '\u00a0123456789101112131415161718192021222324252627282930\u00a0\u00a0\u00a0\u00a0', 'Other months - none'); - ok(pop.find('td:last *').length == 0, 'Other months - no content'); + ok(pop.find('td:last *').length === 0, 'Other months - no content'); inp.datepicker('hide').datepicker('option', 'showOtherMonths', true).datepicker('show'); equal(pop.find('tbody').text(), '311234567891011121314151617181920212223242526272829301234', 'Other months - show'); - ok(pop.find('td:last span').length == 1, 'Other months - span content'); + ok(pop.find('td:last span').length === 1, 'Other months - span content'); inp.datepicker('hide').datepicker('option', 'selectOtherMonths', true).datepicker('show'); equal(pop.find('tbody').text(), '311234567891011121314151617181920212223242526272829301234', 'Other months - select'); - ok(pop.find('td:last a').length == 1, 'Other months - link content'); + ok(pop.find('td:last a').length === 1, 'Other months - link content'); inp.datepicker('hide').datepicker('option', 'showOtherMonths', false).datepicker('show'); equal(pop.find('tbody').text(), '\u00a0123456789101112131415161718192021222324252627282930\u00a0\u00a0\u00a0\u00a0', 'Other months - none'); - ok(pop.find('td:last *').length == 0, 'Other months - no content'); + ok(pop.find('td:last *').length === 0, 'Other months - no content'); }); test('defaultDate', function() { - var inp = init('#inp'); - var date = new Date(); + var inp = init('#inp'), + date = new Date(); inp.val('').datepicker('show'). simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Default date null'); @@ -252,17 +253,19 @@ test('defaultDate', function() { }); test('miscellaneous', function() { - var dp = $('#ui-datepicker-div'); - var inp = init('#inp'); + var curYear, longNames, shortNames, date, + dp = $('#ui-datepicker-div'), + inp = init('#inp'); // Year range - var genRange = function(start, offset) { - var range = ''; - for (var i = start; i < start + offset; i++) { + function genRange(start, offset) { + var i = start, + range = ''; + for (; i < start + offset; i++) { range += i; } return range; - }; - var curYear = new Date().getFullYear(); + } + curYear = new Date().getFullYear(); inp.val('02/04/2008').datepicker('show'); equal(dp.find('.ui-datepicker-year').text(), '2008', 'Year range - read-only default'); inp.datepicker('hide').datepicker('option', {changeYear: true}).datepicker('show'); @@ -285,9 +288,9 @@ test('miscellaneous', function() { equal(dp.find('.ui-datepicker-next').text(), 'Next', 'Navigation next - default'); inp.datepicker('hide').datepicker('option', {navigationAsDateFormat: true, prevText: '< M', currentText: 'MM', nextText: 'M >'}). val('02/04/2008').datepicker('show'); - var longNames = $.datepicker.regional[''].monthNames; - var shortNames = $.datepicker.regional[''].monthNamesShort; - var date = new Date(); + longNames = $.datepicker.regional[''].monthNames; + shortNames = $.datepicker.regional[''].monthNamesShort; + date = new Date(); equal(dp.find('.ui-datepicker-prev').text(), '< ' + shortNames[0], 'Navigation prev - as date format'); equal(dp.find('.ui-datepicker-current').text(), longNames[date.getMonth()], 'Navigation current - as date format'); @@ -311,11 +314,12 @@ test('miscellaneous', function() { }); test('minMax', function() { - var inp = init('#inp'); - var lastYear = new Date(2007, 6 - 1, 4); - var nextYear = new Date(2009, 6 - 1, 4); - var minDate = new Date(2008, 2 - 1, 29); - var maxDate = new Date(2008, 12 - 1, 7); + var date, + inp = init('#inp'), + lastYear = new Date(2007, 6 - 1, 4), + nextYear = new Date(2009, 6 - 1, 4), + minDate = new Date(2008, 2 - 1, 29), + maxDate = new Date(2008, 12 - 1, 7); inp.val('06/04/2008').datepicker('show'); inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); @@ -360,7 +364,7 @@ test('minMax', function() { equalsDate(inp.datepicker('getDate'), maxDate, 'Min/max - null, 12/07/2008 - ctrl+pgdn'); // Relative dates - var date = new Date(); + date = new Date(); date.setDate(date.getDate() - 7); inp.datepicker('option', {minDate: '-1w', maxDate: '+1 M +10 D '}). datepicker('hide').val('').datepicker('show'); @@ -394,9 +398,10 @@ test('minMax', function() { }); test('setDate', function() { - var inp = init('#inp'); - var date1 = new Date(2008, 6 - 1, 4); - var date2 = new Date(); + var inl, alt, minDate, maxDate, dateAndTimeToSet, dateAndTimeClone, + inp = init('#inp'), + date1 = new Date(2008, 6 - 1, 4), + date2 = new Date(); ok(inp.datepicker('getDate') == null, 'Set date - default'); inp.datepicker('setDate', date1); equalsDate(inp.datepicker('getDate'), date1, 'Set date - 2008-06-04'); @@ -423,7 +428,7 @@ test('setDate', function() { inp.datepicker('setDate', 'c -3 w'); equalsDate(inp.datepicker('getDate'), date1, 'Set date - c -3 w'); // Inline - var inl = init('#inl'); + inl = init('#inl'); date1 = new Date(2008, 6 - 1, 4); date2 = new Date(); equalsDate(inl.datepicker('getDate'), date2, 'Set date inline - default'); @@ -441,7 +446,7 @@ test('setDate', function() { inl.datepicker('setDate'); ok(inl.datepicker('getDate') == null, 'Set date inline - null'); // Alternate field - var alt = $('#alt'); + alt = $('#alt'); inp.datepicker('option', {altField: '#alt', altFormat: 'yy-mm-dd'}); date1 = new Date(2008, 6 - 1, 4); inp.datepicker('setDate', date1); @@ -451,8 +456,8 @@ test('setDate', function() { inp = init('#inp'); date1 = new Date(2008, 1 - 1, 4); date2 = new Date(2008, 6 - 1, 4); - var minDate = new Date(2008, 2 - 1, 29); - var maxDate = new Date(2008, 3 - 1, 28); + minDate = new Date(2008, 2 - 1, 29); + maxDate = new Date(2008, 3 - 1, 28); inp.val('').datepicker('option', {minDate: minDate}).datepicker('setDate', date2); equalsDate(inp.datepicker('getDate'), date2, 'Set date min/max - setDate > min'); inp.datepicker('setDate', date1); @@ -465,15 +470,15 @@ test('setDate', function() { equalsDate(inp.datepicker('getDate'), minDate, 'Set date min/max - setDate < min'); inp.datepicker('setDate', date2); equalsDate(inp.datepicker('getDate'), maxDate, 'Set date min/max - setDate > max'); - var dateAndTimeToSet = new Date(2008, 3 - 1, 28, 1, 11, 0); - var dateAndTimeClone = new Date(2008, 3 - 1, 28, 1, 11, 0); + dateAndTimeToSet = new Date(2008, 3 - 1, 28, 1, 11, 0); + dateAndTimeClone = new Date(2008, 3 - 1, 28, 1, 11, 0); inp.datepicker('setDate', dateAndTimeToSet); equal(dateAndTimeToSet.getTime(), dateAndTimeClone.getTime(), 'Date object passed should not be changed by setDate'); }); test('altField', function() { - var inp = init('#inp'); - var alt = $('#alt'); + var inp = init('#inp'), + alt = $('#alt'); // No alternate field set alt.val(''); inp.val('06/04/2008').datepicker('show'); @@ -507,26 +512,6 @@ test('altField', function() { inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END}); equal(inp.val(), '', 'Alt field - dp - ctrl+end'); equal(alt.val(), '', 'Alt field - alt - ctrl+end'); - - return - // TODO manual entry impl works (see altField demo) but this test doesn't - // probably something the rewrite won't cover anymore anyway - - // Verify alt field is updated on keyup - alt.val(''); - inp.val('06/04/200').datepicker('show'); - inp.simulate('keydown', {charCode: '8'.charCodeAt(0)}); - inp.simulate('keypress', {charCode: '8'.charCodeAt(0)}); - inp.simulate('keyup', {charCode: '8'.charCodeAt(0)}); - equal(inp.val(), '06/04/2008', 'Alt field - dp - manual entry'); - equal(alt.val(), '2008-06-04', 'Alt field - manual entry'); - // Verify alt field is not updated on keyup if date is invalid - inp.val('12/04'); - inp.simulate('keydown', {charCode: '/'.charCodeAt(0)}); - inp.simulate('keypress', {charCode: '/'.charCodeAt(0)}); - inp.simulate('keyup', {charCode: '/'.charCodeAt(0)}); - equal(inp.val(), '12/04/', 'Alt field - dp - manual entry incomplete'); - equal(alt.val(), '2008-06-04', 'Alt field - manual entry - not updated'); }); test('autoSize', function() { @@ -541,7 +526,7 @@ test('autoSize', function() { inp.datepicker('option', 'dateFormat', 'DD, MM dd, yy'); equal(inp.prop('size'), 29, 'Auto size - DD, MM dd, yy'); // French - inp.datepicker('option', $.extend({autoSize: false}, $.datepicker.regional['fr'])); + inp.datepicker('option', $.extend({autoSize: false}, $.datepicker.regional.fr)); equal(inp.prop('size'), 29, 'Auto size - fr - default'); inp.datepicker('option', 'autoSize', true); equal(inp.prop('size'), 10, 'Auto size - fr - dd/mm/yy'); @@ -552,7 +537,7 @@ test('autoSize', function() { inp.datepicker('option', 'dateFormat', 'DD, MM dd, yy'); equal(inp.prop('size'), 28, 'Auto size - fr - DD, MM dd, yy'); // Hebrew - inp.datepicker('option', $.extend({autoSize: false}, $.datepicker.regional['he'])); + inp.datepicker('option', $.extend({autoSize: false}, $.datepicker.regional.he)); equal(inp.prop('size'), 28, 'Auto size - he - default'); inp.datepicker('option', 'autoSize', true); equal(inp.prop('size'), 10, 'Auto size - he - dd/mm/yy'); @@ -565,8 +550,8 @@ test('autoSize', function() { }); test('daylightSaving', function() { - var inp = init('#inp'); - var dp = $('#ui-datepicker-div'); + var inp = init('#inp'), + dp = $('#ui-datepicker-div'); ok(true, 'Daylight saving - ' + new Date()); // Australia, Sydney - AM change, southern hemisphere inp.val('04/01/2008').datepicker('show'); @@ -646,9 +631,12 @@ test('daylightSaving', function() { equal(inp.val(), '11/03/2008', 'Daylight saving - US 11/03/2008'); }); -var beforeShowThis = null; -var beforeShowInput = null; -var beforeShowInst = null; +var beforeShowThis = null, + beforeShowInput = null, + beforeShowInst = null, + beforeShowDayThis = null, + beforeShowDayOK = true; + function beforeAll(input, inst) { beforeShowThis = this; @@ -657,84 +645,86 @@ function beforeAll(input, inst) { return {currentText: 'Current'}; } -var beforeShowDayThis = null; -var beforeShowDayOK = true; - function beforeDay(date) { beforeShowDayThis = this; beforeShowDayOK &= (date > new Date(2008, 1 - 1, 26) && date < new Date(2008, 3 - 1, 6)); - return [(date.getDate() % 2 == 0), (date.getDate() % 10 == 0 ? 'day10' : ''), - (date.getDate() % 3 == 0 ? 'Divisble by 3' : '')]; + return [(date.getDate() % 2 === 0), (date.getDate() % 10 === 0 ? 'day10' : ''), + (date.getDate() % 3 === 0 ? 'Divisble by 3' : '')]; } function calcWeek(date) { - var doy = date.getDate() + 6; - for (var m = date.getMonth() - 1; m >= 0; m--) + var doy = date.getDate() + 6, + m = date.getMonth() - 1; + for (; m >= 0; m--) { doy += $.datepicker._getDaysInMonth(date.getFullYear(), m); + } // Simple count from 01/01 starting at week 1 return Math.floor(doy / 7); } test('callbacks', function() { // Before show - var inp = init('#inp', {beforeShow: beforeAll}); - var inst = $.data(inp[0], 'datepicker'); + var dp, day20, day21, + inp = init('#inp', {beforeShow: beforeAll}), + inst = $.data(inp[0], 'datepicker'); equal($.datepicker._get(inst, 'currentText'), 'Today', 'Before show - initial'); inp.val('02/04/2008').datepicker('show'); equal($.datepicker._get(inst, 'currentText'), 'Current', 'Before show - changed'); - ok(beforeShowThis.id == inp[0].id, 'Before show - this OK'); - ok(beforeShowInput.id == inp[0].id, 'Before show - input OK'); + ok(beforeShowThis.id === inp[0].id, 'Before show - this OK'); + ok(beforeShowInput.id === inp[0].id, 'Before show - input OK'); deepEqual(beforeShowInst, inst, 'Before show - inst OK'); inp.datepicker('hide').datepicker('destroy'); // Before show day inp = init('#inp', {beforeShowDay: beforeDay}); - var dp = $('#ui-datepicker-div'); + dp = $('#ui-datepicker-div'); inp.val('02/04/2008').datepicker('show'); - ok(beforeShowDayThis.id == inp[0].id, 'Before show day - this OK'); + ok(beforeShowDayThis.id === inp[0].id, 'Before show day - this OK'); ok(beforeShowDayOK, 'Before show day - dates OK'); - var day20 = dp.find('.ui-datepicker-calendar td:contains("20")'); - var day21 = dp.find('.ui-datepicker-calendar td:contains("21")'); + day20 = dp.find('.ui-datepicker-calendar td:contains("20")'); + day21 = dp.find('.ui-datepicker-calendar td:contains("21")'); ok(!day20.is('.ui-datepicker-unselectable'), 'Before show day - unselectable 20'); ok(day21.is('.ui-datepicker-unselectable'), 'Before show day - unselectable 21'); ok(day20.is('.day10'), 'Before show day - CSS 20'); ok(!day21.is('.day10'), 'Before show day - CSS 21'); ok(!day20.attr('title'), 'Before show day - title 20'); - ok(day21.attr('title') == 'Divisble by 3', 'Before show day - title 21'); + ok(day21.attr('title') === 'Divisble by 3', 'Before show day - title 21'); inp.datepicker('hide').datepicker('destroy'); }); test('localisation', function() { - var inp = init('#inp', $.datepicker.regional['fr']); + var dp, month, day, date, + inp = init('#inp', $.datepicker.regional.fr); inp.datepicker('option', {dateFormat: 'DD, d MM yy', showButtonPanel:true, changeMonth:true, changeYear:true}).val('').datepicker('show'); - var dp = $('#ui-datepicker-div'); + dp = $('#ui-datepicker-div'); equal($('.ui-datepicker-close', dp).text(), 'Fermer', 'Localisation - close'); $('.ui-datepicker-close', dp).simulate('mouseover'); equal($('.ui-datepicker-prev', dp).text(), 'Précédent', 'Localisation - previous'); equal($('.ui-datepicker-current', dp).text(), 'Aujourd\'hui', 'Localisation - current'); equal($('.ui-datepicker-next', dp).text(), 'Suivant', 'Localisation - next'); - var month = 0; + month = 0; $('.ui-datepicker-month option', dp).each(function() { - equal($(this).text(), $.datepicker.regional['fr'].monthNamesShort[month], + equal($(this).text(), $.datepicker.regional.fr.monthNamesShort[month], 'Localisation - month ' + month); month++; }); - var day = 1; + day = 1; $('.ui-datepicker-calendar th', dp).each(function() { - equal($(this).text(), $.datepicker.regional['fr'].dayNamesMin[day], + equal($(this).text(), $.datepicker.regional.fr.dayNamesMin[day], 'Localisation - day ' + day); day = (day + 1) % 7; }); inp.simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); - var date = new Date(); - equal(inp.val(), $.datepicker.regional['fr'].dayNames[date.getDay()] + ', ' + - date.getDate() + ' ' + $.datepicker.regional['fr'].monthNames[date.getMonth()] + + date = new Date(); + equal(inp.val(), $.datepicker.regional.fr.dayNames[date.getDay()] + ', ' + + date.getDate() + ' ' + $.datepicker.regional.fr.monthNames[date.getMonth()] + ' ' + date.getFullYear(), 'Localisation - formatting'); }); test('noWeekends', function() { - for (var i = 1; i <= 31; i++) { - var date = new Date(2001, 1 - 1, i); + var i, date; + for (i = 1; i <= 31; i++) { + date = new Date(2001, 1 - 1, i); deepEqual($.datepicker.noWeekends(date), [(i + 1) % 7 >= 2, ''], 'No weekends ' + date); } @@ -769,6 +759,7 @@ test('iso8601Week', function() { test('parseDate', function() { init('#inp'); + var currentYear, gmtDate, fr, settings, zh; ok($.datepicker.parseDate('d m y', '') == null, 'Parse date empty'); equalsDate($.datepicker.parseDate('d m y', '3 2 01'), new Date(2001, 2 - 1, 3), 'Parse date d m y'); @@ -793,7 +784,7 @@ test('parseDate', function() { equalsDate($.datepicker.parseDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy', 'day 3 of February (\'Saturday\'), 2001'), new Date(2001, 2 - 1, 3), 'Parse date \'day\' d \'of\' MM (\'\'DD\'\'), yy'); - var currentYear = new Date().getFullYear(); + currentYear = new Date().getFullYear(); equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000) + '-02-03'), new Date(currentYear, 2 - 1, 3), 'Parse date y-m-d - default cutuff'); equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 10) + '-02-03'), @@ -808,12 +799,12 @@ test('parseDate', function() { new Date(currentYear + 60, 2 - 1, 3), 'Parse date y-m-d - cutoff +60'); equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 61) + '-02-03', {shortYearCutoff: '+60'}), new Date(currentYear - 39, 2 - 1, 3), 'Parse date y-m-d - cutoff +60'); - var gmtDate = new Date(2001, 2 - 1, 3); + gmtDate = new Date(2001, 2 - 1, 3); gmtDate.setMinutes(gmtDate.getMinutes() - gmtDate.getTimezoneOffset()); equalsDate($.datepicker.parseDate('@', '981158400000'), gmtDate, 'Parse date @'); equalsDate($.datepicker.parseDate('!', '631167552000000000'), gmtDate, 'Parse date !'); - var fr = $.datepicker.regional['fr']; - var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, + fr = $.datepicker.regional.fr; + settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; equalsDate($.datepicker.parseDate('D d M y', 'Lun. 9 Avril 01', settings), new Date(2001, 4 - 1, 9), 'Parse date D M y with settings'); @@ -825,14 +816,15 @@ test('parseDate', function() { 'jour 9 de Avril (\'Lundi\'), 2001', settings), new Date(2001, 4 - 1, 9), 'Parse date \'jour\' d \'de\' MM (\'\'DD\'\'), yy with settings'); - var zh = $.datepicker.regional['zh-CN']; + zh = $.datepicker.regional['zh-CN']; equalsDate($.datepicker.parseDate('yy M d', '2011 十一 22', zh), new Date(2011, 11 - 1, 22), 'Parse date yy M d with zh-CN'); }); test('parseDateErrors', function() { init('#inp'); - var expectError = function(expr, value, error) { + var fr, settings; + function expectError(expr, value, error) { try { expr(); ok(false, 'Parsed error ' + value); @@ -840,7 +832,7 @@ test('parseDateErrors', function() { catch (e) { equal(e, error, 'Parsed error ' + value); } - }; + } expectError(function() { $.datepicker.parseDate(null, 'Sat 2 01'); }, 'Sat 2 01', 'Invalid arguments'); expectError(function() { $.datepicker.parseDate('d m y', null); }, @@ -872,8 +864,8 @@ test('parseDateErrors', function() { 'day 3 of Mon2 ("Day7"), 2001', 'Unexpected literal at position 19'); expectError(function() { $.datepicker.parseDate('d m y', '29 2 01'); }, '29 2 01 - d m y', 'Invalid date'); - var fr = $.datepicker.regional['fr']; - var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, + fr = $.datepicker.regional.fr; + settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; expectError(function() { $.datepicker.parseDate('D d M y', 'Mon 9 Avr 01', settings); }, 'Mon 9 Avr 01 - D d M y', 'Unknown name at position 0'); @@ -883,6 +875,7 @@ test('parseDateErrors', function() { test('formatDate', function() { init('#inp'); + var gmtDate, fr, settings; equal($.datepicker.formatDate('d m y', new Date(2001, 2 - 1, 3)), '3 2 01', 'Format date d m y'); equal($.datepicker.formatDate('dd mm yy', new Date(2001, 2 - 1, 3)), @@ -904,12 +897,12 @@ test('formatDate', function() { equal($.datepicker.formatDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy', new Date(2001, 2 - 1, 3)), 'day 3 of February (\'Saturday\'), 2001', 'Format date \'day\' d \'of\' MM (\'\'DD\'\'), yy'); - var gmtDate = new Date(2001, 2 - 1, 3); + gmtDate = new Date(2001, 2 - 1, 3); gmtDate.setMinutes(gmtDate.getMinutes() - gmtDate.getTimezoneOffset()); equal($.datepicker.formatDate('@', gmtDate), '981158400000', 'Format date @'); equal($.datepicker.formatDate('!', gmtDate), '631167552000000000', 'Format date !'); - var fr = $.datepicker.regional['fr']; - var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, + fr = $.datepicker.regional.fr; + settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; equal($.datepicker.formatDate('D M y', new Date(2001, 4 - 1, 9), settings), 'Lun. Avril 01', 'Format date D M y with settings'); diff --git a/tests/unit/datepicker/datepicker_tickets.js b/tests/unit/datepicker/datepicker_tickets.js index fcf712370..105be63a6 100644 --- a/tests/unit/datepicker/datepicker_tickets.js +++ b/tests/unit/datepicker/datepicker_tickets.js @@ -7,8 +7,8 @@ module("datepicker: tickets"); // http://forum.jquery.com/topic/several-breaking-changes-in-jquery-ui-1-8rc1 test('beforeShowDay-getDate', function() { - var inp = init('#inp', {beforeShowDay: function(date) { inp.datepicker('getDate'); return [true, '']; }}); - var dp = $('#ui-datepicker-div'); + var inp = init('#inp', {beforeShowDay: function(date) { inp.datepicker('getDate'); return [true, '']; }}), + dp = $('#ui-datepicker-div'); inp.val('01/01/2010').datepicker('show'); // contains non-breaking space equal($('div.ui-datepicker-title').text(), 'January 2010', 'Initial month'); @@ -26,11 +26,11 @@ test('beforeShowDay-getDate', function() { test('Ticket 7602: Stop datepicker from appearing with beforeShow event handler', function(){ var inp = init('#inp',{ - beforeShow: function(){ - return false; - } - }); - var dp = $('#ui-datepicker-div'); + beforeShow: function(){ + return false; + } + }), + dp = $('#ui-datepicker-div'); inp.datepicker('show'); equal(dp.css('display'), 'none',"beforeShow returns false"); inp.datepicker('destroy'); diff --git a/tests/unit/dialog/dialog_core.js b/tests/unit/dialog/dialog_core.js index 4a671968e..5d7beb99b 100644 --- a/tests/unit/dialog/dialog_core.js +++ b/tests/unit/dialog/dialog_core.js @@ -40,8 +40,8 @@ function drag(handle, dx, dy) { function moved(dx, dy, msg) { msg = msg ? msg + "." : ""; - var actual = { left: Math.round(offsetAfter.left), top: Math.round(offsetAfter.top) }; - var expected = { left: Math.round(offsetBefore.left + dx), top: Math.round(offsetBefore.top + dy) }; + var actual = { left: Math.round(offsetAfter.left), top: Math.round(offsetAfter.top) }, + expected = { left: Math.round(offsetBefore.left + dx), top: Math.round(offsetBefore.top + dy) }; deepEqual(actual, expected, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] ' + msg); } @@ -59,8 +59,8 @@ function shouldnotmove(why) { function resized(dw, dh, msg) { msg = msg ? msg + "." : ""; - var actual = { width: widthAfter, height: heightAfter }; - var expected = { width: widthBefore + dw, height: heightBefore + dh }; + var actual = { width: widthAfter, height: heightAfter }, + expected = { width: widthBefore + dw, height: heightBefore + dh }; deepEqual(actual, expected, 'resized[' + dragged.dx + ', ' + dragged.dy + '] ' + msg); } diff --git a/tests/unit/dialog/dialog_defaults.js b/tests/unit/dialog/dialog_defaults.js index 9f2e4c6a8..623908da7 100644 --- a/tests/unit/dialog/dialog_defaults.js +++ b/tests/unit/dialog/dialog_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "dialog", { +TestHelpers.commonWidgetTests( "dialog", { defaults: { autoOpen: true, buttons: {}, diff --git a/tests/unit/dialog/dialog_events.js b/tests/unit/dialog/dialog_events.js index 4b769bafc..85afa5a3b 100644 --- a/tests/unit/dialog/dialog_events.js +++ b/tests/unit/dialog/dialog_events.js @@ -63,7 +63,8 @@ test("dragStart", function() { test("drag", function() { expect(9); - var hasDragged = false; + var handle, + hasDragged = false; el = $('<div></div>').dialog({ drag: function(ev, ui) { @@ -83,7 +84,7 @@ test("drag", function() { ok(ui.position !== undefined, "ui.position in callback"); ok(ui.offset !== undefined, "ui.offset in callback"); }); - var handle = $(".ui-dialog-titlebar", dlg()); + handle = $(".ui-dialog-titlebar", dlg()); drag(handle, 50, 50); el.remove(); }); @@ -138,7 +139,8 @@ test("resizeStart", function() { test("resize", function() { expect(13); - var hasResized = false; + var handle, + hasResized = false; el = $('<div></div>').dialog({ resize: function(ev, ui) { @@ -162,7 +164,7 @@ test("resize", function() { ok(ui.position !== undefined, "ui.position in callback"); ok(ui.size !== undefined, "ui.size in callback"); }); - var handle = $(".ui-resizable-se", dlg()); + handle = $(".ui-resizable-se", dlg()); drag(handle, 50, 50); el.remove(); }); diff --git a/tests/unit/dialog/dialog_methods.js b/tests/unit/dialog/dialog_methods.js index 645baa9f5..1f84cd6b5 100644 --- a/tests/unit/dialog/dialog_methods.js +++ b/tests/unit/dialog/dialog_methods.js @@ -98,14 +98,17 @@ test("isOpen", function() { }); test("moveToTop", function() { - var expected = $('<div></div>').dialog(), + var d1, d2, dlg1, dlg2, + expected = $('<div></div>').dialog(), actual = expected.dialog('moveToTop'); equal(actual, expected, 'moveToTop is chainable'); - var d1 = $('<div></div>').dialog(), dlg1 = d1.parents('.ui-dialog'); + d1 = $('<div></div>').dialog(); + dlg1 = d1.parents('.ui-dialog'); d1.dialog('close'); d1.dialog('open'); - var d2 = $('<div></div>').dialog(), dlg2 = d2.parents('.ui-dialog'); + d2 = $('<div></div>').dialog(); + dlg2 = d2.parents('.ui-dialog'); d2.dialog('close'); d2.dialog('open'); ok(dlg1.css('zIndex') < dlg2.css('zIndex'), 'dialog 1 under dialog 2 before moveToTop method called'); diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 10443892b..c071c1b09 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -20,7 +20,8 @@ test("autoOpen", function() { test("buttons", function() { expect(21); - var buttons = { + var btn, i, newButtons, + buttons = { "Ok": function(ev, ui) { ok(true, "button click fires callback"); equal(this, el[0], "context of callback"); @@ -34,10 +35,10 @@ test("buttons", function() { }; el = $('<div></div>').dialog({ buttons: buttons }); - var btn = $("button", dlg()); + btn = $("button", dlg()); equal(btn.length, 2, "number of buttons"); - var i = 0; + i = 0; $.each(buttons, function(key, val) { equal(btn.eq(i).text(), key, "text of button " + (i+1)); i++; @@ -48,7 +49,7 @@ test("buttons", function() { btn.trigger("click"); - var newButtons = { + newButtons = { "Close": function(ev, ui) { ok(true, "button click fires callback"); equal(this, el[0], "context of callback"); @@ -275,54 +276,54 @@ test("minWidth", function() { }); test("position, default center on window", function() { - var el = $('<div></div>').dialog(); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog(), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, Math.round($(window).width() / 2 - dialog.outerWidth() / 2) + $(window).scrollLeft()); deepEqual(offset.top, Math.round($(window).height() / 2 - dialog.outerHeight() / 2) + $(window).scrollTop()); el.remove(); }); test("position, top on window", function() { - var el = $('<div></div>').dialog({ position: "top" }); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog({ position: "top" }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, Math.round($(window).width() / 2 - dialog.outerWidth() / 2) + $(window).scrollLeft()); deepEqual(offset.top, $(window).scrollTop()); el.remove(); }); test("position, left on window", function() { - var el = $('<div></div>').dialog({ position: "left" }); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog({ position: "left" }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, 0); deepEqual(offset.top, Math.round($(window).height() / 2 - dialog.outerHeight() / 2) + $(window).scrollTop()); el.remove(); }); test("position, right bottom on window", function() { - var el = $('<div></div>').dialog({ position: "right bottom" }); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog({ position: "right bottom" }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, $(window).width() - dialog.outerWidth() + $(window).scrollLeft()); deepEqual(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop()); el.remove(); }); test("position, right bottom on window w/array", function() { - var el = $('<div></div>').dialog({ position: ["right", "bottom"] }); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog({ position: ["right", "bottom"] }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, $(window).width() - dialog.outerWidth() + $(window).scrollLeft()); deepEqual(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop()); el.remove(); }); test("position, offset from top left w/array", function() { - var el = $('<div></div>').dialog({ position: [10, 10] }); - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + var el = $('<div></div>').dialog({ position: [10, 10] }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, 10 + $(window).scrollLeft()); deepEqual(offset.top, 10 + $(window).scrollTop()); el.remove(); @@ -330,14 +331,13 @@ test("position, offset from top left w/array", function() { test("position, right bottom at right bottom via ui.position args", function() { var el = $('<div></div>').dialog({ - position: { - my: "right bottom", - at: "right bottom" - } - }); - - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + position: { + my: "right bottom", + at: "right bottom" + } + }), + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, $(window).width() - dialog.outerWidth() + $(window).scrollLeft()); deepEqual(offset.top, $(window).height() - dialog.outerHeight() + $(window).scrollTop()); @@ -346,23 +346,23 @@ test("position, right bottom at right bottom via ui.position args", function() { test("position, at another element", function() { var parent = $('<div></div>').css({ - position: 'absolute', - top: 400, - left: 600, - height: 10, - width: 10 - }).appendTo('body'); - - var el = $('<div></div>').dialog({ - position: { - my: "left top", - at: "left top", - of: parent - } - }); + position: 'absolute', + top: 400, + left: 600, + height: 10, + width: 10 + }).appendTo('body'), + + el = $('<div></div>').dialog({ + position: { + my: "left top", + at: "left top", + of: parent + } + }), - var dialog = el.dialog('widget'); - var offset = dialog.offset(); + dialog = el.dialog('widget'), + offset = dialog.offset(); deepEqual(offset.left, 600); deepEqual(offset.top, 400); @@ -373,7 +373,7 @@ test("position, at another element", function() { of: parent }); - var offset = dialog.offset(); + offset = dialog.offset(); deepEqual(offset.left, 610); deepEqual(offset.top, 410); diff --git a/tests/unit/dialog/dialog_tickets.js b/tests/unit/dialog/dialog_tickets.js index bd9056153..a169bd1a5 100644 --- a/tests/unit/dialog/dialog_tickets.js +++ b/tests/unit/dialog/dialog_tickets.js @@ -12,12 +12,6 @@ asyncTest( "#3123: Prevent tabbing out of modal dialogs", function() { inputs = el.find( "input" ), widget = el.dialog( "widget" ); - inputs.eq( 1 ).focus(); - equal( document.activeElement, inputs[1], "Focus set on second input" ); - inputs.eq( 1 ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB }); - - setTimeout( checkTab, 2 ); - function checkTab() { ok( $.contains( widget, document.activeElement ), "Tab key event moved focus within the modal" ); @@ -32,14 +26,21 @@ asyncTest( "#3123: Prevent tabbing out of modal dialogs", function() { el.remove(); start(); } + + inputs.eq( 1 ).focus(); + equal( document.activeElement, inputs[1], "Focus set on second input" ); + inputs.eq( 1 ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB }); + + setTimeout( checkTab, 2 ); }); test("#4826: setting resizable false toggles resizable on dialog", function() { expect(6); + var i; el = $('<div></div>').dialog({ resizable: false }); shouldnotresize("[default]"); - for (var i=0; i<2; i++) { + for (i=0; i<2; i++) { el.dialog('close').dialog('open'); shouldnotresize('initialized with resizable false toggle ('+ (i+1) +')'); } @@ -47,7 +48,7 @@ test("#4826: setting resizable false toggles resizable on dialog", function() { el = $('<div></div>').dialog({ resizable: true }); shouldresize("[default]"); - for (var i=0; i<2; i++) { + for (i=0; i<2; i++) { el.dialog('close').dialog('option', 'resizable', false).dialog('open'); shouldnotresize('set option resizable false toggle ('+ (i+1) +')'); } @@ -108,7 +109,7 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() { test("#6645: Missing element not found check in overlay", function(){ expect(2); d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true}); - d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove()}}); + d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove(); }}); equal($.ui.dialog.overlay.instances.length, 2, 'two overlays created'); d2.dialog('close'); equal($.ui.dialog.overlay.instances.length, 1, 'one overlay remains after closing the 2nd overlay'); @@ -119,7 +120,7 @@ test("#6966: Escape key closes all dialogs, not the top one", function(){ expect(8); // test with close function removing dialog d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true}); - d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove()}}); + d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove(); }}); ok(d1.dialog("isOpen"), 'first dialog is open'); ok(d2.dialog("isOpen"), 'second dialog is open'); d2.simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE}); diff --git a/tests/unit/draggable/draggable_core.js b/tests/unit/draggable/draggable_core.js index ba5bc4c66..9193881ad 100644 --- a/tests/unit/draggable/draggable_core.js +++ b/tests/unit/draggable/draggable_core.js @@ -4,7 +4,7 @@ var el, offsetBefore, offsetAfter, dragged; -var drag = function(handle, dx, dy) { +function drag(handle, dx, dy) { var element = el.data("draggable").element; offsetBefore = el.offset(); $(handle).simulate("drag", { @@ -15,10 +15,10 @@ var drag = function(handle, dx, dy) { offsetAfter = el.offset(); } -var moved = function (dx, dy, msg) { +function moved(dx, dy, msg) { msg = msg ? msg + "." : ""; - var actual = { left: offsetAfter.left, top: offsetAfter.top }; - var expected = { left: offsetBefore.left + dx, top: offsetBefore.top + dy }; + var actual = { left: offsetAfter.left, top: offsetAfter.top }, + expected = { left: offsetBefore.left + dx, top: offsetBefore.top + dy }; deepEqual(actual, expected, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] ' + msg); } @@ -35,15 +35,15 @@ function restoreScroll(what) { module("draggable"); test("element types", function() { - var typeNames = ('p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form' - + ',table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr' - + ',acronym,code,samp,kbd,var,img,object,hr' - + ',input,button,label,select,iframe').split(','); + var typeNames = ('p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form' + + ',table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr' + + ',acronym,code,samp,kbd,var,img,object,hr' + + ',input,button,label,select,iframe').split(','); $.each(typeNames, function(i) { var typeName = typeNames[i]; el = $(document.createElement(typeName)).appendTo('body'); - (typeName == 'table' && el.append("<tr><td>content</td></tr>")); + (typeName === 'table' && el.append("<tr><td>content</td></tr>")); el.draggable({ cancel: '' }); drag(el, 50, 50); moved(50, 50, "<" + typeName + ">"); diff --git a/tests/unit/draggable/draggable_defaults.js b/tests/unit/draggable/draggable_defaults.js index 4b0aaca19..b47b139cd 100644 --- a/tests/unit/draggable/draggable_defaults.js +++ b/tests/unit/draggable/draggable_defaults.js @@ -1,36 +1,32 @@ -/* - * draggable_defaults.js - */ - -var draggable_defaults = { - addClasses: true, - appendTo: "parent", - axis: false, - cancel: ":input,option", - connectToSortable: false, - containment: false, - cursor: "auto", - cursorAt: false, - delay: 0, - disabled: false, - distance: 1, - grid: false, - handle: false, - helper: "original", - iframeFix: false, - opacity: false, - refreshPositions: false, - revert: false, - revertDuration: 500, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - snap: false, - snapMode: "both", - snapTolerance: 20, - stack: false, - zIndex: false -}; - -commonWidgetTests('draggable', { defaults: draggable_defaults }); +TestHelpers.commonWidgetTests( "draggable", { + defaults: { + addClasses: true, + appendTo: "parent", + axis: false, + cancel: ":input,option", + connectToSortable: false, + containment: false, + cursor: "auto", + cursorAt: false, + delay: 0, + disabled: false, + distance: 1, + grid: false, + handle: false, + helper: "original", + iframeFix: false, + opacity: false, + refreshPositions: false, + revert: false, + revertDuration: 500, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + snap: false, + snapMode: "both", + snapTolerance: 20, + stack: false, + zIndex: false + } +}); diff --git a/tests/unit/draggable/draggable_options.js b/tests/unit/draggable/draggable_options.js index d5f85feab..464e025dd 100644 --- a/tests/unit/draggable/draggable_options.js +++ b/tests/unit/draggable/draggable_options.js @@ -17,15 +17,16 @@ function setScroll(what) { } } -var border = function(el, side) { return parseInt(el.css('border-' + side + '-width')); } - -var margin = function(el, side) { return parseInt(el.css('margin-' + side)); } +function border(el, side) { + return parseInt(el.css('border-' + side + '-width'), 10); +} +function margin(el, side) { + return parseInt(el.css('margin-' + side), 10); +} module("draggable: options"); test("{ addClasses: true }, default", function() { - equal(draggable_defaults.addClasses, true); - el = $("<div></div>").draggable({ addClasses: true }); ok(el.is(".ui-draggable"), "'ui-draggable' class added"); @@ -40,8 +41,6 @@ test("{ addClasses: false }", function() { }); test("{ appendTo: 'parent' }, default", function() { - equal(draggable_defaults.appendTo, "parent"); - el = $("#draggable2").draggable({ appendTo: 'parent' }); drag(el, 50, 50); moved(50, 50); @@ -73,8 +72,6 @@ test("{ appendTo: Selector }", function() { }); test("{ axis: false }, default", function() { - equal(draggable_defaults.axis, false); - el = $("#draggable2").draggable({ axis: false }); drag(el, 50, 50); moved(50, 50); @@ -106,12 +103,10 @@ test("{ axis: ? }, unexpected", function() { drag(el, 50, 50); moved(50, 50, "axis: " + key); el.draggable("destroy"); - }) + }); }); test("{ cancel: ':input,option' }, default", function() { - equal(draggable_defaults.cancel, ":input,option"); - $('<div id="draggable-option-cancel-default"><input type="text"></div>').appendTo('#main'); el = $("#draggable-option-cancel-default").draggable({ cancel: ":input,option" }); @@ -155,12 +150,10 @@ test("{ cancel: ? }, unexpected", function() { var expected = [50, 50]; moved(expected[0], expected[1], "cancel: " + key); el.draggable("destroy"); - }) + }); }); test("{ containment: false }, default", function() { - equal(draggable_defaults.containment, false); - ok(false, 'missing test - untested code is broken code'); }); @@ -170,23 +163,25 @@ test("{ containment: Element }", function() { test("{ containment: 'parent' }, relative", function() { el = $("#draggable1").draggable({ containment: 'parent' }); - var p = el.parent(), po = p.offset(); + var p = el.parent(), + po = p.offset(), + expected = { + left: po.left + border(p, 'left') + margin(el, 'left'), + top: po.top + border(p, 'top') + margin(el, 'top') + }; drag(el, -100, -100); - var expected = { - left: po.left + border(p, 'left') + margin(el, 'left'), - top: po.top + border(p, 'top') + margin(el, 'top') - } deepEqual(offsetAfter, expected, 'compare offset to parent'); }); test("{ containment: 'parent' }, absolute", function() { el = $("#draggable2").draggable({ containment: 'parent' }); - var p = el.parent(), po = p.offset(); + var p = el.parent(), + po = p.offset(), + expected = { + left: po.left + border(p, 'left') + margin(el, 'left'), + top: po.top + border(p, 'top') + margin(el, 'top') + }; drag(el, -100, -100); - var expected = { - left: po.left + border(p, 'left') + margin(el, 'left'), - top: po.top + border(p, 'top') + margin(el, 'top') - } deepEqual(offsetAfter, expected, 'compare offset to parent'); }); @@ -207,11 +202,9 @@ test("{ containment: [x1, y1, x2, y2] }", function() { }); test("{ cursor: 'auto' }, default", function() { - equal(draggable_defaults.cursor, 'auto'); - function getCursor() { return $("#draggable2").css("cursor"); } - expect(3); + expect(2); var expected = "auto", actual, before, after; @@ -256,8 +249,6 @@ test("{ cursor: 'move' }", function() { }); test("{ cursorAt: false}, default", function() { - equal(draggable_defaults.cursorAt, false); - ok(false, 'missing test - untested code is broken code'); }); @@ -611,8 +602,8 @@ test("{ helper: 'original' }, fixed, with scroll offset on root and parent", fun test("{ helper: 'clone' }, absolute", function() { - var helperOffset = null; - var origOffset = $("#draggable1").offset(); + var helperOffset = null, + origOffset = $("#draggable1").offset(); el = $("#draggable1").draggable({ helper: "clone", drag: function(event, ui) { helperOffset = ui.helper.offset(); @@ -626,8 +617,8 @@ test("{ helper: 'clone' }, absolute", function() { test("{ helper: 'clone' }, absolute with scroll offset on parent", function() { setScroll(); - var helperOffset = null; - var origOffset = null; + var helperOffset = null, + origOffset = null; el = $("#draggable1").draggable({ helper: "clone", drag: function(event, ui) { helperOffset = ui.helper.offset(); @@ -655,8 +646,8 @@ test("{ helper: 'clone' }, absolute with scroll offset on parent", function() { test("{ helper: 'clone' }, absolute with scroll offset on root", function() { setScroll('root'); - var helperOffset = null; - var origOffset = null; + var helperOffset = null, + origOffset = null; el = $("#draggable1").draggable({ helper: "clone", drag: function(event, ui) { helperOffset = ui.helper.offset(); @@ -685,25 +676,25 @@ test("{ helper: 'clone' }, absolute with scroll offset on root and parent", func setScroll('root'); setScroll(); - var helperOffset = null; - var origOffset = null; + var helperOffset = null, + origOffset = null; el = $("#draggable1").draggable({ helper: "clone", drag: function(event, ui) { helperOffset = ui.helper.offset(); } }); $("#main").css('position', 'relative'); - origOffset = $("#draggable1").offset() + origOffset = $("#draggable1").offset(); drag(el, 1, 1); deepEqual({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); $("#main").css('position', 'static'); - origOffset = $("#draggable1").offset() + origOffset = $("#draggable1").offset(); drag(el, 1, 1); deepEqual({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); $("#main").css('position', 'absolute'); - origOffset = $("#draggable1").offset() + origOffset = $("#draggable1").offset(); drag(el, 1, 1); deepEqual({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); @@ -734,9 +725,9 @@ test("{ zIndex: 10 }", function() { expect(1); - var expected = 10, actual; - - var zIndex = null; + var actual, + expected = 10, + zIndex = null; el = $("#draggable2").draggable({ zIndex: expected, start: function(event, ui) { diff --git a/tests/unit/droppable/droppable_core.js b/tests/unit/droppable/droppable_core.js index 4d82017b9..3f709d25d 100644 --- a/tests/unit/droppable/droppable_core.js +++ b/tests/unit/droppable/droppable_core.js @@ -17,15 +17,15 @@ function shouldNotBeDroppable() { module("droppable: core"); test("element types", function() { - var typeNames = ('p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form' - + ',table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr' - + ',acronym,code,samp,kbd,var,img,object,hr' - + ',input,button,label,select,iframe').split(','); + var typeNames = ('p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form' + + ',table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr' + + ',acronym,code,samp,kbd,var,img,object,hr' + + ',input,button,label,select,iframe').split(','); $.each(typeNames, function(i) { var typeName = typeNames[i]; el = $(document.createElement(typeName)).appendTo('body'); - (typeName == 'table' && el.append("<tr><td>content</td></tr>")); + (typeName === 'table' && el.append("<tr><td>content</td></tr>")); el.droppable(); shouldBeDroppable(); el.droppable("destroy"); diff --git a/tests/unit/droppable/droppable_defaults.js b/tests/unit/droppable/droppable_defaults.js index 7584f5ec8..985dba06d 100644 --- a/tests/unit/droppable/droppable_defaults.js +++ b/tests/unit/droppable/droppable_defaults.js @@ -1,16 +1,12 @@ -/* - * droppable_defaults.js - */ - -var droppable_defaults = { - accept: '*', - activeClass: false, - addClasses: true, - disabled: false, - greedy: false, - hoverClass: false, - scope: "default", - tolerance: "intersect" -}; - -commonWidgetTests('droppable', { defaults: droppable_defaults }); +TestHelpers.commonWidgetTests( "droppable", { + defaults: { + accept: "*", + activeClass: false, + addClasses: true, + disabled: false, + greedy: false, + hoverClass: false, + scope: "default", + tolerance: "intersect" + } +}); diff --git a/tests/unit/droppable/droppable_options.js b/tests/unit/droppable/droppable_options.js index 4df2d9ecb..19295778b 100644 --- a/tests/unit/droppable/droppable_options.js +++ b/tests/unit/droppable/droppable_options.js @@ -6,8 +6,6 @@ module("droppable: options"); test("{ accept '*' }, default ", function() { - equal(droppable_defaults.accept, '*'); - ok(false, 'missing test - untested code is broken code'); }); @@ -24,8 +22,6 @@ test("activeClass", function() { }); test("{ addClasses: true }, default", function() { - equal(droppable_defaults.addClasses, true); - el = $("<div></div>").droppable({ addClasses: true }); ok(el.is(".ui-droppable"), "'ui-droppable' class added"); el.droppable("destroy"); diff --git a/tests/unit/effects/effects_core.js b/tests/unit/effects/effects_core.js index aca4c4694..93c7da114 100644 --- a/tests/unit/effects/effects_core.js +++ b/tests/unit/effects/effects_core.js @@ -99,7 +99,7 @@ asyncTest( "animateClass clears style properties when stopped", function() { var test = $("div.animateClass"), style = test[0].style, orig = style.cssText; - + expect( 2 ); test.addClass( "testChangeBackground", duration ); @@ -113,17 +113,17 @@ asyncTest( "animateClass clears style properties when stopped", function() { asyncTest( "animateClass: css and class changes during animation are not lost (#7106)", function() { var test = $( "div.ticket7106" ); - // add a class and change a style property after starting an animated class - test.addClass( "animate", minDuration, animationComplete ) - .addClass( "testClass" ) - .height( 100 ); - // ensure the class stays and that the css property stays function animationComplete() { ok( test.hasClass( "testClass" ), "class change during animateClass was not lost" ); equal( test.height(), 100, "css change during animateClass was not lost" ); start(); } + + // add a class and change a style property after starting an animated class + test.addClass( "animate", minDuration, animationComplete ) + .addClass( "testClass" ) + .height( 100 ); }); @@ -133,10 +133,9 @@ $.each( $.effects.effect, function( effect ) { } module( "effect."+effect ); asyncTest( "show/hide", function() { - var hidden = $( "div.hidden" ); expect( 8 ); - - var count = 0, + var hidden = $( "div.hidden" ), + count = 0, test = 0; function queueTest( fn ) { diff --git a/tests/unit/effects/effects_scale.js b/tests/unit/effects/effects_scale.js index b9bb91c2e..df61d9e91 100644 --- a/tests/unit/effects/effects_scale.js +++ b/tests/unit/effects/effects_scale.js @@ -4,6 +4,11 @@ module( "effect.scale: Scale" ); function run( position, v, h, vo, ho ) { var desc = "End Position Correct: " + position + " (" + v + "," + h + ") - origin: (" + vo + "," + ho + ")"; asyncTest( desc, function() { + function complete() { + equal( parseInt( test.css( h ), 10 ), target[ h ], "Horizontal Position Correct " + desc ); + equal( parseInt( test.css( v ), 10 ), target[ v ], "Vertical Position Correct " + desc ); + start(); + } var test = $( ".testScale" ), css = { position: position @@ -21,22 +26,16 @@ function run( position, v, h, vo, ho ) { css[ h ] = 33; css[ v ] = 33; - target[ h ] = h === ho ? css[ h ] : ho == "center" ? css[ h ] - 35 : css[ h ] - 70; - target[ v ] = v === vo ? css[ v ] : vo == "middle" ? css[ v ] - 35 : css[ v ] - 70; - if ( relative && h == "right" ) { + target[ h ] = h === ho ? css[ h ] : ho === "center" ? css[ h ] - 35 : css[ h ] - 70; + target[ v ] = v === vo ? css[ v ] : vo === "middle" ? css[ v ] - 35 : css[ v ] - 70; + if ( relative && h === "right" ) { target[ h ] += 70; } - if ( relative && v == "bottom" ) { + if ( relative && v === "bottom" ) { target[ v ] += 70; } test.css( css ); test.effect( effect ); - - function complete() { - equal( parseInt( test.css( h ), 10 ), target[ h ], "Horizontal Position Correct " + desc ); - equal( parseInt( test.css( v ), 10 ), target[ v ], "Vertical Position Correct " + desc ); - start(); - } }); } diff --git a/tests/unit/menu/menu.html b/tests/unit/menu/menu.html index 76f4a7a31..9a598ec8d 100644 --- a/tests/unit/menu/menu.html +++ b/tests/unit/menu/menu.html @@ -251,6 +251,22 @@ </blockquote> </div> +<ul id="menu6"> + <li class="foo"><a class="foo" href="#">Aberdeen</a></li> + <li class="foo ui-state-disabled"><a class="foo" href="#">Ada</a></li> + <li class="foo"><a class="foo" href="#">Adamsville</a></li> + <li class="foo"><a class="foo" href="#">Addyston</a></li> + <li class="ui-state-disabled"> + <a href="#">Delphi</a> + <ul> + <li class="foo"><a class="foo" href="#">Ada</a></li> + <li class="foo"><a class="foo" href="#">Saarland</a></li> + <li class="foo"><a class="foo" href="#">Salzburg</a></li> + </ul> + </li> + <li class="foo"><a class="foo" href="#">Saarland</a></li> +</ul> + <div id="log"></div> </div> diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js index 02e3be3be..f2de7ef1a 100644 --- a/tests/unit/menu/menu_core.js +++ b/tests/unit/menu/menu_core.js @@ -9,18 +9,19 @@ module("menu: core"); test("accessibility", function () { expect(5); - var menu = $('#menu1').menu(); - var item0 = $("li:eq(0) a"); + var item, + menu = $('#menu1').menu(), + item0 = $("li:eq(0) a"); ok( menu.hasClass("ui-menu ui-widget ui-widget-content ui-corner-all"), "menu class"); equal( menu.attr("role"), "menu", "main role"); ok( !menu.attr("aria-activedescendant"), "aria attribute not yet active"); - var item = menu.find( "li:first" ).find( "a" ).attr( "id", "xid" ).end(); + item = menu.find( "li:first" ).find( "a" ).attr( "id", "xid" ).end(); menu.menu( "focus", $.Event(), item ); equal( menu.attr("aria-activedescendant"), "xid", "aria attribute, id from dom"); - var item = menu.find( "li:last" ); + item = menu.find( "li:last" ); menu.menu( "focus", $.Event(), item ); equal( menu.attr("aria-activedescendant"), "menu1-4", "aria attribute, generated id"); }); diff --git a/tests/unit/menu/menu_defaults.js b/tests/unit/menu/menu_defaults.js index 018ac8ccf..ddcdbebf2 100644 --- a/tests/unit/menu/menu_defaults.js +++ b/tests/unit/menu/menu_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "menu", { +TestHelpers.commonWidgetTests( "menu", { defaults: { disabled: false, menus: "ul", diff --git a/tests/unit/menu/menu_events.js b/tests/unit/menu/menu_events.js index bee6fcfa6..4cb083240 100644 --- a/tests/unit/menu/menu_events.js +++ b/tests/unit/menu/menu_events.js @@ -3,21 +3,24 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: events"); test("handle click on menu", function() { expect(1); var menu = $('#menu1').menu({ select: function(event, ui) { - menu_log(); + log(); } }); - menu_log("click",true); - menu_click($('#menu1'),"1"); - menu_log("afterclick"); - menu_click( menu,"2"); - menu_click($('#menu1'),"3"); - menu_click( menu,"1"); + log("click",true); + click($('#menu1'),"1"); + log("afterclick"); + click( menu,"2"); + click($('#menu1'),"3"); + click( menu,"1"); equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid."); }); @@ -25,16 +28,16 @@ test("handle click on custom item menu", function() { expect(1); var menu = $('#menu5').menu({ select: function(event, ui) { - menu_log(); + log(); }, menus: "div" }); - menu_log("click",true); - menu_click($('#menu5'),"1"); - menu_log("afterclick"); - menu_click( menu,"2"); - menu_click($('#menu5'),"3"); - menu_click( menu,"1"); + log("click",true); + click($('#menu5'),"1"); + log("afterclick"); + click( menu,"2"); + click($('#menu5'),"3"); + click( menu,"1"); equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid."); }); @@ -75,7 +78,7 @@ test( "handle blur on custom item menu: click", function() { items: "div" }); - menu_click($('#menu5'),"1"); + click($('#menu5'),"1"); $( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" ); $("#remove").remove(); @@ -84,14 +87,12 @@ test( "handle blur on custom item menu: click", function() { asyncTest( "handle submenu auto collapse: mouseleave", function() { expect( 4 ); - var $menu = $( "#menu2" ).menu(); - - $menu.find( "li:nth-child(7)" ).trigger( "mouseover" ); - setTimeout( menumouseleave1, 350 ); + var $menu = $( "#menu2" ).menu(), + event = $.Event( "mouseenter" ); function menumouseleave1() { equal( $menu.find( "ul[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - $menu.find( "li:nth-child(7) li:first" ).trigger( "mouseover" ); + $menu.menu( "focus", event, $menu.find( "li:nth-child(7) li:first" ) ); setTimeout( menumouseleave2, 350 ); } function menumouseleave2() { @@ -108,18 +109,19 @@ asyncTest( "handle submenu auto collapse: mouseleave", function() { equal( $menu.find( "ul[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); start(); } + + $menu.find( "li:nth-child(7)" ).trigger( "mouseenter" ); + setTimeout( menumouseleave1, 350 ); }); asyncTest( "handle submenu auto collapse: mouseleave", function() { expect( 4 ); - var $menu = $( "#menu5" ).menu( { menus: "div" } ); - - $menu.find( ":nth-child(7)" ).trigger( "mouseover" ); - setTimeout( menumouseleave1, 350 ); + var $menu = $( "#menu5" ).menu( { menus: "div" } ), + event = $.Event( "mouseenter" ); function menumouseleave1() { equal( $menu.find( "div[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - $menu.find( ":nth-child(7)" ).find( "div" ).eq( 0 ).children().eq( 0 ).trigger( "mouseover" ); + $menu.menu( "focus", event, $menu.find( ":nth-child(7)" ).find( "div" ).eq( 0 ).children().eq( 0 ) ); setTimeout( menumouseleave2, 350 ); } function menumouseleave2() { @@ -136,6 +138,10 @@ asyncTest( "handle submenu auto collapse: mouseleave", function() { equal( $menu.find( "div[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); start(); } + + $menu.find( ":nth-child(7)" ).trigger( "mouseenter" ); + setTimeout( menumouseleave1, 350 ); + }); @@ -143,60 +149,60 @@ test("handle keyboard navigation on menu without scroll and without submenus", f expect(12); var element = $('#menu1').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.focus(); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); equal( $("#log").html(), "2,1,0,keydown,", "Keydown DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "4,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "4,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "keydown,", "Keydown ESCAPE (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER"); }); @@ -205,14 +211,14 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", expect(14); var element = $('#menu2').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.one( "menufocus", function( event, ui ) { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -222,16 +228,16 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", element.focus(); function menukeyboard1() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -245,7 +251,7 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", } function menukeyboard2() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "4,keydown,", "Keydown LEFT (close submenu)"); @@ -255,35 +261,35 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", } function menukeyboard3() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "2,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "2,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "4,keydown,", "Keydown ESCAPE (close submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); setTimeout( menukeyboard4, 50 ); } @@ -291,7 +297,7 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", function menukeyboard4() { equal( $("#log").html(), "0,keydown,", "Keydown ENTER (open submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Ada,keydown,", "Keydown ENTER (select item)"); @@ -303,69 +309,69 @@ test("handle keyboard navigation on menu with scroll and without submenus", func expect(14); var element = $('#menu3').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.focus(); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); equal( $("#log").html(), "2,1,0,keydown,", "Keydown DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "20,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "37,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "keydown,", "Keydown ESCAPE (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER"); }); @@ -374,14 +380,14 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu expect(14); var element = $('#menu4').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.one( "menufocus", function( event, ui ) { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -392,16 +398,16 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu function menukeyboard1() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); @@ -412,7 +418,7 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } function menukeyboard2() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "1,keydown,", "Keydown LEFT (close submenu)"); @@ -422,35 +428,35 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } function menukeyboard3() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "20,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "27,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "1,keydown,", "Keydown ESCAPE (close submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); setTimeout( menukeyboard4, 50 ); } @@ -458,7 +464,7 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu function menukeyboard4() { equal( $("#log").html(), "0,keydown,", "Keydown ENTER (open submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER (select item)"); @@ -466,4 +472,56 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } }); +asyncTest("handle keyboard navigation and mouse click on menu with disabled items", function() { + expect(6); + var element = $('#menu6').menu({ + select: function(event, ui) { + log($(ui.item[0]).text()); + }, + focus: function( event, ui ) { + log($(event.target).find(".ui-state-focus").parent().index()); + } + }); + + log("keydown",true); + element.one( "menufocus", function( event, ui ) { + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); + equal( $("#log").html(), "1,keydown,", "Keydown focus but not select disabled item"); + setTimeout( menukeyboard1, 50 ); + }); + element.focus(); + + + function menukeyboard1() { + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + equal( $("#log").html(), "4,3,2,keydown,", "Keydown focus disabled item with submenu"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); + equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); + + setTimeout( function() { + equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect on disabled sub-menu)"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); + + setTimeout( function() { + equal( $("#log").html(), "keydown,", "Keydown ENTER (no effect on disabled sub-menu)"); + log("click",true); + click( element, "1" ); + equal( $("#log").html(), "click,", "Click disabled item (no effect)"); + start(); + }, 50); + }, 50); + } +}); + })(jQuery); diff --git a/tests/unit/menu/menu_methods.js b/tests/unit/menu/menu_methods.js index 200ea4427..6ad7bc134 100644 --- a/tests/unit/menu/menu_methods.js +++ b/tests/unit/menu/menu_methods.js @@ -3,25 +3,28 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: methods"); test( "enable/disable", function() { expect( 3 ); var menu = $( "#menu1" ).menu({ select: function(event, ui) { - menu_log(); + log(); } }); menu.menu("disable"); ok(menu.is(".ui-state-disabled"),"Missing ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); menu.menu("enable"); ok(menu.not(".ui-state-disabled"),"Has ui-state-disabled class"); - menu_log("click"); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click"); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,1,click,afterclick,click,", "Click order not valid."); }); diff --git a/tests/unit/menu/menu_options.js b/tests/unit/menu/menu_options.js index cda52d88d..e651fd2d1 100644 --- a/tests/unit/menu/menu_options.js +++ b/tests/unit/menu/menu_options.js @@ -3,6 +3,9 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: options"); test( "{ disabled: true }", function() { @@ -10,13 +13,13 @@ test( "{ disabled: true }", function() { var menu = $( "#menu1" ).menu({ disabled: true, select: function(event, ui) { - menu_log(); + log(); } }); ok(menu.is(".ui-state-disabled"),"Missing ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,click,", "Click order not valid."); }); @@ -25,13 +28,13 @@ test( "{ disabled: false }", function() { var menu = $( "#menu1" ).menu({ disabled: false, select: function(event, ui) { - menu_log(); + log(); } }); ok(menu.not(".ui-state-disabled"),"Has ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,1,click,", "Click order not valid."); }); diff --git a/tests/unit/menu/menu_test_helpers.js b/tests/unit/menu/menu_test_helpers.js index e83795e5a..a576af19a 100644 --- a/tests/unit/menu/menu_test_helpers.js +++ b/tests/unit/menu/menu_test_helpers.js @@ -1,14 +1,16 @@ -function menu_log( message, clear ) { - if ( clear ) { - $( "#log" ).empty(); - } - if ( message === undefined ) { - message = $( "#log" ).data( "lastItem" ); - } - $( "#log" ).prepend( $.trim( message ) + "," ); -} +TestHelpers.menu = { + log: function( message, clear ) { + if ( clear ) { + $( "#log" ).empty(); + } + if ( message === undefined ) { + message = $( "#log" ).data( "lastItem" ); + } + $( "#log" ).prepend( $.trim( message ) + "," ); + }, -function menu_click( menu, item ) { - $( "#log" ).data( "lastItem", item ); - menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); -}
\ No newline at end of file + click: function( menu, item ) { + $( "#log" ).data( "lastItem", item ); + menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); + } +};
\ No newline at end of file diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js index fbcac4b7f..5c86e7887 100644 --- a/tests/unit/position/position_core.js +++ b/tests/unit/position/position_core.js @@ -42,31 +42,32 @@ test( "my, at, of", function() { }); test( "multiple elements", function() { - var elements = $( "#el1, #el2" ); - var result = elements.position({ - my: "left top", - at: "left bottom", - of: "#parent", - collision: "none" - }); + var elements = $( "#el1, #el2" ), + result = elements.position({ + my: "left top", + at: "left bottom", + of: "#parent", + collision: "none" + }), + expected = { top: 10, left: 4 }; deepEqual( result, elements ); - var expected = { top: 10, left: 4 }; elements.each(function() { deepEqual( $( this ).offset(), expected ); }); }); test( "positions", function() { - var definitions = []; - var offsets = { - left: 0, - center: 3, - right: 6, - top: 0, - bottom: 6 - }; - var start = { left: 4, top: 4 }; + var definitions = [], + offsets = { + left: 0, + center: 3, + right: 6, + top: 0, + bottom: 6 + }, + start = { left: 4, top: 4 }, + el = $( "#el1" ); $.each( [ 0, 1 ], function( my ) { $.each( [ "top", "center", "bottom" ], function( vindex, vertical ) { $.each( [ "left", "center", "right" ], function( hindex, horizontal ) { @@ -81,7 +82,6 @@ test( "positions", function() { }); }); }); - var el = $( "#el1" ); $.each( definitions, function( index, definition ) { el.position({ my: definition.my, @@ -445,12 +445,12 @@ test( "addClass: flipped left", function() { deepEqual( elem.hasClass( 'ui-flipped-left' ), false, 'Has ui-flipped-left class' ); - elem.position( { + elem.position({ my: "right center", of: window, collision: "flip", at: "left center" - }) + }); deepEqual( elem.hasClass( 'ui-flipped-left' ), false, 'Removed ui-flipped-left class' ); }); diff --git a/tests/unit/position/position_core_within.js b/tests/unit/position/position_core_within.js index c9670f8ff..042e881eb 100644 --- a/tests/unit/position/position_core_within.js +++ b/tests/unit/position/position_core_within.js @@ -65,32 +65,33 @@ test( "my, at, of", function() { }); test( "multiple elements", function() { - var elements = $( "#el1, #el2" ); - var result = elements.position({ - my: "left top", - at: "left bottom", - of: "#parent", - collision: "none", - within: $("#within-container") - }); + var elements = $( "#el1, #el2" ), + result = elements.position({ + my: "left top", + at: "left bottom", + of: "#parent", + collision: "none", + within: $("#within-container") + }), + expected = { top: addTop + 10, left: addLeft + 4 }; deepEqual( result, elements ); - var expected = { top: addTop + 10, left: addLeft + 4 }; elements.each(function() { deepEqual( $( this ).addOffsets(), expected ); }); }); test( "positions", function() { - var definitions = []; - var offsets = { - left: 0, - center: 3, - right: 6, - top: 0, - bottom: 6 - }; - var start = { left: 4, top: 4 }; + var definitions = [], + offsets = { + left: 0, + center: 3, + right: 6, + top: 0, + bottom: 6 + }, + start = { left: 4, top: 4 }, + el = $( "#el1" ); $.each( [ 0, 1 ], function( my ) { $.each( [ "top", "center", "bottom" ], function( vindex, vertical ) { $.each( [ "left", "center", "right" ], function( hindex, horizontal ) { @@ -105,7 +106,6 @@ test( "positions", function() { }); }); }); - var el = $( "#el1" ); $.each( definitions, function( index, definition ) { el.position({ my: definition.my, @@ -120,7 +120,8 @@ test( "positions", function() { }); test( "of", function() { - var within = $("#within-container"); + var event, + within = $( "#within-container" ); $( "#elx" ).position({ my: "left top", @@ -149,7 +150,7 @@ test( "of", function() { }); deepEqual( $( "#elx" ).addOffsets(), { top: addTop + 40, left: addLeft + 40 }, "DOM element" ); - var event = $.extend( $.Event( "someEvent" ), { pageX: 200, pageY: 300 } ); + event = $.extend( $.Event( "someEvent" ), { pageX: 200, pageY: 300 } ); $( "#elx" ).position({ my: "left top", at: "left top", @@ -219,9 +220,8 @@ test( "within:offsets", function() { test( "using", function() { expect( 6 ); - var within = $("#within-container"); - - var count = 0, + var within = $( "#within-container" ), + count = 0, elems = $( "#el1, #el2" ), expectedPosition = { top: addTop + 40, left: addLeft + 40 }, originalPosition = elems.position({ @@ -252,14 +252,13 @@ test( "using", function() { }); function collisionTest( config, result, msg ) { - var within = $("#within-container"); - - var elem = $( "#elx" ).position( $.extend({ - my: "left top", - at: "right bottom", - of: "#parentx", - within: within - }, config ) ); + var within = $( "#within-container" ), + elem = $( "#elx" ).position( $.extend({ + my: "left top", + at: "right bottom", + of: "#parentx", + within: within + }, config ) ); deepEqual( elem.addOffsets(), result, msg ); } @@ -448,39 +447,37 @@ test( "collision: flip, with margin", function() { }); test( "addClass: flipped left", function() { - var within = $("#within-container"); - - var elem = $( "#elx" ).position( { - my: "left center", - of: within[0], - within: within, - collision: "flip", - at: "right center" - }); + var within = $("#within-container"), + elem = $( "#elx" ).position( { + my: "left center", + of: within[0], + within: within, + collision: "flip", + at: "right center" + }); deepEqual( elem.hasClass( 'ui-flipped-left' ), false, 'Has ui-flipped-left class' ); - elem.position( { + elem.position({ my: "right center", of: within[0], within: within, collision: "flip", at: "left center" - }) + }); deepEqual( elem.hasClass( 'ui-flipped-left' ), false, 'Removed ui-flipped-left class' ); }); test( "addClass: flipped top", function() { - var within = $("#within-container"); - - var elem = $( "#elx" ).position( { - my: "left top", - of: within[0], - within: within, - collision: "flip", - at: "right bottom" - }); + var within = $("#within-container"), + elem = $( "#elx" ).position( { + my: "left top", + of: within[0], + within: within, + collision: "flip", + at: "right bottom" + }); deepEqual( elem.hasClass( 'ui-flipped-top' ), false, 'Has ui-flipped-top class' ); @@ -496,15 +493,14 @@ test( "addClass: flipped top", function() { }); test( "addClass: flipped right", function() { - var within = $("#within-container"); - - var elem = $( "#elx" ).position( { - my: "right center", - of: within[0], - within: within, - collision: "flip", - at: "left center" - }); + var within = $("#within-container"), + elem = $( "#elx" ).position( { + my: "right center", + of: within[0], + within: within, + collision: "flip", + at: "left center" + }); deepEqual( elem.hasClass( 'ui-flipped-right' ), false, 'Has ui-flipped-right class' ); @@ -521,14 +517,13 @@ test( "addClass: flipped right", function() { }); test( "addClass: flipped bottom", function() { - var within = $("#within-container"); - - var elem = $( "#elx" ).position( { - my: "left bottom", - of: window, - collision: "flip", - at: "right top" - }); + var within = $("#within-container"), + elem = $( "#elx" ).position( { + my: "left bottom", + of: window, + collision: "flip", + at: "right top" + }); deepEqual( elem.hasClass( 'ui-flipped-bottom' ), false, 'Has ui-flipped-bottom class' ); diff --git a/tests/unit/progressbar/progressbar_defaults.js b/tests/unit/progressbar/progressbar_defaults.js index 3856e31a0..2f97a78bb 100644 --- a/tests/unit/progressbar/progressbar_defaults.js +++ b/tests/unit/progressbar/progressbar_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "progressbar", { +TestHelpers.commonWidgetTests( "progressbar", { defaults: { disabled: false, value: 0, diff --git a/tests/unit/progressbar/progressbar_events.js b/tests/unit/progressbar/progressbar_events.js index 8d7b8868d..f3713171b 100644 --- a/tests/unit/progressbar/progressbar_events.js +++ b/tests/unit/progressbar/progressbar_events.js @@ -15,7 +15,7 @@ test("create", function() { change: function() { ok(false, 'create() has triggered change()'); } - }) + }); }); test("change", function() { diff --git a/tests/unit/resizable/resizable_defaults.js b/tests/unit/resizable/resizable_defaults.js index f69e5217c..c46e10781 100644 --- a/tests/unit/resizable/resizable_defaults.js +++ b/tests/unit/resizable/resizable_defaults.js @@ -1,28 +1,24 @@ -/* - * resizable_defaults.js - */ - -var resizable_defaults = { - alsoResize: false, - animate: false, - animateDuration: 'slow', - animateEasing: 'swing', - aspectRatio: false, - autoHide: false, - cancel: ':input,option', - containment: false, - delay: 0, - disabled: false, - distance: 1, - ghost: false, - grid: false, - handles: 'e,s,se', - helper: false, - maxHeight: null, - maxWidth: null, - minHeight: 10, - minWidth: 10, - zIndex: 1000 -}; - -commonWidgetTests('resizable', { defaults: resizable_defaults }); +TestHelpers.commonWidgetTests('resizable', { + defaults: { + alsoResize: false, + animate: false, + animateDuration: 'slow', + animateEasing: 'swing', + aspectRatio: false, + autoHide: false, + cancel: ':input,option', + containment: false, + delay: 0, + disabled: false, + distance: 1, + ghost: false, + grid: false, + handles: 'e,s,se', + helper: false, + maxHeight: null, + maxWidth: null, + minHeight: 10, + minWidth: 10, + zIndex: 1000 + } +}); diff --git a/tests/unit/resizable/resizable_methods.js b/tests/unit/resizable/resizable_methods.js index 03e91d440..2b4c4256c 100644 --- a/tests/unit/resizable/resizable_methods.js +++ b/tests/unit/resizable/resizable_methods.js @@ -20,7 +20,7 @@ test("init", function() { $('<div></div>').resizable().resizable("foo").remove(); ok(true, 'arbitrary method called after init'); - el = $('<div></div>').resizable() + el = $('<div></div>').resizable(); var foo = el.resizable("option", "foo"); el.remove(); ok(true, 'arbitrary option getter after init'); diff --git a/tests/unit/resizable/resizable_options.js b/tests/unit/resizable/resizable_options.js index 76cca560a..275639ca1 100644 --- a/tests/unit/resizable/resizable_options.js +++ b/tests/unit/resizable/resizable_options.js @@ -187,4 +187,13 @@ test("ui-resizable-nw { handles: 'all', minWidth: 60, minHeight: 60, maxWidth: 1 equal( target.height(), 100, "compare maxHeight" ); }); +test("zIndex, applied to all handles", function() { + expect(8); + + var target = $('<div></div>').resizable({ handles: 'all', zIndex: 100 }); + target.children( '.ui-resizable-handle' ).each( function( index, handle ) { + equals( $( handle ).css( 'zIndex' ), 100, 'compare zIndex' ); + }); +}); + })(jQuery); diff --git a/tests/unit/selectable/selectable_defaults.js b/tests/unit/selectable/selectable_defaults.js index dbf799a43..27714d0ae 100644 --- a/tests/unit/selectable/selectable_defaults.js +++ b/tests/unit/selectable/selectable_defaults.js @@ -1,16 +1,12 @@ -/* - * selectable_defaults.js - */ - -var selectable_defaults = { - appendTo: 'body', - autoRefresh: true, - cancel: ':input,option', - delay: 0, - disabled: false, - distance: 0, - filter: '*', - tolerance: 'touch' -}; - -commonWidgetTests('selectable', { defaults: selectable_defaults }); +TestHelpers.commonWidgetTests('selectable', { + defaults: { + appendTo: 'body', + autoRefresh: true, + cancel: ':input,option', + delay: 0, + disabled: false, + distance: 0, + filter: '*', + tolerance: 'touch' + } +}); diff --git a/tests/unit/selectable/selectable_methods.js b/tests/unit/selectable/selectable_methods.js index 32dfe00ed..dbc88f269 100644 --- a/tests/unit/selectable/selectable_methods.js +++ b/tests/unit/selectable/selectable_methods.js @@ -20,7 +20,7 @@ test("init", function() { $("<div></div>").selectable().selectable("foo").remove(); ok(true, 'arbitrary method called after init'); - el = $("<div></div>").selectable() + el = $("<div></div>").selectable(); var foo = el.selectable("option", "foo"); el.remove(); ok(true, 'arbitrary option getter after init'); @@ -49,7 +49,8 @@ test("destroy", function() { test("enable", function() { expect(3); - var fired = false; + var expected, actual, + fired = false; el = $("#selectable1"); el.selectable({ @@ -63,14 +64,15 @@ test("enable", function() { equal(fired, true, "start fired"); el.selectable("destroy"); - var expected = $('<div></div>').selectable(), - actual = expected.selectable('enable'); + expected = $('<div></div>').selectable(); + actual = expected.selectable('enable'); equal(actual, expected, 'enable is chainable'); }); test("disable", function() { expect(3); - var fired = false; + var expected, actual, + fired = false; el = $("#selectable1"); el.selectable({ @@ -85,8 +87,8 @@ test("disable", function() { equal(fired, false, "start fired"); el.selectable("destroy"); - var expected = $('<div></div>').selectable(), - actual = expected.selectable('disable'); + expected = $('<div></div>').selectable(); + actual = expected.selectable('disable'); equal(actual, expected, 'disable is chainable'); }); diff --git a/tests/unit/selectable/selectable_options.js b/tests/unit/selectable/selectable_options.js index 2bc44e6e0..be9fdf5fe 100644 --- a/tests/unit/selectable/selectable_options.js +++ b/tests/unit/selectable/selectable_options.js @@ -8,7 +8,7 @@ module("selectable: options"); test("autoRefresh", function() { expect(3); el = $("#selectable1"); - var actual, sel = $("*", el), selected = function() { actual += 1 }; + var actual, sel = $("*", el), selected = function() { actual += 1; }; actual = 0; el = $("#selectable1").selectable({ autoRefresh: false, selected: selected }); @@ -33,12 +33,12 @@ test("autoRefresh", function() { test("filter", function() { expect(2); el = $("#selectable1"); - var actual, sel = $("*", el), selected = function() { actual += 1 }; + var actual, sel = $("*", el), selected = function() { actual += 1; }; actual = 0; el = $("#selectable1").selectable({ filter: '.special', selected: selected }); drag(1000, 1000); - ok(sel.length != 1, "this test assumes more than 1 selectee"); + ok(sel.length !== 1, "this test assumes more than 1 selectee"); equal(actual, 1); el.selectable("destroy"); }); diff --git a/tests/unit/slider/slider_defaults.js b/tests/unit/slider/slider_defaults.js index 8049fe969..8a0b347f3 100644 --- a/tests/unit/slider/slider_defaults.js +++ b/tests/unit/slider/slider_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "slider", { +TestHelpers.commonWidgetTests( "slider", { defaults: { animate: false, cancel: ':input,option', diff --git a/tests/unit/slider/slider_methods.js b/tests/unit/slider/slider_methods.js index b46222002..79f80e868 100644 --- a/tests/unit/slider/slider_methods.js +++ b/tests/unit/slider/slider_methods.js @@ -17,8 +17,8 @@ test("init", function() { $('<div></div>').slider().remove(); ok(true, '.slider() called on disconnected DOMElement'); - var el = $('<div></div>').slider(); - var foo = el.slider("option", "foo"); + var el = $('<div></div>').slider(), + foo = el.slider("option", "foo"); el.remove(); ok(true, 'arbitrary option getter after init'); @@ -42,11 +42,12 @@ test("destroy", function() { }); test("enable", function() { - var expected = $('<div></div>').slider(), + var el, + expected = $('<div></div>').slider(), actual = expected.slider('enable'); equal(actual, expected, 'enable is chainable'); - var el = $('<div></div>').slider({ disabled: true }); + el = $('<div></div>').slider({ disabled: true }); ok(el.hasClass('ui-disabled'), 'slider has ui-disabled class before enable method call'); ok(el.hasClass('ui-slider-disabled'), 'slider has ui-slider-disabled class before enable method call'); el.slider('enable'); @@ -55,11 +56,12 @@ test("enable", function() { }); test("disable", function() { - var expected = $('<div></div>').slider(), + var el, + expected = $('<div></div>').slider(), actual = expected.slider('disable'); equal(actual, expected, 'disable is chainable'); - var el = $('<div></div>').slider({ disabled: false }); + el = $('<div></div>').slider({ disabled: false }); ok(!el.hasClass('ui-disabled'), 'slider does not have ui-disabled class before disabled method call'); ok(!el.hasClass('ui-slider-disabled'), 'slider does not have ui-slider-disabled class before disable method call'); el.slider('disable'); diff --git a/tests/unit/slider/slider_options.js b/tests/unit/slider/slider_options.js index 7d9899284..09067a3e9 100644 --- a/tests/unit/slider/slider_options.js +++ b/tests/unit/slider/slider_options.js @@ -23,8 +23,8 @@ test("max", function() { }; el.slider(options); - ok(el.slider("option", "value") == options.value, "value option is not contained by max"); - ok(el.slider("value") == options.max, "value method is contained by max"); + ok(el.slider("option", "value") === options.value, "value option is not contained by max"); + ok(el.slider("value") === options.max, "value method is contained by max"); el.slider('destroy'); }); @@ -41,8 +41,8 @@ test("min", function() { }; el.slider(options); - ok(el.slider("option", "value") == options.value, "value option is not contained by min"); - ok(el.slider("value") == options.min, "value method is contained by min"); + ok(el.slider("option", "value") === options.value, "value option is not contained by min"); + ok(el.slider("value") === options.min, "value method is contained by min"); el.slider('destroy'); }); @@ -73,7 +73,7 @@ test("orientation", function() { value: -1 }; - var percentVal = (options.value - options.min) / (options.max - options.min) * 100; + percentVal = (options.value - options.min) / (options.max - options.min) * 100; el.slider(options).slider("option", "orientation", "vertical"); ok(el.is('.ui-slider-vertical'), "vertical slider has class .ui-slider-vertical"); diff --git a/tests/unit/sortable/sortable_defaults.js b/tests/unit/sortable/sortable_defaults.js index 7681addad..b5fc05a5d 100644 --- a/tests/unit/sortable/sortable_defaults.js +++ b/tests/unit/sortable/sortable_defaults.js @@ -1,34 +1,30 @@ -/* - * sortable_defaults.js - */ - -var sortable_defaults = { - appendTo: "parent", - axis: false, - cancel: ":input,option", - connectWith: false, - containment: false, - cursor: 'auto', - cursorAt: false, - delay: 0, - disabled: false, - distance: 1, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: "> *", - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000 -}; - -commonWidgetTests('sortable', { defaults: sortable_defaults }); +TestHelpers.commonWidgetTests( "sortable", { + defaults: { + appendTo: "parent", + axis: false, + cancel: ":input,option", + connectWith: false, + containment: false, + cursor: "auto", + cursorAt: false, + delay: 0, + disabled: false, + distance: 1, + dropOnEmpty: true, + forcePlaceholderSize: false, + forceHelperSize: false, + grid: false, + handle: false, + helper: "original", + items: "> *", + opacity: false, + placeholder: false, + revert: false, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + tolerance: "intersect", + zIndex: 1000 + } +}); diff --git a/tests/unit/sortable/sortable_events.js b/tests/unit/sortable/sortable_events.js index cb4ff4ff3..6ed54e1b6 100644 --- a/tests/unit/sortable/sortable_events.js +++ b/tests/unit/sortable/sortable_events.js @@ -6,13 +6,13 @@ module("sortable: events"); test("start", function() { - + var hash; $("#sortable") .sortable({ start: function(e, ui) { hash = ui; } }) .find('li:eq(0)').simulate("drag", { dx: 0, dy: 10 }); - - ok(hash, 'start event triggered'); + + ok(hash, 'start event triggered'); ok(hash.helper, 'UI hash includes: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); @@ -20,104 +20,104 @@ test("start", function() { ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("sort", function() { - + var hash; $("#sortable") .sortable({ sort: function(e, ui) { hash = ui; } }) .find('li:eq(0)').simulate("drag", { dx: 0, dy: 10 }); - - ok(hash, 'sort event triggered'); + + ok(hash, 'sort event triggered'); ok(hash.helper, 'UI hash includes: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); ok(hash.offset && (hash.offset.top && hash.offset.left), 'UI hash includes: offset'); ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("change", function() { - + var hash; $("#sortable") .sortable({ change: function(e, ui) { hash = ui; } }) .find('li:eq(0)').simulate("drag", { dx: 1, dy: 1 }); - + ok(!hash, '1px drag, change event should not be triggered'); - + $("#sortable") .sortable({ change: function(e, ui) { hash = ui; } }) - .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); - - ok(hash, 'change event triggered'); + .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); + + ok(hash, 'change event triggered'); ok(hash.helper, 'UI hash includes: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); ok(hash.offset && (hash.offset.top && hash.offset.left), 'UI hash includes: offset'); ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("beforeStop", function() { - + var hash; $("#sortable") .sortable({ beforeStop: function(e, ui) { hash = ui; } }) - .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); - - ok(hash, 'beforeStop event triggered'); + .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); + + ok(hash, 'beforeStop event triggered'); ok(hash.helper, 'UI hash includes: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); ok(hash.offset && (hash.offset.top && hash.offset.left), 'UI hash includes: offset'); ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("stop", function() { - + var hash; $("#sortable") .sortable({ stop: function(e, ui) { hash = ui; } }) - .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); - - ok(hash, 'stop event triggered'); + .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); + + ok(hash, 'stop event triggered'); ok(!hash.helper, 'UI should not include: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); ok(hash.offset && (hash.offset.top && hash.offset.left), 'UI hash includes: offset'); ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("update", function() { - + var hash; $("#sortable") .sortable({ update: function(e, ui) { hash = ui; } }) .find('li:eq(0)').simulate("drag", { dx: 1, dy: 1 }); - + ok(!hash, '1px drag, update event should not be triggered'); - + $("#sortable") .sortable({ update: function(e, ui) { hash = ui; } }) - .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); - - ok(hash, 'update event triggered'); + .find('li:eq(0)').simulate("drag", { dx: 0, dy: 20 }); + + ok(hash, 'update event triggered'); ok(!hash.helper, 'UI hash should not include: helper'); ok(hash.placeholder, 'UI hash includes: placeholder'); ok(hash.position && (hash.position.top && hash.position.left), 'UI hash includes: position'); ok(hash.offset && (hash.offset.top && hash.offset.left), 'UI hash includes: offset'); ok(hash.item, 'UI hash includes: item'); ok(!hash.sender, 'UI hash does not include: sender'); - + }); test("receive", function() { diff --git a/tests/unit/sortable/sortable_methods.js b/tests/unit/sortable/sortable_methods.js index 2446d2755..c2a0b9548 100644 --- a/tests/unit/sortable/sortable_methods.js +++ b/tests/unit/sortable/sortable_methods.js @@ -5,7 +5,7 @@ var el, offsetBefore, offsetAfter, dragged; -var drag = function(handle, dx, dy) { +function drag(handle, dx, dy) { offsetBefore = $(handle).offset(); $(handle).simulate("drag", { dx: dx || 0, @@ -15,7 +15,7 @@ var drag = function(handle, dx, dy) { offsetAfter = $(handle).offset(); } -var sort = function(handle, dx, dy, index, msg) { +function sort(handle, dx, dy, index, msg) { drag(handle, dx, dy); equal($(handle).parent().children().index(handle), index, msg); } diff --git a/tests/unit/sortable/sortable_tickets.js b/tests/unit/sortable/sortable_tickets.js index 6ee503a58..22ad61baf 100644 --- a/tests/unit/sortable/sortable_tickets.js +++ b/tests/unit/sortable/sortable_tickets.js @@ -5,7 +5,7 @@ var el, offsetBefore, offsetAfter, dragged; -var drag = function(handle, dx, dy) { +function drag(handle, dx, dy) { offsetBefore = $(handle).offset(); $(handle).simulate("drag", { dx: dx || 0, @@ -15,7 +15,7 @@ var drag = function(handle, dx, dy) { offsetAfter = $(handle).offset(); } -var sort = function(handle, dx, dy, index, msg) { +function sort(handle, dx, dy, index, msg) { drag(handle, dx, dy); equal($(handle).parent().children().index(handle), index, msg); } diff --git a/tests/unit/spinner/spinner_core.js b/tests/unit/spinner/spinner_core.js index e12d1af2f..a1179bb35 100644 --- a/tests/unit/spinner/spinner_core.js +++ b/tests/unit/spinner/spinner_core.js @@ -1,5 +1,7 @@ (function( $ ) { +var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp; + module( "spinner: core" ); test( "keydown UP on input, increases value not greater than max", function() { @@ -9,15 +11,15 @@ test( "keydown UP on input, increases value not greater than max", function() { step: 10 }); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( element.val(), 80 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( element.val(), 90 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( element.val(), 100 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( element.val(), 100 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( element.val(), 100 ); }); @@ -28,15 +30,15 @@ test( "keydown DOWN on input, decreases value not less than min", function() { step: 10 }); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( element.val(), 40 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( element.val(), 30 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( element.val(), 20 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( element.val(), 20 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( element.val(), 20 ); }); @@ -47,15 +49,15 @@ test( "keydown PAGE_UP on input, increases value not greater than max", function page: 10 }); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( element.val(), 80 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( element.val(), 90 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( element.val(), 100 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( element.val(), 100 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( element.val(), 100 ); }); @@ -66,15 +68,15 @@ test( "keydown PAGE_DOWN on input, decreases value not less than min", function( page: 10 }); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( element.val(), 40 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( element.val(), 30 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( element.val(), 20 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( element.val(), 20 ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( element.val(), 20 ); }); @@ -99,7 +101,7 @@ test( "mouse click on up button, increases value not greater than max", function min: 0 }), button = element.spinner( "widget" ).find( ".ui-spinner-down" ); - + button.trigger( "mousedown" ).trigger( "mouseup" ); equal( element.val(), 1 ); button.trigger( "mousedown" ).trigger( "mouseup" ); @@ -189,8 +191,8 @@ test( "don't clear invalid value on blur", function() { test( "precision", function() { expect( 2 ); - var element = $( "#spin" ).val( .05 ).spinner({ - step: .0001 + var element = $( "#spin" ).val( 0.05 ).spinner({ + step: 0.0001 }); element.spinner( "stepUp" ); equal( element.val(), "0.0501", "precision from step" ); diff --git a/tests/unit/spinner/spinner_defaults.js b/tests/unit/spinner/spinner_defaults.js index 0a4e7c236..4f05b1e63 100644 --- a/tests/unit/spinner/spinner_defaults.js +++ b/tests/unit/spinner/spinner_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "spinner", { +TestHelpers.commonWidgetTests( "spinner", { defaults: { culture: null, disabled: false, diff --git a/tests/unit/spinner/spinner_events.js b/tests/unit/spinner/spinner_events.js index e43ba3365..133a8d5a2 100644 --- a/tests/unit/spinner/spinner_events.js +++ b/tests/unit/spinner/spinner_events.js @@ -1,5 +1,7 @@ (function( $ ) { +var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp; + module( "spinner: events" ); test( "start", function() { @@ -13,14 +15,14 @@ test( "start", function() { } shouldStart( true, "key UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); shouldStart( true, "key DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldStart( true, "key PAGE_UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); shouldStart( true, "key PAGE_DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); shouldStart( true, "button up" ); element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); @@ -52,14 +54,14 @@ test( "spin", function() { } shouldSpin( true, "key UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); shouldSpin( true, "key DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldSpin( true, "key PAGE_UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); shouldSpin( true, "key PAGE_DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); shouldSpin( true, "button up" ); element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); @@ -91,14 +93,14 @@ test( "stop", function() { } shouldStop( true, "key UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); shouldStop( true, "key DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldStop( true, "key PAGE_UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); shouldStop( true, "key PAGE_DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); shouldStop( true, "button up" ); element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); @@ -131,42 +133,42 @@ test( "change", function() { element.focus(); shouldChange( false, "key UP, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); shouldChange( true, "blur after key UP" ); element.blur(); element.focus(); shouldChange( false, "key DOWN, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldChange( true, "blur after key DOWN" ); element.blur(); element.focus(); shouldChange( false, "key PAGE_UP, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); shouldChange( true, "blur after key PAGE_UP" ); element.blur(); element.focus(); shouldChange( false, "key PAGE_DOWN, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); shouldChange( true, "blur after key PAGE_DOWN" ); element.blur(); shouldChange( false, "many keys, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldChange( true, "blur after many keys" ); element.blur(); shouldChange( false, "many keys, same final value, before blur" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); shouldChange( false, "blur after many keys, same final value" ); shouldChange( false, "button up, before blur" ); diff --git a/tests/unit/spinner/spinner_methods.js b/tests/unit/spinner/spinner_methods.js index 9c82218e1..bafd949a7 100644 --- a/tests/unit/spinner/spinner_methods.js +++ b/tests/unit/spinner/spinner_methods.js @@ -1,5 +1,7 @@ (function( $ ) { +var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp; + module( "spinner: methods" ); test( "destroy", function() { @@ -21,16 +23,16 @@ test( "disable", function() { ok( wrapper.hasClass( "ui-spinner-disabled" ), "after: wrapper has ui-spinner-disabled class" ); ok( element.is( ":disabled"), "after: input has disabled attribute" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( 2, element.val(), "keyboard - value does not change on key UP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.DOWN ); equal( 2, element.val(), "keyboard - value does not change on key DOWN" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); equal( 2, element.val(), "keyboard - value does not change on key PGUP" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); + simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); equal( 2, element.val(), "keyboard - value does not change on key PGDN" ); wrapper.find( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" ); @@ -54,7 +56,7 @@ test( "disable", function() { test( "enable", function() { expect( 5 ); - var element = $( "#spin" ).val( 1 ).spinner({ disabled: true }) + var element = $( "#spin" ).val( 1 ).spinner({ disabled: true }), wrapper = element.spinner( "widget" ); ok( wrapper.hasClass( "ui-spinner-disabled" ), "before: wrapper has ui-spinner-disabled class" ); @@ -65,7 +67,7 @@ test( "enable", function() { ok( !wrapper.hasClass( ".ui-spinner-disabled" ), "after: wrapper does not have ui-spinner-disabled class" ); ok( !element.is( ":disabled" ), "after: input does not have disabled attribute" ); - spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); + simulateKeyDownUp( element, $.ui.keyCode.UP ); equal( 2, element.val(), "keyboard - value changes on key UP" ); }); diff --git a/tests/unit/spinner/spinner_options.js b/tests/unit/spinner/spinner_options.js index cbad3f870..e21852630 100644 --- a/tests/unit/spinner/spinner_options.js +++ b/tests/unit/spinner/spinner_options.js @@ -1,5 +1,7 @@ (function( $ ) { +var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp; + module( "spinner: options" ); // culture is tested after numberFormat, since it depends on numberFormat @@ -191,7 +193,7 @@ test( "min, string", function() { equal( element.spinner( "option", "min" ), -100, "option converted to number" ); element.spinner( "value", -1000 ); - equal( element.val(), "($100.00)", "min constrained in value method") + equal( element.val(), "($100.00)", "min constrained in value method" ); }); test( "step, 2", function() { diff --git a/tests/unit/spinner/spinner_test_helpers.js b/tests/unit/spinner/spinner_test_helpers.js index af555dbf2..2021e8f7a 100644 --- a/tests/unit/spinner/spinner_test_helpers.js +++ b/tests/unit/spinner/spinner_test_helpers.js @@ -1,5 +1,8 @@ -var spinner_simulateKeyDownUp = function( element, keyCode, shift ) { - element - .simulate( "keydown", { keyCode: keyCode, shiftKey: shift || false } ) - .simulate( "keyup", { keyCode: keyCode, shiftKey: shift || false } ); +TestHelpers.spinner = { + simulateKeyDownUp: function( element, keyCode, shift ) { + element + .simulate( "keydown", { keyCode: keyCode, shiftKey: shift || false } ) + .simulate( "keyup", { keyCode: keyCode, shiftKey: shift || false } ); + } }; + diff --git a/tests/unit/subsuite.js b/tests/unit/subsuite.js index 03e8c9706..6f966590b 100644 --- a/tests/unit/subsuite.js +++ b/tests/unit/subsuite.js @@ -1,12 +1,11 @@ (function() { -var versions = [ "1.6", "1.6.1", "1.6.2", "1.6.3", "1.6.4", "1.7", "1.7.1", "1.7.2", "git" ]; - -var additionalTests = { - accordion: [ "accordion_deprecated.html" ], - position: [ "position_deprecated.html" ], - tabs: [ "tabs_deprecated.html" ] -}; +var versions = [ "1.6", "1.6.1", "1.6.2", "1.6.3", "1.6.4", "1.7", "1.7.1", "1.7.2", "git" ], + additionalTests = { + accordion: [ "accordion_deprecated.html" ], + position: [ "position_deprecated.html" ], + tabs: [ "tabs_deprecated.html" ] + }; window.testAllVersions = function( widget ) { QUnit.testSuites( $.map( diff --git a/tests/unit/subsuiteRunner.js b/tests/unit/subsuiteRunner.js index ddfccc7c1..2d6de2de1 100644 --- a/tests/unit/subsuiteRunner.js +++ b/tests/unit/subsuiteRunner.js @@ -4,13 +4,16 @@ var subsuiteFrame; QUnit.extend( QUnit, { testSuites: function( suites ) { + function generateSuite( suite ) { + asyncTest( suite, function() { + QUnit.runSuite( suite ); + }); + } + for ( var i = 0; i < suites.length; i++ ) { - (function( suite ) { - asyncTest( suite, function() { - QUnit.runSuite( suite ); - }); - }( suites[i] ) ); + generateSuite( suites[ i ] ); } + QUnit.done = function() { subsuiteFrame.style.display = "none"; }; @@ -23,10 +26,12 @@ QUnit.extend( QUnit, { testDone: function() { var current = QUnit.id( this.config.current.id ), - children = current.children; + children = current.children, + i = 0, + length = children.length; // undo the auto-expansion of failed tests - for ( var i = 0; i < children.length; i++ ) { + for ( ; i < length; i++ ) { if ( children[i].nodeName === "OL" ) { children[i].style.display = "none"; } @@ -34,10 +39,11 @@ QUnit.extend( QUnit, { }, runSuite: function( suite ) { - var body = document.getElementsByTagName( "body" )[0], - iframe = subsuiteFrame = document.createElement( "iframe" ), - iframeWin; + var iframeWin, + body = document.getElementsByTagName( "body" )[0], + iframe = document.createElement( "iframe" ); + subsuiteFrame = iframe; iframe.className = "qunit-subsuite"; body.appendChild( iframe ); diff --git a/tests/unit/swarminject.js b/tests/unit/swarminject.js index db69326ab..78d37ef46 100644 --- a/tests/unit/swarminject.js +++ b/tests/unit/swarminject.js @@ -5,5 +5,5 @@ if ( !url || url.indexOf("http") !== 0 ) { return; } - document.write("<scr" + "ipt src='http://swarm.jquery.org/js/inject.js?" + (new Date).getTime() + "'></scr" + "ipt>"); + document.write( "<scr" + "ipt src='http://swarm.jquery.org/js/inject.js?" + (new Date()).getTime() + "'></scr" + "ipt>" ); })(); diff --git a/tests/unit/tabs/tabs.html b/tests/unit/tabs/tabs.html index fc494e013..7f60ad277 100644 --- a/tests/unit/tabs/tabs.html +++ b/tests/unit/tabs/tabs.html @@ -25,68 +25,13 @@ <script src="../../jquery.simulate.js"></script> <script src="../testsuite.js"></script> + <script src="tabs_test_helpers.js"></script> <script src="tabs_defaults.js"></script> <script src="tabs_core.js"></script> <script src="tabs_events.js"></script> <script src="tabs_methods.js"></script> <script src="tabs_options.js"></script> - <script> - function tabs_state( tabs ) { - var expected = $.makeArray( arguments ).slice( 1 ); - var actual = tabs.find( ".ui-tabs-nav li" ).map(function() { - var tab = $( this ), - panel = $( $.ui.tabs.prototype._sanitizeSelector( - "#" + tab.find( "a" ).attr( "aria-controls" ) ) ), - tabIsActive = tab.hasClass( "ui-state-active" ), - panelIsActive = panel.css( "display" ) !== "none"; - - if ( tabIsActive && panelIsActive ) { - return 1; - } - if ( !tabIsActive && !panelIsActive ) { - return 0; - } - return -1; // mixed state - invalid - }).get(); - deepEqual( actual, expected ); - } - - function tabs_disabled( tabs, state ) { - var expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) { - if ( typeof state === "boolean" ) { - return state ? 1 : 0; - } else { - return $.inArray( index, state ) !== -1 ? 1 : 0; - } - }); - - var internalState = tabs.tabs( "option", "disabled" ); - if ( internalState === false ) { - internalState = []; - } - if ( internalState === true ) { - internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) { - return index; - }); - } - - var actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) { - var tab = $( this ), - tabIsDisabled = tab.hasClass( "ui-state-disabled" ); - - if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) { - return 1; - } - if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) { - return 0; - } - return -1; // mixed state - invalid - }).get(); - deepEqual( tabs.tabs( "option", "disabled" ), state ); - deepEqual( actual, expected ); - } - </script> <script src="../swarminject.js"></script> </head> <body> diff --git a/tests/unit/tabs/tabs_core.js b/tests/unit/tabs/tabs_core.js index 21250fb33..b9bd81987 100644 --- a/tests/unit/tabs/tabs_core.js +++ b/tests/unit/tabs/tabs_core.js @@ -1,5 +1,7 @@ (function( $ ) { +var state = TestHelpers.tabs.state; + module( "tabs: core" ); test( "markup structure", function() { @@ -89,7 +91,7 @@ test( "#4033 - IE expands hash to full url and misinterprets tab as ajax", funct }); equal( element.find( ".ui-tabs-nav a" ).attr( "aria-controls" ), "tab", "aria-contorls attribute is correct" ); - tabs_state( element, 1 ); + state( element, 1 ); }); }( jQuery ) ); diff --git a/tests/unit/tabs/tabs_defaults.js b/tests/unit/tabs/tabs_defaults.js index 52b6f8a71..7ffb05da4 100644 --- a/tests/unit/tabs/tabs_defaults.js +++ b/tests/unit/tabs/tabs_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "tabs", { +TestHelpers.commonWidgetTests( "tabs", { defaults: { active: null, collapsible: false, diff --git a/tests/unit/tabs/tabs_defaults_deprecated.js b/tests/unit/tabs/tabs_defaults_deprecated.js index 1a56297e9..fdcff21b3 100644 --- a/tests/unit/tabs/tabs_defaults_deprecated.js +++ b/tests/unit/tabs/tabs_defaults_deprecated.js @@ -1,4 +1,4 @@ -commonWidgetTests( "tabs", { +TestHelpers.commonWidgetTests( "tabs", { defaults: { active: null, ajaxOptions: null, diff --git a/tests/unit/tabs/tabs_deprecated.html b/tests/unit/tabs/tabs_deprecated.html index 410aebc40..c22ec3369 100644 --- a/tests/unit/tabs/tabs_deprecated.html +++ b/tests/unit/tabs/tabs_deprecated.html @@ -23,6 +23,7 @@ <script src="../../jquery.simulate.js"></script> <script src="../testsuite.js"></script> + <script src="tabs_test_helpers.js"></script> <script src="tabs_defaults_deprecated.js"></script> <script src="tabs_core.js"></script> <script src="tabs_events.js"></script> @@ -30,62 +31,6 @@ <script src="tabs_options.js"></script> <script src="tabs_deprecated.js"></script> - <script> - function tabs_state( tabs ) { - var expected = $.makeArray( arguments ).slice( 1 ); - var actual = tabs.find( ".ui-tabs-nav li" ).map(function() { - var tab = $( this ), - panel = $( $.ui.tabs.prototype._sanitizeSelector( - "#" + tab.find( "a" ).attr( "aria-controls" ) ) ), - tabIsActive = tab.hasClass( "ui-state-active" ), - panelIsActive = panel.css( "display" ) !== "none"; - - if ( tabIsActive && panelIsActive ) { - return 1; - } - if ( !tabIsActive && !panelIsActive ) { - return 0; - } - return -1; // mixed state - invalid - }).get(); - deepEqual( actual, expected ); - } - - function tabs_disabled( tabs, state ) { - var expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) { - if ( typeof state === "boolean" ) { - return state ? 1 : 0; - } else { - return $.inArray( index, state ) !== -1 ? 1 : 0; - } - }); - - var internalState = tabs.tabs( "option", "disabled" ); - if ( internalState === false ) { - internalState = []; - } - if ( internalState === true ) { - internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) { - return index; - }); - } - - var actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) { - var tab = $( this ), - tabIsDisabled = tab.hasClass( "ui-state-disabled" ); - - if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) { - return 1; - } - if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) { - return 0; - } - return -1; // mixed state - invalid - }).get(); - deepEqual( tabs.tabs( "option", "disabled" ), state ); - deepEqual( actual, expected ); - } - </script> <script src="../swarminject.js"></script> </head> <body> diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js index 80bc4a326..8386a13ac 100644 --- a/tests/unit/tabs/tabs_deprecated.js +++ b/tests/unit/tabs/tabs_deprecated.js @@ -1,5 +1,7 @@ (function( $ ) { +var state = TestHelpers.tabs.state; + module( "tabs (deprecated): core" ); test( "panel ids", function() { @@ -48,17 +50,17 @@ asyncTest( "cache", function() { cache: true }); element.one( "tabsshow", function( event, ui ) { - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); }); element.one( "tabsload", function( event, ui ) { ok( true, "tabsload" ); setTimeout(function() { element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0, 0, 0, 0 ); + state( element, 1, 0, 0, 0, 0 ); element.one( "tabsshow", function( event, ui ) { - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); }); element.one( "tabsload", function( event, ui ) { ok( false, "should be cached" ); @@ -68,7 +70,7 @@ asyncTest( "cache", function() { }, 1 ); }); element.tabs( "option", "active", 2 ); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); }); test( "idPrefix", function() { @@ -89,10 +91,11 @@ test( "tabTemplate + panelTemplate", function() { // defaults are tested in the add method test expect( 11 ); - var element = $( "#tabs2" ).tabs({ - tabTemplate: "<li class='customTab'><a href='http://example.com/#{href}'>#{label}</a></li>", - panelTemplate: "<div class='customPanel'></div>" - }); + var tab, anchor, + element = $( "#tabs2" ).tabs({ + tabTemplate: "<li class='customTab'><a href='http://example.com/#{href}'>#{label}</a></li>", + panelTemplate: "<div class='customPanel'></div>" + }); element.one( "tabsadd", function( event, ui ) { var anchor = $( ui.tab ); equal( ui.index, 5, "ui.index" ); @@ -103,8 +106,8 @@ test( "tabTemplate + panelTemplate", function() { ok( $( ui.panel ).hasClass( "customPanel" ), "panel custom class" ); }); element.tabs( "add", "#new", "New" ); - var tab = element.find( ".ui-tabs-nav li" ).last(), - anchor = tab.find( "a" ); + tab = element.find( ".ui-tabs-nav li" ).last(); + anchor = tab.find( "a" ); equal( tab.text(), "New", "label" ); ok( tab.hasClass( "customTab" ), "tab custom class" ); equal( anchor.attr( "href" ), "http://example.com/#new", "href" ); @@ -170,50 +173,50 @@ test( "selected", function() { var element = $( "#tabs1" ).tabs(); equal( element.tabs( "option", "selected" ), 0, "should be 0 by default" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.tabs( "destroy" ); location.hash = "#fragment-3"; element = $( "#tabs1" ).tabs(); equal( element.tabs( "option", "selected" ), 2, "should be 2 based on URL" ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "destroy" ); el = $('#tabs1').tabs({ selected: -1, collapsible: true }); - tabs_state( element, 0, 0, 0 ); + 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 ); element.tabs( "option", "collapsible", false ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.tabs( "option", "selected" ), 0 ); element.tabs( "destroy" ); element.tabs({ selected: -1 }); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); strictEqual( element.tabs( "option", "selected" ), 0 ); element.tabs( "destroy" ); element.tabs({ selected: 2 }); equal( element.tabs( "option", "selected" ), 2 ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "option", "selected", 0 ); equal( element.tabs( "option", "selected" ), 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.find( ".ui-tabs-nav a" ).eq( 1 ).click(); equal( element.tabs( "option", "selected" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.tabs( "option", "selected", 10 ); equal( element.tabs( "option", "selected" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); location.hash = "#"; }); @@ -236,7 +239,7 @@ asyncTest( "load", function() { strictEqual( ui.tab, tab[ 0 ], "tab" ); strictEqual( ui.panel, panel[ 0 ], "panel" ); equal( $( ui.panel ).find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); tabsload1(); }); element.tabs({ active: 2 }); @@ -252,7 +255,7 @@ asyncTest( "load", function() { strictEqual( ui.tab, tab[ 0 ], "tab" ); strictEqual( ui.panel, panel[ 0 ], "panel" ); equal( $( ui.panel ).find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); tabsload2(); }); element.tabs( "option", "active", 3 ); @@ -269,7 +272,7 @@ asyncTest( "load", function() { strictEqual( ui.tab, tab[ 0 ], "tab" ); strictEqual( ui.panel, panel[ 0 ], "panel" ); equal( $( ui.panel ).find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 0, 0, 1 ); + state( element, 0, 0, 0, 0, 1 ); start(); }); element.find( ".ui-tabs-nav a" ).eq( 4 ).click(); @@ -324,10 +327,10 @@ test( "show", function() { strictEqual( ui.tab, tabs[ 0 ], "ui.tab" ); strictEqual( ui.panel, panels[ 0 ], "ui.panel" ); equal( ui.index, 0, "ui.index" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); // switching tabs element.one( "tabsshow", function( event, ui ) { @@ -335,17 +338,17 @@ test( "show", function() { strictEqual( ui.tab, tabs[ 1 ], "ui.tab" ); strictEqual( ui.panel, panels[ 1 ], "ui.panel" ); equal( ui.index, 1, "ui.index" ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); tabs.eq( 1 ).click(); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // collapsing element.one( "tabsshow", function( event, ui ) { ok( false, "collapsing" ); }); element.tabs( "option", "active", false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "select", function() { @@ -364,10 +367,10 @@ test( "select", function() { strictEqual( ui.tab, tabs[ 0 ], "ui.tab" ); strictEqual( ui.panel, panels[ 0 ], "ui.panel" ); equal( ui.index, 0, "ui.index" ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); // switching tabs element.one( "tabsselect", function( event, ui ) { @@ -375,17 +378,17 @@ test( "select", function() { strictEqual( ui.tab, tabs[ 1 ], "ui.tab" ); strictEqual( ui.panel, panels[ 1 ], "ui.panel" ); equal( ui.index, 1, "ui.index" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); tabs.eq( 1 ).click(); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // collapsing element.one( "tabsselect", function( event, ui ) { ok( false, "collapsing" ); }); element.tabs( "option", "active", false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); module( "tabs (deprecated): methods" ); @@ -393,8 +396,9 @@ module( "tabs (deprecated): methods" ); test( "add", function() { expect( 27 ); - var element = $( "#tabs1" ).tabs(); - tabs_state( element, 1, 0, 0 ); + var tab, anchor, + element = $( "#tabs1" ).tabs(); + state( element, 1, 0, 0 ); // add without index element.one( "tabsadd", function( event, ui ) { @@ -403,9 +407,9 @@ test( "add", function() { equal( ui.panel.id, "new", "ui.panel" ); }); element.tabs( "add", "#new", "New" ); - tabs_state( element, 1, 0, 0, 0 ); - var tab = element.find( ".ui-tabs-nav li" ).last(), - anchor = tab.find( "a" ); + state( element, 1, 0, 0, 0 ); + tab = element.find( ".ui-tabs-nav li" ).last(); + anchor = tab.find( "a" ); equal( tab.text(), "New", "label" ); equal( anchor.attr( "href" ), "#new", "href" ); equal( anchor.attr( "aria-controls" ), "new", "aria-controls" ); @@ -413,7 +417,7 @@ test( "add", function() { anchor.simulate( "mouseover" ); ok( tab.hasClass( "ui-state-hover" ), "hovered" ); anchor.simulate( "click" ); - tabs_state( element, 0, 0, 0, 1 ); + state( element, 0, 0, 0, 1 ); // add remote tab with index element.one( "tabsadd", function( event, ui ) { @@ -422,7 +426,7 @@ test( "add", function() { equal( ui.panel.id, $( ui.tab ).attr( "aria-controls" ), "ui.panel" ); }); element.tabs( "add", "data/test.html", "New Remote", 1 ); - tabs_state( element, 0, 0, 0, 0, 1 ); + state( element, 0, 0, 0, 0, 1 ); tab = element.find( ".ui-tabs-nav li" ).eq( 1 ); anchor = tab.find( "a" ); equal( tab.text(), "New Remote", "label" ); @@ -432,7 +436,7 @@ test( "add", function() { anchor.simulate( "mouseover" ); ok( tab.hasClass( "ui-state-hover" ), "hovered" ); anchor.simulate( "click" ); - tabs_state( element, 0, 1, 0, 0, 0 ); + state( element, 0, 1, 0, 0, 0 ); // add to empty tab set element = $( "<div><ul></ul></div>" ).tabs(); @@ -443,7 +447,7 @@ test( "add", function() { equal( ui.panel.id, "first", "ui.panel" ); }); element.tabs( "add", "#first", "First" ); - tabs_state( element, 1 ); + state( element, 1 ); equal( element.tabs( "option", "active" ), 0, "active: 0 after add" ); }); @@ -460,7 +464,7 @@ test( "remove", function() { expect( 17 ); var element = $( "#tabs1" ).tabs({ active: 1 }); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.one( "tabsremove", function( event, ui ) { equal( ui.index, -1, "ui.index" ); @@ -468,7 +472,7 @@ test( "remove", function() { equal( ui.panel.id, "fragment-2", "ui.panel" ); }); element.tabs( "remove", 1 ); - tabs_state( element, 0, 1 ); + state( element, 0, 1 ); equal( element.tabs( "option", "active" ), 1 ); equal( element.find( ".ui-tabs-nav li a[href$='fragment-2']" ).length, 0, "remove correct list item" ); @@ -480,7 +484,7 @@ test( "remove", function() { equal( ui.panel.id, "fragment-3", "ui.panel" ); }); element.tabs( "remove", 1 ); - tabs_state( element, 1 ); + state( element, 1 ); equal( element.tabs( "option", "active"), 0 ); element.one( "tabsremove", function( event, ui ) { @@ -496,43 +500,43 @@ test( "select", function() { expect( 23 ); var element = $( "#tabs1" ).tabs(); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.tabs( "select", 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); equal( element.tabs( "option", "active" ), 1, "active" ); equal( element.tabs( "option", "selected" ), 1, "selected" ); element.tabs( "destroy" ); element.tabs({ collapsible: true }); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.tabs( "select", 0 ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); equal( element.tabs( "option", "active" ), false, "active" ); equal( element.tabs( "option", "selected" ), -1, "selected" ); element.tabs( "destroy" ); element.tabs({ collapsible: true }); element.tabs( "select", -1 ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); equal( element.tabs( "option", "active" ), false, "active" ); equal( element.tabs( "option", "selected" ), -1, "selected" ); element.tabs( "destroy" ); element.tabs(); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.tabs( "option", "active" ), 0, "active" ); equal( element.tabs( "option", "selected" ), 0, "selected" ); element.tabs( "select", 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.tabs( "option", "active" ), 0, "active" ); equal( element.tabs( "option", "selected" ), 0, "selected" ); element.tabs( "select", -1 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.tabs( "option", "active" ), 0, "active" ); equal( element.tabs( "option", "selected" ), 0, "selected" ); element.tabs( "select", "#fragment-2" ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); equal( element.tabs( "option", "active" ), 1, "active" ); equal( element.tabs( "option", "selected" ), 1, "selected" ); }); diff --git a/tests/unit/tabs/tabs_events.js b/tests/unit/tabs/tabs_events.js index 4f9269b62..3f6ec14d0 100644 --- a/tests/unit/tabs/tabs_events.js +++ b/tests/unit/tabs/tabs_events.js @@ -1,5 +1,7 @@ (function( $ ) { +var state = TestHelpers.tabs.state; + module( "tabs: events" ); test( "create", function() { @@ -60,10 +62,10 @@ test( "beforeActivate", function() { strictEqual( ui.newTab[ 0 ], tabs[ 0 ], "newTab" ); equal( ui.newPanel.size(), 1, "newPanel size" ); strictEqual( ui.newPanel[ 0 ], panels[ 0 ], "newPanel" ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); // switching tabs element.one( "tabsbeforeactivate", function( event, ui ) { @@ -76,10 +78,10 @@ test( "beforeActivate", function() { strictEqual( ui.newTab[ 0 ], tabs[ 1 ], "newTab" ); equal( ui.newPanel.size(), 1, "newPanel size" ); strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); tabs.eq( 1 ).click(); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // collapsing element.one( "tabsbeforeactivate", function( event, ui ) { @@ -90,10 +92,10 @@ test( "beforeActivate", function() { strictEqual( ui.oldPanel[ 0 ], panels[ 1 ], "oldPanel" ); equal( ui.newTab.size(), 0, "newTab size" ); equal( ui.newPanel.size(), 0, "newPanel size" ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); element.tabs( "option", "active", false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); // prevent activation element.one( "tabsbeforeactivate", function( event, ui ) { @@ -105,10 +107,10 @@ test( "beforeActivate", function() { equal( ui.newPanel.size(), 1, "newPanel size" ); strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" ); event.preventDefault(); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.tabs( "option", "active", 1 ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "activate", function() { @@ -130,10 +132,10 @@ test( "activate", function() { strictEqual( ui.newTab[ 0 ], tabs[ 0 ], "newTab" ); equal( ui.newPanel.size(), 1, "newPanel size" ); strictEqual( ui.newPanel[ 0 ], panels[ 0 ], "newPanel" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); // switching tabs element.one( "tabsactivate", function( event, ui ) { @@ -146,10 +148,10 @@ test( "activate", function() { strictEqual( ui.newTab[ 0 ], tabs[ 1 ], "newTab" ); equal( ui.newPanel.size(), 1, "newPanel size" ); strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); tabs.eq( 1 ).click(); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // collapsing element.one( "tabsactivate", function( event, ui ) { @@ -160,10 +162,10 @@ test( "activate", function() { strictEqual( ui.oldPanel[ 0 ], panels[ 1 ], "oldPanel" ); equal( ui.newTab.size(), 0, "newTab size" ); equal( ui.newPanel.size(), 0, "newPanel size" ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); element.tabs( "option", "active", false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); // prevent activation element.one( "tabsbeforeactivate", function( event ) { @@ -197,10 +199,10 @@ test( "beforeLoad", function() { strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); equal( ui.panel.html(), "", "panel html" ); event.preventDefault(); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); }); element.tabs({ active: 2 }); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); equal( panel.html(), "", "panel html after" ); element.tabs( "destroy" ); @@ -219,11 +221,11 @@ test( "beforeLoad", function() { strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); equal( ui.panel.html(), "", "panel html" ); event.preventDefault(); - tabs_state( element, 1, 0, 0, 0, 0 ); + state( element, 1, 0, 0, 0, 0 ); }); element.tabs(); element.tabs( "option", "active", 2 ); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); equal( panel.html(), "", "panel html after" ); // click, change panel content @@ -241,10 +243,10 @@ test( "beforeLoad", function() { strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); ui.panel.html( "<p>testing</p>" ); event.preventDefault(); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); }); element.find( ".ui-tabs-nav a" ).eq( 3 ).click(); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); // .toLowerCase() is needed to convert <P> to <p> in old IEs equal( panel.html().toLowerCase(), "<p>testing</p>", "panel html after" ); }); @@ -268,7 +270,7 @@ if ( $.uiBackCompat === false ) { equal( ui.panel.size(), 1, "panel size" ); strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); equal( ui.panel.find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 1, 0, 0 ); + state( element, 0, 0, 1, 0, 0 ); tabsload1(); }); element.tabs({ active: 2 }); @@ -286,7 +288,7 @@ if ( $.uiBackCompat === false ) { equal( ui.panel.size(), 1, "panel size" ); strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); equal( ui.panel.find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); tabsload2(); }); element.tabs( "option", "active", 3 ); @@ -305,7 +307,7 @@ if ( $.uiBackCompat === false ) { equal( ui.panel.size(), 1, "panel size" ); strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); equal( ui.panel.find( "p" ).length, 1, "panel html" ); - tabs_state( element, 0, 0, 0, 0, 1 ); + state( element, 0, 0, 0, 0, 1 ); start(); }); element.find( ".ui-tabs-nav a" ).eq( 4 ).click(); diff --git a/tests/unit/tabs/tabs_methods.js b/tests/unit/tabs/tabs_methods.js index fee87db96..61ce78189 100644 --- a/tests/unit/tabs/tabs_methods.js +++ b/tests/unit/tabs/tabs_methods.js @@ -1,5 +1,8 @@ (function( $ ) { +var disabled = TestHelpers.tabs.disabled, + state = TestHelpers.tabs.state; + module( "tabs: methods" ); test( "destroy", function() { @@ -12,95 +15,95 @@ test( "enable", function() { expect( 8 ); var element = $( "#tabs1" ).tabs({ disabled: true }); - tabs_disabled( element, true ); + disabled( element, true ); element.tabs( "enable" ); - tabs_disabled( element, false ); + disabled( element, false ); element.tabs( "destroy" ); element.tabs({ disabled: [ 0, 1 ] }); - tabs_disabled( element, [ 0, 1 ] ); + disabled( element, [ 0, 1 ] ); element.tabs( "enable" ); - tabs_disabled( element, false ); + disabled( element, false ); }); test( "enable( index )", function() { expect( 10 ); var element = $( "#tabs1" ).tabs({ disabled: true }); - tabs_disabled( element, true ); + disabled( element, true ); // fully disabled -> partially disabled element.tabs( "enable", 1 ); - tabs_disabled( element, [ 0, 2 ] ); + disabled( element, [ 0, 2 ] ); // partially disabled -> partially disabled element.tabs( "enable", 2 ); - tabs_disabled( element, [ 0 ] ); + disabled( element, [ 0 ] ); // already enabled tab, no change element.tabs( "enable", 2 ); - tabs_disabled( element, [ 0 ] ); + disabled( element, [ 0 ] ); // partially disabled -> fully enabled element.tabs( "enable", 0 ); - tabs_disabled( element, false ); + disabled( element, false ); }); test( "disable", function() { expect( 8 ); var element = $( "#tabs1" ).tabs({ disabled: false }); - tabs_disabled( element, false ); + disabled( element, false ); element.tabs( "disable" ); - tabs_disabled( element, true ); + disabled( element, true ); element.tabs( "destroy" ); element.tabs({ disabled: [ 0, 1 ] }); - tabs_disabled( element, [ 0, 1 ] ); + disabled( element, [ 0, 1 ] ); element.tabs( "disable" ); - tabs_disabled( element, true ); + disabled( element, true ); }); test( "disable( index )", function() { expect( 10 ); var element = $( "#tabs1" ).tabs({ disabled: false }); - tabs_disabled( element, false ); + disabled( element, false ); // fully enabled -> partially disabled element.tabs( "disable", 1 ); - tabs_disabled( element, [ 1 ] ); + disabled( element, [ 1 ] ); // partially disabled -> partially disabled element.tabs( "disable", 2 ); - tabs_disabled( element, [ 1, 2 ] ); + disabled( element, [ 1, 2 ] ); // already disabled tab, no change element.tabs( "disable", 2 ); - tabs_disabled( element, [ 1, 2 ] ); + disabled( element, [ 1, 2 ] ); // partially disabled -> fully disabled element.tabs( "disable", 0 ); - tabs_disabled( element, true ); + disabled( element, true ); }); test( "refresh", function() { expect( 27 ); var element = $( "#tabs1" ).tabs(); - tabs_state( element, 1, 0, 0 ); - tabs_disabled( element, false ); + state( element, 1, 0, 0 ); + disabled( element, false ); // disable tab via markup element.find( ".ui-tabs-nav li" ).eq( 1 ).addClass( "ui-state-disabled" ); element.tabs( "refresh" ); - tabs_state( element, 1, 0, 0 ); - tabs_disabled( element, [ 1 ] ); + state( element, 1, 0, 0 ); + disabled( element, [ 1 ] ); // add remote tab element.find( ".ui-tabs-nav" ).append( "<li id='newTab'><a href='data/test.html'>new</a></li>" ); element.tabs( "refresh" ); - tabs_state( element, 1, 0, 0, 0 ); - tabs_disabled( element, [ 1 ] ); + state( element, 1, 0, 0, 0 ); + disabled( element, [ 1 ] ); equal( element.find( "#" + $( "#newTab a" ).attr( "aria-controls" ) ).length, 1, "panel added for remote tab" ); // remove all tabs element.find( ".ui-tabs-nav li, .ui-tabs-panel" ).remove(); element.tabs( "refresh" ); - tabs_state( element ); + state( element ); equal( element.tabs( "option", "active" ), false, "no active tab" ); // add tabs @@ -115,34 +118,34 @@ test( "refresh", function() { .append( "<div id='newTab4'>new 4</div>" ) .append( "<div id='newTab5'>new 5</div>" ); element.tabs( "refresh" ); - tabs_state( element, 0, 0, 0, 0 ); - tabs_disabled( element, [ 0 ] ); + state( element, 0, 0, 0, 0 ); + disabled( element, [ 0 ] ); // activate third tab element.tabs( "option", "active", 2 ); - tabs_state( element, 0, 0, 1, 0 ); - tabs_disabled( element, [ 0 ] ); + state( element, 0, 0, 1, 0 ); + disabled( element, [ 0 ] ); // remove fourth tab, third tab should stay active element.find( ".ui-tabs-nav li" ).eq( 3 ).remove(); element.find( ".ui-tabs-panel" ).eq( 3 ).remove(); element.tabs( "refresh" ); - tabs_state( element, 0, 0, 1 ); - tabs_disabled( element, [ 0 ] ); + state( element, 0, 0, 1 ); + disabled( element, [ 0 ] ); // remove third (active) tab, second tab should become active element.find( ".ui-tabs-nav li" ).eq( 2 ).remove(); element.find( ".ui-tabs-panel" ).eq( 2 ).remove(); element.tabs( "refresh" ); - tabs_state( element, 0, 1 ); - tabs_disabled( element, [ 0 ] ); + state( element, 0, 1 ); + disabled( element, [ 0 ] ); // remove first tab, previously active tab (now first) should stay active element.find( ".ui-tabs-nav li" ).eq( 0 ).remove(); element.find( ".ui-tabs-panel" ).eq( 0 ).remove(); element.tabs( "refresh" ); - tabs_state( element, 1 ); - tabs_disabled( element, false ); + state( element, 1 ); + disabled( element, false ); }); asyncTest( "load", function() { @@ -162,14 +165,13 @@ asyncTest( "load", function() { strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" ); equal( ui.panel.size(), 1, "panel size" ); strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); - tabs_state( element, 1, 0, 0, 0, 0 ); + state( element, 1, 0, 0, 0, 0 ); }); element.one( "tabsload", function( event, ui ) { // TODO: remove wrapping in 2.0 var uiTab = $( ui.tab ), - uiPanel = $( ui.panel ); - - var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ), + uiPanel = $( ui.panel ), + tab = element.find( ".ui-tabs-nav a" ).eq( 3 ), panelId = tab.attr( "aria-controls" ), panel = $( "#" + panelId ); @@ -179,11 +181,11 @@ asyncTest( "load", function() { equal( uiPanel.size(), 1, "panel size" ); strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" ); equal( uiPanel.find( "p" ).length, 1, "panel html" ); - tabs_state( element, 1, 0, 0, 0, 0 ); + state( element, 1, 0, 0, 0, 0 ); setTimeout( tabsload1, 100 ); }); element.tabs( "load", 3 ); - tabs_state( element, 1, 0, 0, 0, 0 ); + state( element, 1, 0, 0, 0, 0 ); function tabsload1() { // no need to test details of event (tested in events tests) @@ -195,7 +197,7 @@ asyncTest( "load", function() { setTimeout( tabsload2, 100 ); }); element.tabs( "option", "active", 3 ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); } function tabsload2() { @@ -210,14 +212,13 @@ asyncTest( "load", function() { strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" ); equal( ui.panel.size(), 1, "panel size" ); strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); }); element.one( "tabsload", function( event, ui ) { // TODO: remove wrapping in 2.0 var uiTab = $( ui.tab ), - uiPanel = $( ui.panel ); - - var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ), + uiPanel = $( ui.panel ), + tab = element.find( ".ui-tabs-nav a" ).eq( 3 ), panelId = tab.attr( "aria-controls" ), panel = $( "#" + panelId ); @@ -226,11 +227,11 @@ asyncTest( "load", function() { strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" ); equal( uiPanel.size(), 1, "panel size" ); strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); start(); }); element.tabs( "load", 3 ); - tabs_state( element, 0, 0, 0, 1, 0 ); + state( element, 0, 0, 0, 1, 0 ); } }); diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js index e1ebf5efa..40d4ceaa7 100644 --- a/tests/unit/tabs/tabs_options.js +++ b/tests/unit/tabs/tabs_options.js @@ -1,5 +1,8 @@ (function( $ ) { +var disabled = TestHelpers.tabs.disabled, + state = TestHelpers.tabs.state; + module( "tabs: options" ); test( "{ active: default }", function() { @@ -7,13 +10,13 @@ test( "{ active: default }", function() { var element = $( "#tabs1" ).tabs(); equal( element.tabs( "option", "active" ), 0, "should be 0 by default" ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.tabs( "destroy" ); location.hash = "#fragment-3"; element = $( "#tabs1" ).tabs(); equal( element.tabs( "option", "active" ), 2, "should be 2 based on URL" ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "destroy" ); location.hash = "#"; }); @@ -25,19 +28,19 @@ test( "{ active: false }", function() { active: false, collapsible: true }); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); equal( element.find( ".ui-tabs-nav .ui-state-active" ).size(), 0, "no tabs selected" ); strictEqual( element.tabs( "option", "active" ), false ); element.tabs( "option", "collapsible", false ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); equal( element.tabs( "option", "active" ), 0 ); element.tabs( "destroy" ); element.tabs({ active: false }); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); strictEqual( element.tabs( "option", "active" ), 0 ); }); @@ -48,19 +51,19 @@ test( "{ active: Number }", function() { active: 2 }); equal( element.tabs( "option", "active" ), 2 ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "option", "active", 0 ); equal( element.tabs( "option", "active" ), 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.find( ".ui-tabs-nav a" ).eq( 1 ).click(); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.tabs( "option", "active", 10 ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); if ( $.uiBackCompat === false ) { @@ -69,19 +72,19 @@ if ( $.uiBackCompat === false ) { active: -1 }); equal( element.tabs( "option", "active" ), 2 ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "option", "active", -2 ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.tabs( "option", "active", -10 ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.tabs( "option", "active", -3 ); equal( element.tabs( "option", "active" ), 0 ); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); }); } @@ -91,9 +94,9 @@ test( "active - mismatched tab/panel order", function() { location.hash = "#tabs7-2"; var element = $( "#tabs7" ).tabs(); equal( element.tabs( "option", "active" ), 1, "should be 1 based on URL" ); - tabs_state( element, 0, 1 ); + state( element, 0, 1 ); element.tabs( "option", "active", 0 ); - tabs_state( element, 1, 0 ); + state( element, 1, 0 ); location.hash = "#"; }); @@ -105,11 +108,11 @@ test( "{ collapsible: false }", function() { }); element.tabs( "option", "active", false ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-state-active a" ).eq( 1 ).click(); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ collapsible: true }", function() { @@ -122,15 +125,15 @@ test( "{ collapsible: true }", function() { element.tabs( "option", "active", false ); equal( element.tabs( "option", "active" ), false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); element.tabs( "option", "active", 1 ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-state-active a" ).click(); equal( element.tabs( "option", "active" ), false ); - tabs_state( element, 0, 0, 0 ); + state( element, 0, 0, 0 ); }); test( "disabled", function() { @@ -138,23 +141,23 @@ test( "disabled", function() { // fully enabled by default var element = $( "#tabs1" ).tabs(); - tabs_disabled( element, false ); + disabled( element, false ); // disable single tab element.tabs( "option", "disabled", [ 1 ] ); - tabs_disabled( element, [ 1 ] ); + disabled( element, [ 1 ] ); // disabled active tab element.tabs( "option", "disabled", [ 0, 1 ] ); - tabs_disabled( element, [ 0, 1 ] ); + disabled( element, [ 0, 1 ] ); // disable all tabs element.tabs( "option", "disabled", [ 0, 1, 2 ] ); - tabs_disabled( element, true ); + disabled( element, true ); // enable all tabs element.tabs( "option", "disabled", [] ); - tabs_disabled( element, false ); + disabled( element, false ); }); test( "{ event: null }", function() { @@ -163,16 +166,16 @@ test( "{ event: null }", function() { var element = $( "#tabs1" ).tabs({ event: null }); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.tabs( "option", "active", 1 ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // ensure default click handler isn't bound element.find( ".ui-tabs-nav a" ).eq( 2 ).click(); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); test( "{ event: custom }", function() { @@ -181,31 +184,31 @@ test( "{ event: custom }", function() { var element = $( "#tabs1" ).tabs({ event: "custom1 custom2" }); - tabs_state( element, 1, 0, 0 ); + state( element, 1, 0, 0 ); element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); // ensure default click handler isn't bound element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "click" ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "custom2" ); equal( element.tabs( "option", "active" ), 2 ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.tabs( "option", "event", "custom3" ); // ensure old event handlers are unbound element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" ); equal( element.tabs( "option", "active" ), 2 ); - tabs_state( element, 0, 0, 1 ); + state( element, 0, 0, 1 ); element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom3" ); equal( element.tabs( "option", "active" ), 1 ); - tabs_state( element, 0, 1, 0 ); + state( element, 0, 1, 0 ); }); // TODO: add animation tests diff --git a/tests/unit/tabs/tabs_test_helpers.js b/tests/unit/tabs/tabs_test_helpers.js new file mode 100644 index 000000000..9f592c074 --- /dev/null +++ b/tests/unit/tabs/tabs_test_helpers.js @@ -0,0 +1,61 @@ +TestHelpers.tabs = { + disabled: function( tabs, state ) { + var expected, actual, + internalState = tabs.tabs( "option", "disabled" ); + + if ( internalState === false ) { + internalState = []; + } + if ( internalState === true ) { + internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) { + return index; + }); + } + + expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) { + if ( typeof state === "boolean" ) { + return state ? 1 : 0; + } else { + return $.inArray( index, state ) !== -1 ? 1 : 0; + } + }); + + actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) { + var tab = $( this ), + tabIsDisabled = tab.hasClass( "ui-state-disabled" ); + + if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) { + return 1; + } + if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) { + return 0; + } + // mixed state - invalid + return -1; + }).get(); + + deepEqual( tabs.tabs( "option", "disabled" ), state ); + deepEqual( actual, expected ); + }, + + state: function( tabs ) { + var expected = $.makeArray( arguments ).slice( 1 ), + actual = tabs.find( ".ui-tabs-nav li" ).map(function() { + var tab = $( this ), + panel = $( $.ui.tabs.prototype._sanitizeSelector( + "#" + tab.find( "a" ).attr( "aria-controls" ) ) ), + tabIsActive = tab.hasClass( "ui-state-active" ), + panelIsActive = panel.css( "display" ) !== "none"; + + if ( tabIsActive && panelIsActive ) { + return 1; + } + if ( !tabIsActive && !panelIsActive ) { + return 0; + } + return -1; // mixed state - invalid + }).get(); + deepEqual( actual, expected ); + } +}; + diff --git a/tests/unit/testsuite.js b/tests/unit/testsuite.js index d37e27f7b..a877e38af 100644 --- a/tests/unit/testsuite.js +++ b/tests/unit/testsuite.js @@ -1,5 +1,7 @@ (function() { +window.TestHelpers = {}; + function testWidgetDefaults( widget, defaults ) { var pluginDefaults = $.ui[ widget ].prototype.options; @@ -54,7 +56,7 @@ function testBasicUsage( widget ) { }); } -window.commonWidgetTests = function( widget, settings ) { +TestHelpers.commonWidgetTests = function( widget, settings ) { module( widget + ": common widget" ); testWidgetDefaults( widget, settings.defaults ); @@ -63,7 +65,7 @@ window.commonWidgetTests = function( widget, settings ) { test( "version", function() { ok( "version" in $.ui[ widget ].prototype, "version property exists" ); }); -} +}; /* * Experimental assertion for comparing DOM objects. @@ -72,20 +74,22 @@ window.commonWidgetTests = function( widget, settings ) { * Then compares the result using deepEqual. */ window.domEqual = function( selector, modifier, message ) { - var attributes = ["class", "role", "id", "tabIndex", "aria-activedescendant"]; + var expected, actual, + 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 = {}; + var children, + result = {}; result.nodeName = value[0].nodeName; $.each(attributes, function(index, attr) { result[attr] = value.prop(attr); }); result.children = []; - var children = value.children(); + children = value.children(); if (children.length) { children.each(function() { result.children.push(extract($(this))); @@ -95,11 +99,11 @@ window.domEqual = function( selector, modifier, message ) { } return result; } - var expected = extract($(selector)); - modifier($(selector)); + expected = extract( $( selector ) ); + modifier( $( selector ) ); - var actual = extract($(selector)); + actual = extract( $( selector ) ); QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); -} +}; }()); diff --git a/tests/unit/tooltip/tooltip_defaults.js b/tests/unit/tooltip/tooltip_defaults.js index b8b41bf47..d12ee9519 100644 --- a/tests/unit/tooltip/tooltip_defaults.js +++ b/tests/unit/tooltip/tooltip_defaults.js @@ -1,4 +1,4 @@ -commonWidgetTests( "tooltip", { +TestHelpers.commonWidgetTests( "tooltip", { defaults: { content: function() {}, disabled: false, diff --git a/tests/unit/tooltip/tooltip_methods.js b/tests/unit/tooltip/tooltip_methods.js index 3e8256c50..eaab1c0d1 100644 --- a/tests/unit/tooltip/tooltip_methods.js +++ b/tests/unit/tooltip/tooltip_methods.js @@ -16,11 +16,12 @@ test( "destroy", function() { test( "open/close", function() { expect( 3 ); $.fx.off = true; - var element = $( "#tooltipped1" ).tooltip(); + var tooltip, + element = $( "#tooltipped1" ).tooltip(); equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); element.tooltip( "open" ); - var tooltip = $( "#" + element.attr( "aria-describedby" ) ); + tooltip = $( "#" + element.attr( "aria-describedby" ) ); ok( tooltip.is( ":visible" ) ); element.tooltip( "close" ); @@ -31,11 +32,12 @@ test( "open/close", function() { test( "enable/disable", function() { expect( 7 ); $.fx.off = true; - var element = $( "#tooltipped1" ).tooltip(); + var tooltip, + element = $( "#tooltipped1" ).tooltip(); equal( $( ".ui-tooltip" ).length, 0, "no tooltip on init" ); element.tooltip( "open" ); - var tooltip = $( "#" + element.attr( "aria-describedby" ) ); + tooltip = $( "#" + element.attr( "aria-describedby" ) ); ok( tooltip.is( ":visible" ) ); element.tooltip( "disable" ); diff --git a/tests/unit/tooltip/tooltip_options.js b/tests/unit/tooltip/tooltip_options.js index 42529e087..4f994f8de 100644 --- a/tests/unit/tooltip/tooltip_options.js +++ b/tests/unit/tooltip/tooltip_options.js @@ -45,11 +45,12 @@ asyncTest( "content: sync + async callback", function() { test( "items", function() { expect( 2 ); - var element = $( "#qunit-fixture" ).tooltip({ - items: "#fixture-span" - }); + var event, + element = $( "#qunit-fixture" ).tooltip({ + items: "#fixture-span" + }); - var event = $.Event( "mouseenter" ); + event = $.Event( "mouseenter" ); event.target = $( "#fixture-span" )[ 0 ]; element.tooltip( "open", event ); deepEqual( $( "#" + $( "#fixture-span" ).attr( "aria-describedby" ) ).text(), "title-text" ); @@ -63,7 +64,7 @@ test( "items", function() { }); test( "tooltipClass", function() { - expect( 1 ) + expect( 1 ); var element = $( "#tooltipped1" ).tooltip({ tooltipClass: "custom" }).tooltip( "open" ); diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index e104d4ae9..38495e282 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -84,7 +84,8 @@ test( "custom selector expression", function() { test( "jQuery usage", function() { expect( 16 ); - var shouldCreate = false; + var elem, instance, ret, bcInstance, + shouldCreate = false; $.widget( "ui.testWidget", { getterSetterVal: 5, @@ -113,22 +114,22 @@ test( "jQuery usage", function() { }); shouldCreate = true; - var elem = $( "<div>" ) + elem = $( "<div>" ) .bind( "testwidgetcreate", function() { ok( shouldCreate, "create event triggered on instantiation" ); }) .testWidget(); shouldCreate = false; - var instance = elem.data( "ui-testWidget" ); + instance = elem.data( "ui-testWidget" ); equal( typeof instance, "object", "instance stored in .data(pluginName)" ); equal( instance.element[0], elem[0], "element stored on widget" ); - var ret = elem.testWidget( "methodWithParams", "value1", "value2" ); + ret = elem.testWidget( "methodWithParams", "value1", "value2" ); equal( ret, elem, "jQuery object returned from method call" ); // 1.9 BC for #7810 // TODO remove - var bcInstance = elem.data("testWidget"); + bcInstance = elem.data("testWidget"); equal( typeof bcInstance, "object", "instance stored in .data(pluginName)" ); equal( bcInstance.element[0], elem[0], "element stored on widget" ); @@ -148,7 +149,8 @@ test( "jQuery usage", function() { test( "direct usage", function() { expect( 9 ); - var shouldCreate = false; + var elem, instance, ret, + shouldCreate = false; $.widget( "ui.testWidget", { getterSetterVal: 5, @@ -171,17 +173,17 @@ test( "direct usage", function() { } }); - var elem = $( "<div>" )[ 0 ]; + elem = $( "<div>" )[ 0 ]; shouldCreate = true; - var instance = new $.ui.testWidget( {}, elem ); + instance = new $.ui.testWidget( {}, elem ); shouldCreate = false; equal( $( elem ).data( "ui-testWidget" ), instance, "instance stored in .data(pluginName)" ); equal( instance.element[ 0 ], elem, "element stored on widget" ); - var ret = instance.methodWithParams( "value1", "value2" ); + ret = instance.methodWithParams( "value1", "value2" ); equal( ret, instance, "plugin returned from method call" ); ret = instance.getterSetterMethod(); @@ -439,11 +441,12 @@ test( ".option() - getter", function() { _create: function() {} }); - var div = $( "<div>" ).testWidget({ - foo: "bar", - baz: 5, - qux: [ "quux", "quuux" ] - }); + var options, + div = $( "<div>" ).testWidget({ + foo: "bar", + baz: 5, + qux: [ "quux", "quuux" ] + }); deepEqual( div.testWidget( "option", "x" ), null, "non-existent option" ); deepEqual( div.testWidget( "option", "foo"), "bar", "single option - string" ); @@ -451,7 +454,7 @@ test( ".option() - getter", function() { deepEqual( div.testWidget( "option", "qux"), [ "quux", "quuux" ], "single option - array" ); - var options = div.testWidget( "option" ); + options = div.testWidget( "option" ); deepEqual( options, { create: null, disabled: false, @@ -483,14 +486,15 @@ test( ".option() - deep option getter", function() { }); test( ".option() - delegate to ._setOptions()", function() { - var calls = []; + var div, + calls = []; $.widget( "ui.testWidget", { _create: function() {}, _setOptions: function( options ) { calls.push( options ); } }); - var div = $( "<div>" ).testWidget(); + div = $( "<div>" ).testWidget(); calls = []; div.testWidget( "option", "foo", "bar" ); @@ -506,7 +510,8 @@ test( ".option() - delegate to ._setOptions()", function() { }); test( ".option() - delegate to ._setOption()", function() { - var calls = []; + var div, + calls = []; $.widget( "ui.testWidget", { _create: function() {}, _setOption: function( key, val ) { @@ -516,7 +521,7 @@ test( ".option() - delegate to ._setOption()", function() { }); } }); - var div = $( "<div>" ).testWidget(); + div = $( "<div>" ).testWidget(); calls = []; div.testWidget( "option", "foo", "bar" ); @@ -603,7 +608,7 @@ test( ".widget() - overriden", function() { test( "._bind() to element (default)", function() { expect( 12 ); - var that; + var that, widget; $.widget( "ui.testWidget", { _create: function() { that = this; @@ -623,7 +628,7 @@ test( "._bind() to element (default)", function() { equal( "keydown", event.type ); } }); - var widget = $( "<div></div>" ) + widget = $( "<div></div>" ) .testWidget() .trigger( "keyup" ) .trigger( "keydown" ); @@ -643,7 +648,7 @@ test( "._bind() to element (default)", function() { test( "._bind() to descendent", function() { expect( 12 ); - var that; + var that, widget, descendant; $.widget( "ui.testWidget", { _create: function() { that = this; @@ -664,28 +669,28 @@ test( "._bind() to descendent", function() { } }); // trigger events on both widget and descendent to ensure that only descendent receives them - var widget = $( "<div><p><strong>hello</strong> world</p></div>" ) + widget = $( "<div><p><strong>hello</strong> world</p></div>" ) .testWidget() .trigger( "keyup" ) .trigger( "keydown" ); - var descendent = widget.find( "strong" ) + descendant = widget.find( "strong" ) .trigger( "keyup" ) .trigger( "keydown" ); widget .testWidget( "disable" ) .trigger( "keyup" ) .trigger( "keydown" ); - descendent + descendant .trigger( "keyup" ) .trigger( "keydown" ); widget .testWidget( "enable" ) .trigger( "keyup" ) .trigger( "keydown" ); - descendent + descendant .trigger( "keyup" ) .trigger( "keydown" ); - descendent + descendant .addClass( "ui-state-disabled" ) .trigger( "keyup" ) .trigger( "keydown" ); @@ -693,7 +698,7 @@ test( "._bind() to descendent", function() { .testWidget( "destroy" ) .trigger( "keyup" ) .trigger( "keydown" ); - descendent + descendant .trigger( "keyup" ) .trigger( "keydown" ); }); @@ -942,10 +947,10 @@ test( "._trigger() - array as ui", function() { qux: 5, quux: 20 } + }, + extra = { + bar: 5 }; - var extra = { - bar: 5 - }; this._trigger( "foo", null, [ ui, extra ] ); } }); @@ -983,8 +988,7 @@ test( "._trigger() - instance as element", function() { $.widget( "ui.testWidget", { defaultElement: null, testEvent: function() { - var ui = { foo: "bar" }; - this._trigger( "foo", null, ui ); + this._trigger( "foo", null, { foo: "bar" } ); } }); var instance = $.ui.testWidget({ diff --git a/tests/unit/widget/widget_extend.js b/tests/unit/widget/widget_extend.js index 90e686e18..ae9855929 100644 --- a/tests/unit/widget/widget_extend.js +++ b/tests/unit/widget/widget_extend.js @@ -1,7 +1,9 @@ test( "$.widget.extend()", function() { expect( 26 ); - var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, + var ret, empty, optionsWithLength, optionsWithDate, myKlass, customObject, optionsWithCustomObject, nullUndef, + target, recursive, obj, input, output, + settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, options = { xnumber2: 1, xstring2: "x", xxx: "newstring" }, optionsCopy = { xnumber2: 1, xstring2: "x", xxx: "newstring" }, merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" }, @@ -11,7 +13,13 @@ test( "$.widget.extend()", function() { deepmerged = { foo: { bar: true, baz: true }, foo2: document }, arr = [1, 2, 3], nestedarray = { arr: arr }, - ret; + defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, + defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, + options1 = { xnumber2: 1, xstring2: "x" }, + options1Copy = { xnumber2: 1, xstring2: "x" }, + options2 = { xstring2: "xx", xxx: "newstringx" }, + options2Copy = { xstring2: "xx", xxx: "newstringx" }, + merged2 = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "xx", xxx: "newstringx" }; $.widget.extend( settings, options ); deepEqual( settings, merged, "Check if extended: settings must be extended" ); @@ -25,19 +33,19 @@ test( "$.widget.extend()", function() { strictEqual( $.widget.extend({}, nestedarray).arr, arr, "Don't clone arrays" ); ok( $.isPlainObject( $.widget.extend({ arr: arr }, { arr: {} }).arr ), "Cloned object heve to be an plain object" ); - var empty = {}; - var optionsWithLength = { foo: { length: -1 } }; + empty = {}; + optionsWithLength = { foo: { length: -1 } }; $.widget.extend( empty, optionsWithLength ); deepEqual( empty.foo, optionsWithLength.foo, "The length property must copy correctly" ); empty = {}; - var optionsWithDate = { foo: { date: new Date } }; + optionsWithDate = { foo: { date: new Date() } }; $.widget.extend( empty, optionsWithDate ); deepEqual( empty.foo, optionsWithDate.foo, "Dates copy correctly" ); - var myKlass = function() {}; - var customObject = new myKlass(); - var optionsWithCustomObject = { foo: { date: customObject } }; + myKlass = function() {}; + customObject = new myKlass(); + optionsWithCustomObject = { foo: { date: customObject } }; empty = {}; $.widget.extend( empty, optionsWithCustomObject ); strictEqual( empty.foo.date, customObject, "Custom objects copy correctly (no methods)" ); @@ -48,10 +56,9 @@ test( "$.widget.extend()", function() { $.widget.extend( empty, optionsWithCustomObject ); strictEqual( empty.foo.date, customObject, "Custom objects copy correctly" ); - ret = $.widget.extend({ foo: 4 }, { foo: new Number(5) } ); + ret = $.widget.extend({ foo: 4 }, { foo: Number(5) } ); equal( ret.foo, 5, "Wrapped numbers copy correctly" ); - var nullUndef; nullUndef = $.widget.extend( {}, options, { xnumber2: null } ); strictEqual( nullUndef.xnumber2, null, "Check to make sure null values are copied"); @@ -61,8 +68,8 @@ test( "$.widget.extend()", function() { nullUndef = $.widget.extend( {}, options, { xnumber0: null } ); strictEqual( nullUndef.xnumber0, null, "Check to make sure null values are inserted"); - var target = {}; - var recursive = { foo:target, bar:5 }; + target = {}; + recursive = { foo:target, bar:5 }; $.widget.extend( target, recursive ); deepEqual( target, { foo: {}, bar: 5 }, "Check to make sure a recursive obj doesn't go never-ending loop by not copying it over" ); @@ -75,28 +82,20 @@ test( "$.widget.extend()", function() { ret = $.widget.extend( { foo:"bar" }, { foo:null } ); strictEqual( typeof ret.foo, "object", "Make sure a null value doesn't crash with deep extend, for #1908" ); - var obj = { foo:null }; + obj = { foo:null }; $.widget.extend( obj, { foo:"notnull" } ); equal( obj.foo, "notnull", "Make sure a null value can be overwritten" ); - var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, - defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, - options1 = { xnumber2: 1, xstring2: "x" }, - options1Copy = { xnumber2: 1, xstring2: "x" }, - options2 = { xstring2: "xx", xxx: "newstringx" }, - options2Copy = { xstring2: "xx", xxx: "newstringx" }, - merged2 = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "xx", xxx: "newstringx" }; - - var settings = $.widget.extend( {}, defaults, options1, options2 ); + settings = $.widget.extend( {}, defaults, options1, options2 ); deepEqual( settings, merged2, "Check if extended: settings must be extended" ); deepEqual( defaults, defaultsCopy, "Check if not modified: options1 must not be modified" ); deepEqual( options1, options1Copy, "Check if not modified: options1 must not be modified" ); deepEqual( options2, options2Copy, "Check if not modified: options2 must not be modified" ); - var input = { + input = { key: [ 1, 2, 3 ] }; - var output = $.widget.extend( {}, input ); + output = $.widget.extend( {}, input ); deepEqual( input, output, "don't clone arrays" ); input.key[0] = 10; deepEqual( input, output, "don't clone arrays" ); diff --git a/tests/visual/menu/menu.html b/tests/visual/menu/menu.html index d67083663..e62e18ae5 100644 --- a/tests/visual/menu/menu.html +++ b/tests/visual/menu/menu.html @@ -118,7 +118,7 @@ <li class="ui-state-disabled"><a href="#"><span class="ui-icon ui-icon-scissors"></span>Ada</a></li> <li><a href="#">Adamsville</a></li> <li><a href="#"><span class="ui-icon ui-icon-wrench"></span>Addyston</a></li> - <li> + <li class="ui-state-disabled"> <a href="#">Delphi</a> <ul> <li><a href="#">Ada</a></li> |