aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2011.js
blob: a64353ae72f92b209bd96afbf1dce320a0b83c1d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
module('Keyboard Navigation 2011', {
    setup: function(){
        /*
            Tests start with picker on March 31, 2011.  Fun facts:

            * March 1, 2011 was on a Tuesday
            * March 31, 2011 was on a Thursday
        */
        this.input = $('<input type="text" value="31-03-2011">')
                        .appendTo('#qunit-fixture')
                        .datepicker({format: "dd-mm-yyyy"})
                        .focus(); // Activate for visibility checks
        this.dp = this.input.data('datepicker');
        this.picker = this.dp.picker;
    },
    teardown: function(){
        this.picker.remove();
    }
});

test('Regression: by week (up/down arrows); up from Mar 6, 2011 should go to Feb 27, 2011', function(){
    var target;

    this.input.val('06-03-2011').datepicker('update');

    equal(this.dp.viewMode, 0);
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'March 2011', 'Title is "March 2011"');
    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 6));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 6));
    equal(this.dp.focusDate, null);

    // Navigation: -1 week, up arrow key
    this.input.trigger({
        type: 'keydown',
        keyCode: 38
    });
    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 27));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 6));
    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 27));
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'February 2011', 'Title is "February 2011"');
});

test('Regression: by day (left/right arrows); left from Mar 1, 2011 should go to Feb 28, 2011', function(){
    var target;

    this.input.val('01-03-2011').datepicker('update');

    equal(this.dp.viewMode, 0);
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'March 2011', 'Title is "March 2011"');
    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 1));
    equal(this.dp.focusDate, null);

    // Navigation: -1 day left arrow key
    this.input.trigger({
        type: 'keydown',
        keyCode: 37
    });
    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 28));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 1));
    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 28));
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'February 2011', 'Title is "February 2011"');
});

test('Regression: by month (shift + left/right arrows); left from Mar 15, 2011 should go to Feb 15, 2011', function(){
    var target;

    this.input.val('15-03-2011').datepicker('update');

    equal(this.dp.viewMode, 0);
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'March 2011', 'Title is "March 2011"');
    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
    equal(this.dp.focusDate, null);

    // Navigation: -1 month, shift + left arrow key
    this.input.trigger({
        type: 'keydown',
        keyCode: 37,
        shiftKey: true
    });
    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 15));
    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 15));
    target = this.picker.find('.datepicker-days thead th.datepicker-switch');
    equal(target.text(), 'February 2011', 'Title is "February 2011"');
});

test('Regression: by month with view mode = 1 (left/right arrow); left from March 15, 2011 should go to February 15, 2011', function () {
  this.picker.remove();
  this.input = $('<input type="text" value="15-03-2011">')
    .appendTo('#qunit-fixture')
    .datepicker({
      format: "dd-mm-yyyy",
      minViewMode: 1,
      startView: 1
    })
    .focus(); // Activate for visibility checks
  this.dp = this.input.data('datepicker');
  this.picker = this.dp.picker;

  this.input.val('15-03-2011').datepicker('update');
  equal(this.dp.viewMode, 1);

  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2011', 'Title is "March 2011"');
  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  equal(this.dp.focusDate, null);

  this.input.trigger({
    type: 'keydown',
    keyCode: 37
  });

  datesEqual(this.dp.viewDate, UTCDate(2011, 1, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  datesEqual(this.dp.focusDate, UTCDate(2011, 1, 15));
  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'February 2011', 'Title is "February 2011"');
});

test('Regression: by month with view mode = 1 (up/down arrow); down from March 15, 2011 should go to July 15, 2010', function () {
  this.picker.remove();
  this.input = $('<input type="text" value="15-03-2011">')
    .appendTo('#qunit-fixture')
    .datepicker({
      format: "dd-mm-yyyy",
      minViewMode: 1,
      startView: 1
    })
    .focus(); // Activate for visibility checks
  this.dp = this.input.data('datepicker');
  this.picker = this.dp.picker;

  this.input.val('15-03-2011').datepicker('update');
  equal(this.dp.viewMode, 1);

  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2011', 'Title is "March 2011"');
  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  equal(this.dp.focusDate, null);

  this.input.trigger({
    type: 'keydown',
    keyCode: 40
  });

  datesEqual(this.dp.viewDate, UTCDate(2011, 6, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  datesEqual(this.dp.focusDate, UTCDate(2011, 6, 15));
  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'July 2011', 'Title is "July 2011"');
});

test('Regression: by year with view mode = 2 (left/right arrow); left from March 15, 2011 should go to March 15, 2010', function () {
  this.picker.remove();
  this.input = $('<input type="text" value="15-03-2011">')
    .appendTo('#qunit-fixture')
    .datepicker({
      format: "dd-mm-yyyy",
      minViewMode: 2,
      startView: 2
    })
    .focus(); // Activate for visibility checks
  this.dp = this.input.data('datepicker');
  this.picker = this.dp.picker;

  this.input.val('15-03-2011').datepicker('update');
  equal(this.dp.viewMode, 2);

  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2011', 'Title is "March 2011"');
  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  equal(this.dp.focusDate, null);

  this.input.trigger({
    type: 'keydown',
    keyCode: 37
  });

  datesEqual(this.dp.viewDate, UTCDate(2010, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  datesEqual(this.dp.focusDate, UTCDate(2010, 2, 15));
  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2010', 'Title is "March 2010"');
});

test('Regression: by year with view mode = 2 (up/down arrow); dows from March 15, 2011 should go to March 15, 2015', function () {
  this.picker.remove();
  this.input = $('<input type="text" value="15-03-2011">')
    .appendTo('#qunit-fixture')
    .datepicker({
      format: "dd-mm-yyyy",
      minViewMode: 2,
      startView: 2
    })
    .focus(); // Activate for visibility checks
  this.dp = this.input.data('datepicker');
  this.picker = this.dp.picker;

  this.input.val('15-03-2011').datepicker('update');
  equal(this.dp.viewMode, 2);

  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2011', 'Title is "March 2011"');
  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  equal(this.dp.focusDate, null);

  this.input.trigger({
    type: 'keydown',
    keyCode: 40
  });

  datesEqual(this.dp.viewDate, UTCDate(2015, 2, 15));
  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));
  datesEqual(this.dp.focusDate, UTCDate(2015, 2, 15));
  target = this.picker.find('.datepicker-days thead th.datepicker-switch');
  equal(target.text(), 'March 2015', 'Title is "March 2015"');
});