1 |
/* |
2 |
* datepicker_events.js |
3 |
*/ |
4 |
(function($) { |
5 |
|
6 |
module("datepicker: events"); |
7 |
|
8 |
var selectedThis = null, |
9 |
selectedDate = null, |
10 |
selectedInst = null; |
11 |
|
12 |
function callback(date, inst) { |
13 |
selectedThis = this; |
14 |
selectedDate = date; |
15 |
selectedInst = inst; |
16 |
} |
17 |
|
18 |
function callback2(year, month, inst) { |
19 |
selectedThis = this; |
20 |
selectedDate = year + "/" + month; |
21 |
selectedInst = inst; |
22 |
} |
23 |
|
24 |
test("events", function() { |
25 |
expect( 26 ); |
26 |
var dateStr, newMonthYear, inp2, |
27 |
inp = TestHelpers.datepicker.init("#inp", {onSelect: callback}), |
28 |
date = new Date(); |
29 |
// onSelect |
30 |
inp.val("").datepicker("show"). |
31 |
simulate("keydown", {keyCode: $.ui.keyCode.ENTER}); |
32 |
equal(selectedThis, inp[0], "Callback selected this"); |
33 |
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback selected inst"); |
34 |
equal(selectedDate, $.datepicker.formatDate("mm/dd/yy", date), |
35 |
"Callback selected date"); |
36 |
inp.val("").datepicker("show"). |
37 |
simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}). |
38 |
simulate("keydown", {keyCode: $.ui.keyCode.ENTER}); |
39 |
date.setDate(date.getDate() + 7); |
40 |
equal(selectedDate, $.datepicker.formatDate("mm/dd/yy", date), |
41 |
"Callback selected date - ctrl+down"); |
42 |
inp.val("").datepicker("show"). |
43 |
simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE}); |
44 |
equal(selectedDate, $.datepicker.formatDate("mm/dd/yy", date), |
45 |
"Callback selected date - esc"); |
46 |
dateStr = "02/04/2008"; |
47 |
inp.val(dateStr).datepicker("show"). |
48 |
simulate("keydown", {keyCode: $.ui.keyCode.ENTER}); |
49 |
equal(dateStr, selectedDate, |
50 |
"onSelect is called after enter keydown"); |
51 |
// onChangeMonthYear |
52 |
inp.datepicker("option", {onChangeMonthYear: callback2, onSelect: null}). |
53 |
val("").datepicker("show"); |
54 |
newMonthYear = function(date) { |
55 |
return date.getFullYear() + "/" + (date.getMonth() + 1); |
56 |
}; |
57 |
date = new Date(); |
58 |
date.setDate(1); |
59 |
inp.simulate("keydown", {keyCode: $.ui.keyCode.PAGE_UP}); |
60 |
date.setMonth(date.getMonth() - 1); |
61 |
equal(selectedThis, inp[0], "Callback change month/year this"); |
62 |
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback change month/year inst"); |
63 |
equal(selectedDate, newMonthYear(date), |
64 |
"Callback change month/year date - pgup"); |
65 |
inp.simulate("keydown", {keyCode: $.ui.keyCode.PAGE_DOWN}); |
66 |
date.setMonth(date.getMonth() + 1); |
67 |
equal(selectedDate, newMonthYear(date), |
68 |
"Callback change month/year date - pgdn"); |
69 |
inp.simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}); |
70 |
date.setFullYear(date.getFullYear() - 1); |
71 |
equal(selectedDate, newMonthYear(date), |
72 |
"Callback change month/year date - ctrl+pgup"); |
73 |
inp.simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.HOME}); |
74 |
date.setFullYear(date.getFullYear() + 1); |
75 |
equal(selectedDate, newMonthYear(date), |
76 |
"Callback change month/year date - ctrl+home"); |
77 |
inp.simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}); |
78 |
date.setFullYear(date.getFullYear() + 1); |
79 |
equal(selectedDate, newMonthYear(date), |
80 |
"Callback change month/year date - ctrl+pgdn"); |
81 |
inp.datepicker("setDate", new Date(2007, 1 - 1, 26)); |
82 |
equal(selectedDate, "2007/1", "Callback change month/year date - setDate"); |
83 |
selectedDate = null; |
84 |
inp.datepicker("setDate", new Date(2007, 1 - 1, 12)); |
85 |
ok(selectedDate == null, "Callback change month/year date - setDate no change"); |
86 |
// onChangeMonthYear step by 2 |
87 |
inp.datepicker("option", {stepMonths: 2}). |
88 |
datepicker("hide").val("").datepicker("show"). |
89 |
simulate("keydown", {keyCode: $.ui.keyCode.PAGE_UP}); |
90 |
date.setMonth(date.getMonth() - 14); |
91 |
equal(selectedDate, newMonthYear(date), |
92 |
"Callback change month/year by 2 date - pgup"); |
93 |
inp.simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}); |
94 |
date.setMonth(date.getMonth() - 12); |
95 |
equal(selectedDate, newMonthYear(date), |
96 |
"Callback change month/year by 2 date - ctrl+pgup"); |
97 |
inp.simulate("keydown", {keyCode: $.ui.keyCode.PAGE_DOWN}); |
98 |
date.setMonth(date.getMonth() + 2); |
99 |
equal(selectedDate, newMonthYear(date), |
100 |
"Callback change month/year by 2 date - pgdn"); |
101 |
inp.simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}); |
102 |
date.setMonth(date.getMonth() + 12); |
103 |
equal(selectedDate, newMonthYear(date), |
104 |
"Callback change month/year by 2 date - ctrl+pgdn"); |
105 |
// onClose |
106 |
inp.datepicker("option", {onClose: callback, onChangeMonthYear: null, stepMonths: 1}). |
107 |
val("").datepicker("show"). |
108 |
simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE}); |
109 |
equal(selectedThis, inp[0], "Callback close this"); |
110 |
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), "Callback close inst"); |
111 |
equal(selectedDate, "", "Callback close date - esc"); |
112 |
inp.val("").datepicker("show"). |
113 |
simulate("keydown", {keyCode: $.ui.keyCode.ENTER}); |
114 |
equal(selectedDate, $.datepicker.formatDate("mm/dd/yy", new Date()), |
115 |
"Callback close date - enter"); |
116 |
inp.val("02/04/2008").datepicker("show"). |
117 |
simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE}); |
118 |
equal(selectedDate, "02/04/2008", "Callback close date - preset"); |
119 |
inp.val("02/04/2008").datepicker("show"). |
120 |
simulate("keydown", {ctrlKey: true, keyCode: $.ui.keyCode.END}); |
121 |
equal(selectedDate, "", "Callback close date - ctrl+end"); |
122 |
|
123 |
inp2 = TestHelpers.datepicker.init("#inp2"); |
124 |
inp2.datepicker().datepicker("option", {onClose: callback}).datepicker("show"); |
125 |
inp.datepicker("show"); |
126 |
equal(selectedThis, inp2[0], "Callback close this"); |
127 |
}); |
128 |
|
129 |
test("beforeShowDay-getDate", function() { |
130 |
expect( 3 ); |
131 |
var inp = TestHelpers.datepicker.init("#inp", {beforeShowDay: function() { inp.datepicker("getDate"); return [true, ""]; }}), |
132 |
dp = $("#ui-datepicker-div"); |
133 |
inp.val("01/01/2010").datepicker("show"); |
134 |
// contains non-breaking space |
135 |
equal($("div.ui-datepicker-title").text(), |
136 |
// support: IE <9, jQuery <1.8 |
137 |
// In IE7/8 with jQuery <1.8, encoded spaces behave in strange ways |
138 |
$( "<span>January 2010</span>" ).text(), "Initial month"); |
139 |
$("a.ui-datepicker-next", dp).click(); |
140 |
$("a.ui-datepicker-next", dp).click(); |
141 |
// contains non-breaking space |
142 |
equal($("div.ui-datepicker-title").text(), |
143 |
$( "<span>March 2010</span>" ).text(), "After next clicks"); |
144 |
inp.datepicker("hide").datepicker("show"); |
145 |
$("a.ui-datepicker-prev", dp).click(); |
146 |
$("a.ui-datepicker-prev", dp).click(); |
147 |
// contains non-breaking space |
148 |
equal($("div.ui-datepicker-title").text(), |
149 |
$( "<span>November 2009</span>" ).text(), "After prev clicks"); |
150 |
inp.datepicker("hide"); |
151 |
}); |
152 |
|
153 |
})(jQuery); |