/* global QUnit */ "use strict"; QUnit.module("admin.core"); QUnit.test("Date.getTwelveHours", function (assert) { assert.equal(new Date(2011, 0, 1, 0, 0).getTwelveHours(), 12, "0:00"); assert.equal(new Date(2011, 0, 1, 11, 0).getTwelveHours(), 11, "11:00"); assert.equal(new Date(2011, 0, 1, 16, 0).getTwelveHours(), 4, "16:00"); }); QUnit.test("Date.getTwoDigitMonth", function (assert) { assert.equal(new Date(2011, 0, 1).getTwoDigitMonth(), "01", "jan 1"); assert.equal(new Date(2011, 9, 1).getTwoDigitMonth(), "10", "oct 1"); }); QUnit.test("Date.getTwoDigitDate", function (assert) { assert.equal(new Date(2011, 0, 1).getTwoDigitDate(), "01", "jan 1"); assert.equal(new Date(2011, 0, 15).getTwoDigitDate(), "15", "jan 15"); }); QUnit.test("Date.getTwoDigitTwelveHour", function (assert) { assert.equal( new Date(2011, 0, 1, 0, 0).getTwoDigitTwelveHour(), "12", "0:00", ); assert.equal( new Date(2011, 0, 1, 4, 0).getTwoDigitTwelveHour(), "04", "4:00", ); assert.equal( new Date(2011, 0, 1, 22, 0).getTwoDigitTwelveHour(), "10", "22:00", ); }); QUnit.test("Date.getTwoDigitHour", function (assert) { assert.equal( new Date(2014, 6, 1, 9, 0).getTwoDigitHour(), "09", "9:00 am is 09", ); assert.equal( new Date(2014, 6, 1, 11, 0).getTwoDigitHour(), "11", "11:00 am is 11", ); }); QUnit.test("Date.getTwoDigitMinute", function (assert) { assert.equal( new Date(2014, 6, 1, 0, 5).getTwoDigitMinute(), "05", "12:05 am is 05", ); assert.equal( new Date(2014, 6, 1, 0, 15).getTwoDigitMinute(), "15", "12:15 am is 15", ); }); QUnit.test("Date.getTwoDigitSecond", function (assert) { assert.equal( new Date(2014, 6, 1, 0, 0, 2).getTwoDigitSecond(), "02", "12:00:02 am is 02", ); assert.equal( new Date(2014, 6, 1, 0, 0, 20).getTwoDigitSecond(), "20", "12:00:20 am is 20", ); }); QUnit.test("Date.getAbbrevMonthName", function (assert) { assert.equal(new Date(2020, 0, 26).getAbbrevMonthName(), "Jan", "jan 26"); assert.equal(new Date(2020, 9, 26).getAbbrevMonthName(), "Oct", "oct 26"); }); QUnit.test("Date.getFullMonthName", function (assert) { assert.equal(new Date(2020, 0, 26).getFullMonthName(), "January", "jan 26"); assert.equal(new Date(2020, 9, 26).getFullMonthName(), "October", "oct 26"); }); QUnit.test("Date.getAbbrevDayName", function (assert) { assert.equal( new Date(2020, 0, 26).getAbbrevDayName(), "Sun", "jan 26 2020 is a Sunday", ); assert.equal( new Date(2020, 9, 26).getAbbrevDayName(), "Mon", "oct 26 2020 is a Monday", ); }); QUnit.test("Date.getFullDayName", function (assert) { assert.equal( new Date(2020, 0, 26).getFullDayName(), "Sunday", "jan 26 2020 is a Sunday", ); assert.equal( new Date(2020, 9, 26).getFullDayName(), "Monday", "oct 26 2020 is a Monday", ); }); QUnit.test("Date.strftime", function (assert) { const date = new Date(2014, 6, 1, 11, 0, 5); assert.equal(date.strftime("%Y-%m-%d %H:%M:%S"), "2014-07-01 11:00:05"); assert.equal(date.strftime("%B %d, %Y"), "July 01, 2014"); assert.equal(date.strftime("%b %d, %Y"), "Jul 01, 2014"); assert.equal(date.strftime("%a %d %m %y"), "Tue 01 07 14"); assert.equal( date.strftime("%A (day %w of week) %I %p"), "Tuesday (day 02 of week) 11 AM", ); }); QUnit.test("String.strptime", function (assert) { // Use UTC functions for extracting dates since the calendar uses them as // well. Month numbering starts with 0 (January). const firstParsedDate = "1988-02-26".strptime("%Y-%m-%d"); assert.equal(firstParsedDate.getUTCDate(), 26); assert.equal(firstParsedDate.getUTCMonth(), 1); assert.equal(firstParsedDate.getUTCFullYear(), 1988); // A %y value in the range of [69, 99] is in the previous century. const secondParsedDate = "26/02/88".strptime("%d/%m/%y"); assert.equal(secondParsedDate.getUTCDate(), 26); assert.equal(secondParsedDate.getUTCMonth(), 1); assert.equal(secondParsedDate.getUTCFullYear(), 1988); const format = django.get_format("DATE_INPUT_FORMATS")[0]; const thirdParsedDate = "1983-11-20".strptime(format); assert.equal(thirdParsedDate.getUTCDate(), 20); assert.equal(thirdParsedDate.getUTCMonth(), 10); assert.equal(thirdParsedDate.getUTCFullYear(), 1983); // A %y value in the range of [00, 68] is in the current century. const fourthParsedDate = "27/09/68".strptime("%d/%m/%y"); assert.equal(fourthParsedDate.getUTCDate(), 27); assert.equal(fourthParsedDate.getUTCMonth(), 8); assert.equal(fourthParsedDate.getUTCFullYear(), 2068); // 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 for (let i = 1; i <= 12; i++) { const tz = i > 9 ? "" + i : "0" + i; const 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 (let i = 0; i <= 11; i++) { const tz = i > 9 ? "" + i : "0" + i; const 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); } });