aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/datepicker/methods.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/datepicker/methods.js')
-rw-r--r--tests/unit/datepicker/methods.js224
1 files changed, 103 insertions, 121 deletions
diff --git a/tests/unit/datepicker/methods.js b/tests/unit/datepicker/methods.js
index 4fc0c84ec..7061a23c3 100644
--- a/tests/unit/datepicker/methods.js
+++ b/tests/unit/datepicker/methods.js
@@ -1,134 +1,116 @@
define( [
"qunit",
"jquery",
- "./helper",
+ "../calendar/helper",
"ui/widgets/datepicker"
], function( QUnit, $, testHelper ) {
-QUnit.module( "datepicker: methods" );
+QUnit.module( "datepicker: methods", {
+ beforeEach: function() {
+ this.element = $( "#datepicker" ).datepicker( { show: false, hide: false } );
+ this.widget = this.element.datepicker( "widget" );
+ },
+ afterEach: function() {
+ this.element.datepicker( "destroy" ).val( "" );
+ }
+} );
QUnit.test( "destroy", function( assert ) {
- assert.expect( 33 );
- var inl,
- inp = testHelper.init( "#inp" );
- assert.ok( inp.is( ".hasDatepicker" ), "Default - marker class set" );
- assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Default - instance present" );
- assert.ok( inp.next().is( "#alt" ), "Default - button absent" );
- inp.datepicker( "destroy" );
- inp = $( "#inp" );
- assert.ok( !inp.is( ".hasDatepicker" ), "Default - marker class cleared" );
- assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Default - instance absent" );
- assert.ok( inp.next().is( "#alt" ), "Default - button absent" );
-
- // With button
- inp = testHelper.init( "#inp", { showOn: "both" } );
- assert.ok( inp.is( ".hasDatepicker" ), "Button - marker class set" );
- assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Button - instance present" );
- assert.ok( inp.next().text() === "...", "Button - button added" );
- inp.datepicker( "destroy" );
- inp = $( "#inp" );
- assert.ok( !inp.is( ".hasDatepicker" ), "Button - marker class cleared" );
- assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Button - instance absent" );
- assert.ok( inp.next().is( "#alt" ), "Button - button removed" );
-
- // With append text
- inp = testHelper.init( "#inp", { appendText: "Testing" } );
- assert.ok( inp.is( ".hasDatepicker" ), "Append - marker class set" );
- assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Append - instance present" );
- assert.ok( inp.next().text() === "Testing", "Append - append text added" );
- inp.datepicker( "destroy" );
- inp = $( "#inp" );
- assert.ok( !inp.is( ".hasDatepicker" ), "Append - marker class cleared" );
- assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Append - instance absent" );
- assert.ok( inp.next().is( "#alt" ), "Append - append text removed" );
-
- // With both
- inp = testHelper.init( "#inp", { showOn: "both", buttonImageOnly: true,
- buttonImage: "images/calendar.gif", appendText: "Testing" } );
- assert.ok( inp.is( ".hasDatepicker" ), "Both - marker class set" );
- assert.ok( $.data( inp[ 0 ], testHelper.PROP_NAME ), "Both - instance present" );
- assert.ok( inp.next()[ 0 ].nodeName.toLowerCase() === "img", "Both - button added" );
- assert.ok( inp.next().next().text() === "Testing", "Both - append text added" );
- inp.datepicker( "destroy" );
- inp = $( "#inp" );
- assert.ok( !inp.is( ".hasDatepicker" ), "Both - marker class cleared" );
- assert.ok( !$.data( inp[ 0 ], testHelper.PROP_NAME ), "Both - instance absent" );
- assert.ok( inp.next().is( "#alt" ), "Both - button and append text absent" );
-
- // Inline
- inl = testHelper.init( "#inl" );
- assert.ok( inl.is( ".hasDatepicker" ), "Inline - marker class set" );
- assert.ok( inl.html() !== "", "Inline - datepicker present" );
- assert.ok( $.data( inl[ 0 ], testHelper.PROP_NAME ), "Inline - instance present" );
- assert.ok( inl.next().length === 0 || inl.next().is( "p" ), "Inline - button absent" );
- inl.datepicker( "destroy" );
- inl = $( "#inl" );
- assert.ok( !inl.is( ".hasDatepicker" ), "Inline - marker class cleared" );
- assert.ok( inl.html() === "", "Inline - datepicker absent" );
- assert.ok( !$.data( inl[ 0 ], testHelper.PROP_NAME ), "Inline - instance absent" );
- assert.ok( inl.next().length === 0 || inl.next().is( "p" ), "Inline - button absent" );
+ assert.expect( 3 );
+
+ var input = $( "<input>" ).appendTo( "#qunit-fixture" );
+
+ assert.domEqual( input, function() {
+ input.datepicker();
+ assert.ok( input.attr( "aria-owns" ), "aria-owns attribute added" );
+ assert.ok( input.attr( "aria-haspopup" ), "aria-haspopup attribute added" );
+ input.datepicker( "destroy" );
+ } );
+} );
+
+QUnit.test( "enable / disable", function( assert ) {
+ assert.expect( 10 );
+
+ this.element.datepicker( "disable" );
+ assert.ok( this.element.datepicker( "option", "disabled" ), "disabled option is set" );
+ assert.ok( this.widget.hasClass( "ui-datepicker-disabled" ), "has disabled widget class name" );
+ assert.ok( this.element.hasClass( "ui-state-disabled" ), "has disabled state class name" );
+ assert.equal( this.element.attr( "aria-disabled" ), "true", "has ARIA disabled" );
+ assert.equal( this.element.attr( "disabled" ), "disabled", "input disabled" );
+
+ this.element.datepicker( "enable" );
+ assert.ok( !this.element.datepicker( "option", "disabled" ), "enabled after enable() call" );
+ assert.ok( !this.widget.hasClass( "ui-datepicker-disabled" ), "no longer has disabled widget class name" );
+ assert.ok( !this.element.hasClass( "ui-state-disabled" ), "no longer has disabled state class name" );
+ assert.equal( this.element.attr( "aria-disabled" ), "false", "no longer has ARIA disabled" );
+ assert.equal( this.element.attr( "disabled" ), undefined, "input no longer disabled" );
} );
-QUnit.test( "enableDisable", function( assert ) {
- assert.expect( 33 );
- var inl, dp,
- inp = testHelper.init( "#inp" );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable - initially marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable - field initially enabled" );
- inp.datepicker( "disable" );
- assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable - now marked as disabled" );
- assert.ok( inp[ 0 ].disabled, "Enable/disable - field now disabled" );
- inp.datepicker( "enable" );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable - now marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable - field now enabled" );
- inp.datepicker( "destroy" );
-
- // With a button
- inp = testHelper.init( "#inp", { showOn: "button" } );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable button - initially marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable button - field initially enabled" );
- assert.ok( !inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button initially enabled" );
- inp.datepicker( "disable" );
- assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable button - now marked as disabled" );
- assert.ok( inp[ 0 ].disabled, "Enable/disable button - field now disabled" );
- assert.ok( inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button now disabled" );
- inp.datepicker( "enable" );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable button - now marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable button - field now enabled" );
- assert.ok( !inp.next( "button" )[ 0 ].disabled, "Enable/disable button - button now enabled" );
- inp.datepicker( "destroy" );
-
- // With an image button
- inp = testHelper.init( "#inp", { showOn: "button", buttonImageOnly: true,
- buttonImage: "images/calendar.gif" } );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable image - initially marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable image - field initially enabled" );
- assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) === 1, "Enable/disable image - image initially enabled" );
- inp.datepicker( "disable" );
- assert.ok( inp.datepicker( "isDisabled" ), "Enable/disable image - now marked as disabled" );
- assert.ok( inp[ 0 ].disabled, "Enable/disable image - field now disabled" );
- assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) !== 1, "Enable/disable image - image now disabled" );
- inp.datepicker( "enable" );
- assert.ok( !inp.datepicker( "isDisabled" ), "Enable/disable image - now marked as enabled" );
- assert.ok( !inp[ 0 ].disabled, "Enable/disable image - field now enabled" );
- assert.ok( parseFloat( inp.next( "img" ).css( "opacity" ) ) === 1, "Enable/disable image - image now enabled" );
- inp.datepicker( "destroy" );
-
- // Inline
- inl = testHelper.init( "#inl", { changeYear: true } );
- dp = $( ".ui-datepicker-inline", inl );
- assert.ok( !inl.datepicker( "isDisabled" ), "Enable/disable inline - initially marked as enabled" );
- assert.ok( !dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - not visually disabled initially" );
- assert.ok( !dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element enabled initially" );
- inl.datepicker( "disable" );
- assert.ok( inl.datepicker( "isDisabled" ), "Enable/disable inline - now marked as disabled" );
- assert.ok( dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - visually disabled" );
- assert.ok( dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element disabled" );
- inl.datepicker( "enable" );
- assert.ok( !inl.datepicker( "isDisabled" ), "Enable/disable inline - now marked as enabled" );
- assert.ok( !dp.children().is( ".ui-state-disabled" ), "Enable/disable inline - not visiually disabled" );
- assert.ok( !dp.find( "select" ).prop( "disabled" ), "Enable/disable inline - form element enabled" );
- inl.datepicker( "destroy" );
+QUnit.test( "widget", function( assert ) {
+ assert.expect( 1 );
+
+ assert.deepEqual( $( "body > .ui-front" )[ 0 ], this.widget[ 0 ] );
+ this.widget.remove();
+} );
+
+QUnit.test( "open / close", function( assert ) {
+ assert.expect( 7 );
+
+ assert.ok( this.widget.is( ":hidden" ), "calendar hidden on init" );
+
+ this.element.datepicker( "open" );
+ assert.ok( this.widget.is( ":visible" ), "open: calendar visible" );
+ assert.equal( this.widget.attr( "aria-hidden" ), "false", "open: calendar aria-hidden" );
+ assert.equal( this.widget.attr( "aria-expanded" ), "true", "close: calendar aria-expanded" );
+
+ this.element.datepicker( "close" );
+ assert.ok( !this.widget.is( ":visible" ), "close: calendar hidden" );
+ assert.equal( this.widget.attr( "aria-hidden" ), "true", "close: calendar aria-hidden" );
+ assert.equal( this.widget.attr( "aria-expanded" ), "false", "close: calendar aria-expanded" );
+} );
+
+QUnit.test( "value", function( assert ) {
+ assert.expect( 4 );
+
+ this.element.datepicker( "value", "1/1/14" );
+ assert.equal( this.element.val(), "1/1/14", "input's value set" );
+
+ this.element.datepicker( "open" );
+ assert.ok(
+ this.widget.find( "button[data-ui-calendar-timestamp]" ).eq( 0 ).hasClass( "ui-state-active" ),
+ "first day marked as selected"
+ );
+ assert.equal( this.element.datepicker( "value" ), "1/1/14", "getter" );
+
+ this.element.val( "abc" );
+ assert.strictEqual( this.element.datepicker( "value" ), null, "Invalid values should return null." );
+} );
+
+QUnit.test( "valueAsDate", function( assert ) {
+ assert.expect( 5 );
+
+ assert.strictEqual( this.element.datepicker( "valueAsDate" ), null, "Default" );
+
+ this.element.datepicker( "valueAsDate", testHelper.createDate( 2014, 0, 1 ) );
+ assert.equal( this.element.val(), "1/1/14", "Input's value set" );
+ assert.ok(
+ this.widget.find( "button[data-ui-calendar-timestamp]" ).eq( 0 ).hasClass( "ui-state-active" ),
+ "First day marked as selected"
+ );
+ assert.dateEqual( this.element.datepicker( "valueAsDate" ), testHelper.createDate( 2014, 0, 1 ), "Getter" );
+
+ this.element.val( "a/b/c" );
+ assert.equal( this.element.datepicker( "valueAsDate" ), null, "Invalid dates return null" );
+} );
+
+QUnit.test( "isValid", function( assert ) {
+ assert.expect( 2 );
+
+ this.element.val( "1/1/14" );
+ assert.ok( this.element.datepicker( "isValid" ) );
+
+ this.element.val( "1/1/abc" );
+ assert.ok( !this.element.datepicker( "isValid" ) );
} );
} );