]> source.dussan.org Git - jquery-ui.git/commitdiff
Datepicker tests: Rewrite event unit tests
authorFelix Nagel <info@felixnagel.com>
Tue, 17 Jun 2014 17:53:08 +0000 (19:53 +0200)
committerScott González <scott.gonzalez@gmail.com>
Thu, 29 Jan 2015 23:01:29 +0000 (18:01 -0500)
tests/unit/datepicker/datepicker_events.js
tests/unit/datepicker/datepicker_test_helpers.js

index ac3d41c13d6c1ae0c7eba3bccd7fd4a8bd62f0fc..ff5438cd2f16590047c1baf26dec2f0ae0a01794 100644 (file)
@@ -1,16 +1,32 @@
-// The implement of events is completely changing therefore these tests are no longer directly
-// relevant. Leaving them around commented out so we can ensure the functionality is replicated.
-// For example:
-// TODO: In the old implementation the Enter key select's today's date when the <input> has
-// focus and is empty. Do we want to replicate this behavior in the rewrite?
-/*
-
 (function( $ ) {
 
 module( "datepicker: events" );
 
 test( "beforeOpen", function() {
-       expect( 0 );
+       expect( 3 );
+
+       var input = TestHelpers.datepicker.init( "#datepicker", {
+                       beforeOpen: function() {
+                               ok( true, "beforeOpen event fired before open" );
+                               ok( input.datepicker( "widget" ).is( ":hidden" ), "calendar hidden on beforeOpen" );
+                       },
+                       open: function() {
+                               ok( input.datepicker( "widget" ).is( ":visible" ), "calendar open on open" );
+                       }
+               });
+
+       input
+               .datepicker( "open" )
+               .datepicker( "close" )
+               .datepicker( "option", {
+                       beforeOpen: function() {
+                               return false;
+                       },
+                       open: function() {
+                               ok( false, "calendar should not open when openBefore is canceled" );
+                       }
+               })
+               .datepicker( "open" );
 });
 
 test( "close", function() {
@@ -58,126 +74,61 @@ test( "open", function() {
        input.datepicker( "open" );
 });
 
-var selectedThis = null,
-selectedDate = null,
-selectedInst = null;
-
-function callback(date, inst) {
-       selectedThis = this;
-       selectedDate = date;
-       selectedInst = inst;
-}
-
-function callback2(year, month, inst) {
-       selectedThis = this;
-       selectedDate = year + "/" + month;
-       selectedInst = inst;
-}
-
-test( "events", function() {
-       expect( 26 );
-       var dateStr, newMonthYear, inp2,
-               inp = TestHelpers.datepicker.init( "#inp", {onSelect: callback}),
-       date = new Date();
-       // onSelect
-       inp.val( "" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
-       equal(selectedThis, inp[0], "Callback selected this" );
-       equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback selected inst" );
-       equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
-               "Callback selected date" );
-       inp.val( "" ).datepicker( "show" ).
-               simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
-       date.setDate(date.getDate() + 7);
-       equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
-               "Callback selected date - ctrl+down" );
-       inp.val( "" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
-       equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
-               "Callback selected date - esc" );
-    dateStr = "02/04/2008";
-    inp.val(dateStr).datepicker( "show" ).
-        simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
-    equal(dateStr, selectedDate,
-        "onSelect is called after enter keydown" );
-       // onChangeMonthYear
-       inp.datepicker( "option", {onChangeMonthYear: callback2, onSelect: null}).
-               val( "" ).datepicker( "show" );
-       newMonthYear = function(date) {
-               return date.getFullYear() + "/" + (date.getMonth() + 1);
-       };
-       date = new Date();
-       date.setDate(1);
-       inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_UP});
-       date.setMonth(date.getMonth() - 1);
-       equal(selectedThis, inp[0], "Callback change month/year this" );
-       equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback change month/year inst" );
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year date - pgup" );
-       inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_DOWN});
-       date.setMonth(date.getMonth() + 1);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year date - pgdn" );
-       inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
-       date.setFullYear(date.getFullYear() - 1);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year date - ctrl+pgup" );
-       inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.HOME});
-       date.setFullYear(date.getFullYear() + 1);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year date - ctrl+home" );
-       inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
-       date.setFullYear(date.getFullYear() + 1);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year date - ctrl+pgdn" );
-       inp.datepicker( "setDate", new Date(2007, 1 - 1, 26));
-       equal(selectedDate, "2007/1", "Callback change month/year date - setDate" );
-       selectedDate = null;
-       inp.datepicker( "setDate", new Date(2007, 1 - 1, 12));
-       ok(selectedDate == null, "Callback change month/year date - setDate no change" );
-       // onChangeMonthYear step by 2
-       inp.datepicker( "option", {stepMonths: 2}).
-               datepicker( "hide" ).val( "" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_UP});
-       date.setMonth(date.getMonth() - 14);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year by 2 date - pgup" );
-       inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
-       date.setMonth(date.getMonth() - 12);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year by 2 date - ctrl+pgup" );
-       inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_DOWN});
-       date.setMonth(date.getMonth() + 2);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year by 2 date - pgdn" );
-       inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
-       date.setMonth(date.getMonth() + 12);
-       equal(selectedDate, newMonthYear(date),
-               "Callback change month/year by 2 date - ctrl+pgdn" );
-       // onClose
-       inp.datepicker( "option", {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).
-               val( "" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
-       equal(selectedThis, inp[0], "Callback close this" );
-       equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback close inst" );
-       equal(selectedDate, "", "Callback close date - esc" );
-       inp.val( "" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
-       equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", new Date()),
-               "Callback close date - enter" );
-       inp.val( "02/04/2008" ).datepicker( "show" ).
-               simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
-       equal(selectedDate, "02/04/2008", "Callback close date - preset" );
-       inp.val( "02/04/2008" ).datepicker( "show" ).
-               simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.END});
-       equal(selectedDate, "", "Callback close date - ctrl+end" );
-
-       inp2 = TestHelpers.datepicker.init( "#inp2" );
-       inp2.datepicker().datepicker( "option", {onClose: callback}).datepicker( "show" );
-       inp.datepicker( "show" );
-       equal(selectedThis, inp2[0], "Callback close this" );
+asyncTest( "select", function() {
+       expect( 4 );
+
+       var input = TestHelpers.datepicker.init( "#datepicker", {
+                       select: function( event ) {
+                               ok( true, "select event fired " + message );
+                               equal(
+                                       event.originalEvent.type,
+                                       "calendarselect",
+                                       "select originalEvent " + message
+                               );
+                       }
+               }),
+               widget = input.datepicker( "widget" ),
+               message = "";
+
+       function step1() {
+               message = "on calendar cell click";
+               input
+                       .simulate( "focus" )
+                       .simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+               setTimeout(function() {
+                       widget.find( "tbody tr:first a:first" ).simulate( "mousedown" );
+                       input.datepicker( "close" );
+                       step2();
+               }, 100 );
+       }
+
+       function step2() {
+               message = "on calendar cell enter";
+               input
+                       .simulate( "focus" )
+                       .simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+               setTimeout(function() {
+                       $( ":focus" )
+                               .simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } )
+                               .simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
+                       input.datepicker( "close" );
+                       step3();
+               }, 100 );
+       }
+
+       function step3() {
+               message = "on calendar escape (not expected)";
+               input
+                       .simulate( "focus" )
+                       .simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+               setTimeout(function() {
+                       $( ":focus" ).simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
+                       input.datepicker( "close" );
+                       start();
+               }, 100 );
+       }
+
+       step1();
 });
 
 })( jQuery );
- */
index e8048725d6a9d96001876116ffbea9db36a629d4..3548f6ea3608c9de33867286161a516fe3dd7cee 100644 (file)
@@ -15,14 +15,12 @@ TestHelpers.datepicker = {
                equal( d1.toString(), d2.toString(), message );
        },
        init: function( id, options ) {
-               options = $.extend( { show: false }, options || {} );
+               options = $.extend( { show: false, hide: false }, options || {} );
                return $( id ).datepicker( options );
        },
        initNewInput: function( options ) {
                options = $.extend( { show: false, hide: false }, options || {} );
                return $( "<input>" ).datepicker( options )
                        .appendTo( "#qunit-fixture" );
-       },
-       onFocus: TestHelpers.onFocus,
-       PROP_NAME: "datepicker"
+       }
 };