Skip to content

Commit e0fe127

Browse files
committed
Datepicker tests: Rewrite event unit tests
1 parent 65eae86 commit e0fe127

File tree

2 files changed

+81
-132
lines changed

2 files changed

+81
-132
lines changed
Lines changed: 79 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,32 @@
1-
// The implement of events is completely changing therefore these tests are no longer directly
2-
// relevant. Leaving them around commented out so we can ensure the functionality is replicated.
3-
// For example:
4-
// TODO: In the old implementation the Enter key select's today's date when the <input> has
5-
// focus and is empty. Do we want to replicate this behavior in the rewrite?
6-
/*
7-
81
(function( $ ) {
92

103
module( "datepicker: events" );
114

125
test( "beforeOpen", function() {
13-
expect( 0 );
6+
expect( 3 );
7+
8+
var input = TestHelpers.datepicker.init( "#datepicker", {
9+
beforeOpen: function() {
10+
ok( true, "beforeOpen event fired before open" );
11+
ok( input.datepicker( "widget" ).is( ":hidden" ), "calendar hidden on beforeOpen" );
12+
},
13+
open: function() {
14+
ok( input.datepicker( "widget" ).is( ":visible" ), "calendar open on open" );
15+
}
16+
});
17+
18+
input
19+
.datepicker( "open" )
20+
.datepicker( "close" )
21+
.datepicker( "option", {
22+
beforeOpen: function() {
23+
return false;
24+
},
25+
open: function() {
26+
ok( false, "calendar should not open when openBefore is canceled" );
27+
}
28+
})
29+
.datepicker( "open" );
1430
});
1531

1632
test( "close", function() {
@@ -58,126 +74,61 @@ test( "open", function() {
5874
input.datepicker( "open" );
5975
});
6076

61-
var selectedThis = null,
62-
selectedDate = null,
63-
selectedInst = null;
64-
65-
function callback(date, inst) {
66-
selectedThis = this;
67-
selectedDate = date;
68-
selectedInst = inst;
69-
}
70-
71-
function callback2(year, month, inst) {
72-
selectedThis = this;
73-
selectedDate = year + "/" + month;
74-
selectedInst = inst;
75-
}
76-
77-
test( "events", function() {
78-
expect( 26 );
79-
var dateStr, newMonthYear, inp2,
80-
inp = TestHelpers.datepicker.init( "#inp", {onSelect: callback}),
81-
date = new Date();
82-
// onSelect
83-
inp.val( "" ).datepicker( "show" ).
84-
simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
85-
equal(selectedThis, inp[0], "Callback selected this" );
86-
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback selected inst" );
87-
equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
88-
"Callback selected date" );
89-
inp.val( "" ).datepicker( "show" ).
90-
simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}).
91-
simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
92-
date.setDate(date.getDate() + 7);
93-
equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
94-
"Callback selected date - ctrl+down" );
95-
inp.val( "" ).datepicker( "show" ).
96-
simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
97-
equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", date),
98-
"Callback selected date - esc" );
99-
dateStr = "02/04/2008";
100-
inp.val(dateStr).datepicker( "show" ).
101-
simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
102-
equal(dateStr, selectedDate,
103-
"onSelect is called after enter keydown" );
104-
// onChangeMonthYear
105-
inp.datepicker( "option", {onChangeMonthYear: callback2, onSelect: null}).
106-
val( "" ).datepicker( "show" );
107-
newMonthYear = function(date) {
108-
return date.getFullYear() + "/" + (date.getMonth() + 1);
109-
};
110-
date = new Date();
111-
date.setDate(1);
112-
inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_UP});
113-
date.setMonth(date.getMonth() - 1);
114-
equal(selectedThis, inp[0], "Callback change month/year this" );
115-
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback change month/year inst" );
116-
equal(selectedDate, newMonthYear(date),
117-
"Callback change month/year date - pgup" );
118-
inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_DOWN});
119-
date.setMonth(date.getMonth() + 1);
120-
equal(selectedDate, newMonthYear(date),
121-
"Callback change month/year date - pgdn" );
122-
inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
123-
date.setFullYear(date.getFullYear() - 1);
124-
equal(selectedDate, newMonthYear(date),
125-
"Callback change month/year date - ctrl+pgup" );
126-
inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.HOME});
127-
date.setFullYear(date.getFullYear() + 1);
128-
equal(selectedDate, newMonthYear(date),
129-
"Callback change month/year date - ctrl+home" );
130-
inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
131-
date.setFullYear(date.getFullYear() + 1);
132-
equal(selectedDate, newMonthYear(date),
133-
"Callback change month/year date - ctrl+pgdn" );
134-
inp.datepicker( "setDate", new Date(2007, 1 - 1, 26));
135-
equal(selectedDate, "2007/1", "Callback change month/year date - setDate" );
136-
selectedDate = null;
137-
inp.datepicker( "setDate", new Date(2007, 1 - 1, 12));
138-
ok(selectedDate == null, "Callback change month/year date - setDate no change" );
139-
// onChangeMonthYear step by 2
140-
inp.datepicker( "option", {stepMonths: 2}).
141-
datepicker( "hide" ).val( "" ).datepicker( "show" ).
142-
simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_UP});
143-
date.setMonth(date.getMonth() - 14);
144-
equal(selectedDate, newMonthYear(date),
145-
"Callback change month/year by 2 date - pgup" );
146-
inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
147-
date.setMonth(date.getMonth() - 12);
148-
equal(selectedDate, newMonthYear(date),
149-
"Callback change month/year by 2 date - ctrl+pgup" );
150-
inp.simulate( "keydown", {keyCode: $.ui.keyCode.PAGE_DOWN});
151-
date.setMonth(date.getMonth() + 2);
152-
equal(selectedDate, newMonthYear(date),
153-
"Callback change month/year by 2 date - pgdn" );
154-
inp.simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
155-
date.setMonth(date.getMonth() + 12);
156-
equal(selectedDate, newMonthYear(date),
157-
"Callback change month/year by 2 date - ctrl+pgdn" );
158-
// onClose
159-
inp.datepicker( "option", {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).
160-
val( "" ).datepicker( "show" ).
161-
simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
162-
equal(selectedThis, inp[0], "Callback close this" );
163-
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback close inst" );
164-
equal(selectedDate, "", "Callback close date - esc" );
165-
inp.val( "" ).datepicker( "show" ).
166-
simulate( "keydown", {keyCode: $.ui.keyCode.ENTER});
167-
equal(selectedDate, $.datepicker.formatDate( "mm/dd/yy", new Date()),
168-
"Callback close date - enter" );
169-
inp.val( "02/04/2008" ).datepicker( "show" ).
170-
simulate( "keydown", {keyCode: $.ui.keyCode.ESCAPE});
171-
equal(selectedDate, "02/04/2008", "Callback close date - preset" );
172-
inp.val( "02/04/2008" ).datepicker( "show" ).
173-
simulate( "keydown", {ctrlKey: true, keyCode: $.ui.keyCode.END});
174-
equal(selectedDate, "", "Callback close date - ctrl+end" );
175-
176-
inp2 = TestHelpers.datepicker.init( "#inp2" );
177-
inp2.datepicker().datepicker( "option", {onClose: callback}).datepicker( "show" );
178-
inp.datepicker( "show" );
179-
equal(selectedThis, inp2[0], "Callback close this" );
77+
asyncTest( "select", function() {
78+
expect( 4 );
79+
80+
var input = TestHelpers.datepicker.init( "#datepicker", {
81+
select: function( event ) {
82+
ok( true, "select event fired " + message );
83+
equal(
84+
event.originalEvent.type,
85+
"calendarselect",
86+
"select originalEvent " + message
87+
);
88+
}
89+
}),
90+
widget = input.datepicker( "widget" ),
91+
message = "";
92+
93+
function step1() {
94+
message = "on calendar cell click";
95+
input
96+
.simulate( "focus" )
97+
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
98+
setTimeout(function() {
99+
widget.find( "tbody tr:first a:first" ).simulate( "mousedown" );
100+
input.datepicker( "close" );
101+
step2();
102+
}, 100 );
103+
}
104+
105+
function step2() {
106+
message = "on calendar cell enter";
107+
input
108+
.simulate( "focus" )
109+
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
110+
setTimeout(function() {
111+
$( ":focus" )
112+
.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } )
113+
.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
114+
input.datepicker( "close" );
115+
step3();
116+
}, 100 );
117+
}
118+
119+
function step3() {
120+
message = "on calendar escape (not expected)";
121+
input
122+
.simulate( "focus" )
123+
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
124+
setTimeout(function() {
125+
$( ":focus" ).simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
126+
input.datepicker( "close" );
127+
start();
128+
}, 100 );
129+
}
130+
131+
step1();
180132
});
181133

182134
})( jQuery );
183-
*/

tests/unit/datepicker/datepicker_test_helpers.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@ TestHelpers.datepicker = {
1515
equal( d1.toString(), d2.toString(), message );
1616
},
1717
init: function( id, options ) {
18-
options = $.extend( { show: false }, options || {} );
18+
options = $.extend( { show: false, hide: false }, options || {} );
1919
return $( id ).datepicker( options );
2020
},
2121
initNewInput: function( options ) {
2222
options = $.extend( { show: false, hide: false }, options || {} );
2323
return $( "<input>" ).datepicker( options )
2424
.appendTo( "#qunit-fixture" );
25-
},
26-
onFocus: TestHelpers.onFocus,
27-
PROP_NAME: "datepicker"
25+
}
2826
};

0 commit comments

Comments
 (0)