summaryrefslogtreecommitdiff
path: root/js_tests
diff options
context:
space:
mode:
authorAlexander Gaevsky <sasha@sasha0.ru>2015-12-27 01:32:28 +0200
committerTim Graham <timograham@gmail.com>2016-01-07 11:13:05 -0500
commit44930cc4667268c20493d7e97387db2a97d61a26 (patch)
tree97e62d23e9cebb7322fc0db453439e8deb57b00a /js_tests
parentb5f8c81ce18528ecf7cb4605dca864c961da9373 (diff)
Fixed #24980 -- Fixed day determination in admin calendar widget.
Diffstat (limited to 'js_tests')
-rw-r--r--js_tests/admin/core.test.js46
1 files changed, 43 insertions, 3 deletions
diff --git a/js_tests/admin/core.test.js b/js_tests/admin/core.test.js
index 0d6a12d44c..43fb27a7af 100644
--- a/js_tests/admin/core.test.js
+++ b/js_tests/admin/core.test.js
@@ -57,7 +57,47 @@ test('Date.strftime', function(assert) {
});
test('String.strptime', function(assert) {
- var date = new Date(1988, 1, 26);
- assert.equal('1988-02-26'.strptime('%Y-%m-%d').toString(), date.toString());
- assert.equal('26/02/88'.strptime('%d/%m/%y').toString(), date.toString());
+ // Use UTC functions for extracting dates since the calendar uses them as
+ // well. Month numbering starts with 0 (January).
+ var firstParsedDate = '1988-02-26'.strptime('%Y-%m-%d');
+ assert.equal(firstParsedDate.getUTCDate(), 26);
+ assert.equal(firstParsedDate.getUTCMonth(), 1);
+ assert.equal(firstParsedDate.getUTCFullYear(), 1988);
+
+ var secondParsedDate = '26/02/88'.strptime('%d/%m/%y');
+ assert.equal(secondParsedDate.getUTCDate(), 26);
+ assert.equal(secondParsedDate.getUTCMonth(), 1);
+ assert.equal(secondParsedDate.getUTCFullYear(), 1988);
+
+ var format = django.get_format('DATE_INPUT_FORMATS')[0];
+ var thirdParsedDate = '1983-11-20'.strptime(format);
+
+ assert.equal(thirdParsedDate.getUTCDate(), 20);
+ assert.equal(thirdParsedDate.getUTCMonth(), 10);
+ assert.equal(thirdParsedDate.getUTCFullYear(), 1983);
+
+ // Extracting from a Date object with local time must give the correct
+ // result. Without proper conversion, timezones from GMT+0100 to GMT+1200
+ // gives a date one day earlier than necessary, e.g. converting local time
+ // Feb 26, 1988 00:00:00 EEST is Feb 25, 21:00:00 UTC.
+
+ // Checking timezones from GMT+0100 to GMT+1200
+ var i, tz, date;
+ for (i = 1; i <= 12; i++) {
+ tz = i > 9 ? '' + i : '0' + i;
+ date = new Date(Date.parse('Feb 26, 1988 00:00:00 GMT+' + tz + '00'));
+ assert.notEqual(date.getUTCDate(), 26);
+ assert.equal(date.getUTCDate(), 25);
+ assert.equal(date.getUTCMonth(), 1);
+ assert.equal(date.getUTCFullYear(), 1988);
+ }
+
+ // Checking timezones from GMT+0000 to GMT-1100
+ for (i = 0; i <= 11; i++) {
+ tz = i > 9 ? '' + i : '0' + i;
+ date = new Date(Date.parse('Feb 26, 1988 00:00:00 GMT-' + tz + '00'));
+ assert.equal(date.getUTCDate(), 26);
+ assert.equal(date.getUTCMonth(), 1);
+ assert.equal(date.getUTCFullYear(), 1988);
+ }
});