From 40a9d1dfdb6a341904ae7bcd4600b0ef201d14df Mon Sep 17 00:00:00 2001 From: Alexander Schmitz Date: Fri, 22 Aug 2014 23:39:35 -0400 Subject: Controlgroup: Inital commit of new widget This widget replaces the buttonset widget --- tests/unit/controlgroup/common.js | 26 +++++ tests/unit/controlgroup/controlgroup.html | 39 +++++++ tests/unit/controlgroup/controlgroup_core.js | 77 ++++++++++++++ tests/unit/controlgroup/core.js | 69 ++++++++++++ tests/unit/controlgroup/methods.js | 150 +++++++++++++++++++++++++++ tests/unit/controlgroup/options.js | 108 +++++++++++++++++++ 6 files changed, 469 insertions(+) create mode 100644 tests/unit/controlgroup/common.js create mode 100644 tests/unit/controlgroup/controlgroup.html create mode 100644 tests/unit/controlgroup/core.js create mode 100644 tests/unit/controlgroup/methods.js create mode 100644 tests/unit/controlgroup/options.js (limited to 'tests/unit/controlgroup') diff --git a/tests/unit/controlgroup/common.js b/tests/unit/controlgroup/common.js new file mode 100644 index 000000000..421e92e71 --- /dev/null +++ b/tests/unit/controlgroup/common.js @@ -0,0 +1,26 @@ +define( [ + "lib/common", + "ui/controlgroup", + "ui/checkboxradio", + "ui/selectmenu", + "ui/button" +], function( common ) { + +common.testWidget( "controlgroup", { + defaults: { + disabled: null, + items: { + "button": "input[type=button], input[type=submit], input[type=reset], button, a", + "checkboxradio": "input[type='checkbox'], input[type='radio']", + "selectmenu": "select" + }, + direction: "horizontal", + excludeInvisible: true, + classes: {}, + + // Callbacks + create: null + } +}); + +} ); diff --git a/tests/unit/controlgroup/controlgroup.html b/tests/unit/controlgroup/controlgroup.html new file mode 100644 index 000000000..df77ed64d --- /dev/null +++ b/tests/unit/controlgroup/controlgroup.html @@ -0,0 +1,39 @@ + + + + + jQuery UI Controlgroup Test Suite + + + + + + + +
+
+
+ + + + + +
+ + +
+
+ + diff --git a/tests/unit/controlgroup/controlgroup_core.js b/tests/unit/controlgroup/controlgroup_core.js index e69de29bb..2177c767b 100644 --- a/tests/unit/controlgroup/controlgroup_core.js +++ b/tests/unit/controlgroup/controlgroup_core.js @@ -0,0 +1,77 @@ +module( "Controlgroup: Core" ); + +function hasCornerClass( element ) { + return !!element.attr( "class" ).match( /ui-corner/g ); +} + +test( "selectmenu: open/close corners", function( assert ) { + expect( 1 ); + var element = $( ".controlgroup" ).controlgroup(), + selects = element.find( "select" ), + selectButton = selects.eq( 0 ).selectmenu( "widget" ); + + expect( 12 ); + + selects.eq( 0 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-tl", + "Horizontal: First selectmenu gets ui-corner-tl when opened" ); + + selects.eq( 0 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-left", + "Horizontal: First selectmenu gets ui-corner-left when closed" ); + + selectButton = selects.eq( 1 ).selectmenu( "widget" ); + selects.eq( 1 ).selectmenu( "open" ); + strictEqual( hasCornerClass( selectButton ), false, + "Horizontal: Middle selectmenu does not get corner class when opened" ); + + selects.eq( 1 ).selectmenu( "close" ); + strictEqual( hasCornerClass( selectButton ), false, + "Horizontal: Middle selectmenu does not get corner class when closed" ); + + selectButton = selects.eq( 2 ).selectmenu( "widget" ); + selects.eq( 2 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-tr", + "Horizontal: Last selectmenu gets ui-corner-tr when opened" ); + + selects.eq( 2 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-right", + "Horizontal: Last selectmenu gets ui-corner-right when closed" ); + + element.controlgroup( "option", "direction", "vertical" ); + selectButton = selects.eq( 0 ).selectmenu( "widget" ); + selects.eq( 0 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-top", + "vertical: First selectmenu gets ui-corner-top when opened" ); + + selects.eq( 0 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-top", + "vertical: First selectmenu gets ui-corner-top when closed" ); + + selectButton = selects.eq( 1 ).selectmenu( "widget" ); + selects.eq( 1 ).selectmenu( "open" ); + strictEqual( hasCornerClass( selectButton ), false, + "vertical: Middle selectmenu does not get corner class when opened" ); + + selects.eq( 1 ).selectmenu( "close" ); + strictEqual( hasCornerClass( selectButton ), false, + "vertical: Middle selectmenu does not get corner class when closed" ); + + selectButton = selects.eq( 2 ).selectmenu( "widget" ); + selects.eq( 2 ).selectmenu( "open" ); + strictEqual( hasCornerClass( selectButton ), false, + "vertical: Last selectmenu does not get corner class when opened" ); + + selects.eq( 2 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-bottom", + "vertical: Last selectmenu gets ui-corner-bottom when closed" ); +}); +test( "invisibles excluded from corner classes", function( assert ) { + expect( 2 ); + var element = $( ".controlgroup" ).controlgroup(), + buttons = element.children( ".ui-button" ); + strictEqual( hasCornerClass( buttons.eq( 0 ) ), false, + "ExcludeInvisible: true: Hidden first element does not get a corner class" ); + assert.hasClasses( buttons.eq( 1 ), "ui-corner-left", + "ExcludeInvisible: true: First button is hidden second button get corner class" ); +}); \ No newline at end of file diff --git a/tests/unit/controlgroup/core.js b/tests/unit/controlgroup/core.js new file mode 100644 index 000000000..f84136b2f --- /dev/null +++ b/tests/unit/controlgroup/core.js @@ -0,0 +1,69 @@ +define( [ + "jquery", + "ui/controlgroup", + "ui/checkboxradio", + "ui/selectmenu", + "ui/button" +], function( $ ) { + +module( "Controlgroup: Core" ); + +test( "selectmenu: open/close corners", function( assert ) { + expect( 1 ); + var element = $( ".controlgroup" ).controlgroup(), + selects = element.find( "select" ), + selectButton = selects.eq( 0 ).selectmenu( "widget" ); + + expect( 12 ); + + selects.eq( 0 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-tl", + "Horizontal: First selectmenu gets ui-corner-tl when opened" ); + + selects.eq( 0 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-left", + "Horizontal: First selectmenu gets ui-corner-left when closed" ); + + selectButton = selects.eq( 1 ).selectmenu( "widget" ); + selects.eq( 1 ).selectmenu( "open" ); + assert.lacksClassStart( selectButton, "ui-corner" ); + + selects.eq( 1 ).selectmenu( "close" ); + assert.lacksClassStart( selectButton, "ui-corner" ); + + selectButton = selects.eq( 2 ).selectmenu( "widget" ); + selects.eq( 2 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-tr", + "Horizontal: Last selectmenu gets ui-corner-tr when opened" ); + + selects.eq( 2 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-right", + "Horizontal: Last selectmenu gets ui-corner-right when closed" ); + + element.controlgroup( "option", "direction", "vertical" ); + selectButton = selects.eq( 0 ).selectmenu( "widget" ); + selects.eq( 0 ).selectmenu( "open" ); + assert.hasClasses( selectButton, "ui-corner-top", + "vertical: First selectmenu gets ui-corner-top when opened" ); + + selects.eq( 0 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-top", + "vertical: First selectmenu gets ui-corner-top when closed" ); + + selectButton = selects.eq( 1 ).selectmenu( "widget" ); + selects.eq( 1 ).selectmenu( "open" ); + assert.lacksClassStart( selectButton, "ui-corner" ); + + selects.eq( 1 ).selectmenu( "close" ); + assert.lacksClassStart( selectButton, "ui-corner" ); + + selectButton = selects.eq( 2 ).selectmenu( "widget" ); + selects.eq( 2 ).selectmenu( "open" ); + assert.lacksClassStart( selectButton, "ui-corner" ); + + selects.eq( 2 ).selectmenu( "close" ); + assert.hasClasses( selectButton, "ui-corner-bottom", + "vertical: Last selectmenu gets ui-corner-bottom when closed" ); +}); + +} ); diff --git a/tests/unit/controlgroup/methods.js b/tests/unit/controlgroup/methods.js new file mode 100644 index 000000000..c691e4c46 --- /dev/null +++ b/tests/unit/controlgroup/methods.js @@ -0,0 +1,150 @@ +define( [ + "jquery", + "ui/controlgroup", + "ui/checkboxradio", + "ui/selectmenu", + "ui/button" +], function( $ ) { + +module( "Controlgroup: methods" ); + +test( "destroy", function( assert ) { + expect( 1 ); + assert.domEqual( ".controlgroup", function() { + $( ".controlgroup" ).controlgroup().controlgroup( "destroy" ); + }); +}); +test( "disable", function( assert ) { + expect( 2 ); + var element = $( ".controlgroup" ).controlgroup().controlgroup( "disable" ); + assert.lacksClasses( element, "ui-state-disabled", + "The widget does not get the disabled class, because we disable each child widget" ); + strictEqual( element.find( ".ui-state-disabled" ).length, 6, + "Child widgets are disabled" ); +}); + +test( "enable", function( assert ) { + expect( 2 ); + var element = $( ".controlgroup" ).controlgroup().controlgroup( "enable" ); + assert.lacksClasses( element, "ui-state-disabled", + "ui-state-disabled is not present on widget after enabling" ); + strictEqual( element.find( "ui-state-disabled" ).length, 0, + "Child widgets are disabled" ); +}); + +var tests = { + "checkboxradio": "", + "selectmenu": "", + "button": "