diff options
| author | Alexander Gaevsky <sasha@sasha0.ru> | 2015-12-27 01:32:28 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-01-07 11:13:05 -0500 |
| commit | 44930cc4667268c20493d7e97387db2a97d61a26 (patch) | |
| tree | 97e62d23e9cebb7322fc0db453439e8deb57b00a /js_tests | |
| parent | b5f8c81ce18528ecf7cb4605dca864c961da9373 (diff) | |
Fixed #24980 -- Fixed day determination in admin calendar widget.
Diffstat (limited to 'js_tests')
| -rw-r--r-- | js_tests/admin/core.test.js | 46 |
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); + } }); |
