1 | /*
|
---|
2 | * datepicker_events.js
|
---|
3 | */
|
---|
4 | (function($) {
|
---|
5 |
|
---|
6 | module("datepicker: events", {
|
---|
7 | teardown: function() {
|
---|
8 | stop();
|
---|
9 | setTimeout(start, 13);
|
---|
10 | }
|
---|
11 | });
|
---|
12 |
|
---|
13 | var selectedThis = null;
|
---|
14 | var selectedDate = null;
|
---|
15 | var selectedInst = null;
|
---|
16 |
|
---|
17 | function callback(date, inst) {
|
---|
18 | selectedThis = this;
|
---|
19 | selectedDate = date;
|
---|
20 | selectedInst = inst;
|
---|
21 | }
|
---|
22 |
|
---|
23 | function callback2(year, month, inst) {
|
---|
24 | selectedThis = this;
|
---|
25 | selectedDate = year + '/' + month;
|
---|
26 | selectedInst = inst;
|
---|
27 | }
|
---|
28 |
|
---|
29 | test('events', function() {
|
---|
30 | var inp = init('#inp', {onSelect: callback});
|
---|
31 | var date = new Date();
|
---|
32 | // onSelect
|
---|
33 | inp.val('').datepicker('show').
|
---|
34 | simulate('keydown', {keyCode: $.simulate.VK_ENTER});
|
---|
35 | equals(selectedThis, inp[0], 'Callback selected this');
|
---|
36 | equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback selected inst');
|
---|
37 | equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
---|
38 | 'Callback selected date');
|
---|
39 | inp.val('').datepicker('show').
|
---|
40 | simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).
|
---|
41 | simulate('keydown', {keyCode: $.simulate.VK_ENTER});
|
---|
42 | date.setDate(date.getDate() + 7);
|
---|
43 | equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
---|
44 | 'Callback selected date - ctrl+down');
|
---|
45 | inp.val('').datepicker('show').
|
---|
46 | simulate('keydown', {keyCode: $.simulate.VK_ESC});
|
---|
47 | equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
---|
48 | 'Callback selected date - esc');
|
---|
49 | // onChangeMonthYear
|
---|
50 | inp.datepicker('option', {onChangeMonthYear: callback2, onSelect: null}).
|
---|
51 | val('').datepicker('show');
|
---|
52 | var newMonthYear = function(date) {
|
---|
53 | return date.getFullYear() + '/' + (date.getMonth() + 1);
|
---|
54 | };
|
---|
55 | date = new Date();
|
---|
56 | date.setDate(1);
|
---|
57 | inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP});
|
---|
58 | date.setMonth(date.getMonth() - 1);
|
---|
59 | equals(selectedThis, inp[0], 'Callback change month/year this');
|
---|
60 | equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback change month/year inst');
|
---|
61 | equals(selectedDate, newMonthYear(date),
|
---|
62 | 'Callback change month/year date - pgup');
|
---|
63 | inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});
|
---|
64 | date.setMonth(date.getMonth() + 1);
|
---|
65 | equals(selectedDate, newMonthYear(date),
|
---|
66 | 'Callback change month/year date - pgdn');
|
---|
67 | inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});
|
---|
68 | date.setFullYear(date.getFullYear() - 1);
|
---|
69 | equals(selectedDate, newMonthYear(date),
|
---|
70 | 'Callback change month/year date - ctrl+pgup');
|
---|
71 | inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME});
|
---|
72 | date.setFullYear(date.getFullYear() + 1);
|
---|
73 | equals(selectedDate, newMonthYear(date),
|
---|
74 | 'Callback change month/year date - ctrl+home');
|
---|
75 | inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});
|
---|
76 | date.setFullYear(date.getFullYear() + 1);
|
---|
77 | equals(selectedDate, newMonthYear(date),
|
---|
78 | 'Callback change month/year date - ctrl+pgdn');
|
---|
79 | inp.datepicker('setDate', new Date(2007, 1 - 1, 26));
|
---|
80 | equals(selectedDate, '2007/1', 'Callback change month/year date - setDate');
|
---|
81 | selectedDate = null;
|
---|
82 | inp.datepicker('setDate', new Date(2007, 1 - 1, 12));
|
---|
83 | ok(selectedDate == null, 'Callback change month/year date - setDate no change');
|
---|
84 | // onChangeMonthYear step by 2
|
---|
85 | inp.datepicker('option', {stepMonths: 2}).
|
---|
86 | datepicker('hide').val('').datepicker('show').
|
---|
87 | simulate('keydown', {keyCode: $.simulate.VK_PGUP});
|
---|
88 | date.setMonth(date.getMonth() - 14);
|
---|
89 | equals(selectedDate, newMonthYear(date),
|
---|
90 | 'Callback change month/year by 2 date - pgup');
|
---|
91 | inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});
|
---|
92 | date.setMonth(date.getMonth() - 12);
|
---|
93 | equals(selectedDate, newMonthYear(date),
|
---|
94 | 'Callback change month/year by 2 date - ctrl+pgup');
|
---|
95 | inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});
|
---|
96 | date.setMonth(date.getMonth() + 2);
|
---|
97 | equals(selectedDate, newMonthYear(date),
|
---|
98 | 'Callback change month/year by 2 date - pgdn');
|
---|
99 | inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});
|
---|
100 | date.setMonth(date.getMonth() + 12);
|
---|
101 | equals(selectedDate, newMonthYear(date),
|
---|
102 | 'Callback change month/year by 2 date - ctrl+pgdn');
|
---|
103 | // onClose
|
---|
104 | inp.datepicker('option', {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).
|
---|
105 | val('').datepicker('show').
|
---|
106 | simulate('keydown', {keyCode: $.simulate.VK_ESC});
|
---|
107 | equals(selectedThis, inp[0], 'Callback close this');
|
---|
108 | equals(selectedInst, $.data(inp[0], PROP_NAME), 'Callback close inst');
|
---|
109 | equals(selectedDate, '', 'Callback close date - esc');
|
---|
110 | inp.val('').datepicker('show').
|
---|
111 | simulate('keydown', {keyCode: $.simulate.VK_ENTER});
|
---|
112 | equals(selectedDate, $.datepicker.formatDate('mm/dd/yy', new Date()),
|
---|
113 | 'Callback close date - enter');
|
---|
114 | inp.val('02/04/2008').datepicker('show').
|
---|
115 | simulate('keydown', {keyCode: $.simulate.VK_ESC});
|
---|
116 | equals(selectedDate, '02/04/2008', 'Callback close date - preset');
|
---|
117 | inp.val('02/04/2008').datepicker('show').
|
---|
118 | simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END});
|
---|
119 | equals(selectedDate, '', 'Callback close date - ctrl+end');
|
---|
120 | });
|
---|
121 |
|
---|
122 | })(jQuery);
|
---|