/* global QUnit, DateTimeShortcuts */ "use strict"; QUnit.module("admin.DateTimeShortcuts", { afterEach: function () { const $ = django.jQuery; $("body") .removeAttr("data-admin-server-timezone") .removeAttr("data-admin-utc-offset"); $(".timezonewarning").remove(); }, }); QUnit.test("init", function (assert) { const $ = django.jQuery; const dateField = $( '
', ); $("#qunit-fixture").append(dateField); DateTimeShortcuts.init(); const shortcuts = $(".datetimeshortcuts"); assert.equal(shortcuts.length, 1); assert.equal(shortcuts.find("a:first").text(), "Today"); assert.equal(shortcuts.find("a:last .date-icon").length, 1); // To prevent incorrect timezone warnings on date/time widgets, timezoneOffset // should be 0 when a timezone offset isn't set in the HTML body attribute. assert.equal(DateTimeShortcuts.timezoneOffset, 0); }); QUnit.test("custom time shortcuts", function (assert) { const $ = django.jQuery; const timeField = $( '', ); $("#qunit-fixture").append(timeField); DateTimeShortcuts.clockHours.time_test = [["3 a.m.", 3]]; DateTimeShortcuts.init(); assert.equal($(".clockbox").find("a").first().text(), "3 a.m."); }); QUnit.test("time zone offset warning - single field", function (assert) { const $ = django.jQuery; const savedOffset = $("body").attr("data-admin-utc-offset"); // Single date or time field. const timeField = $( '', ); $("#qunit-fixture").append(timeField); $("body").attr( "data-admin-utc-offset", new Date().getTimezoneOffset() * -60 + 3600, ); $("body").attr("data-admin-server-timezone", "America/Chicago"); DateTimeShortcuts.init(); $("body").attr("data-admin-utc-offset", savedOffset); assert.equal( $(".timezonewarning").text(), "Note: Enter times in the America/Chicago timezone. " + "(You are 1 hour behind.)", ); assert.equal( $(".timezonewarning").attr("id"), "id_updated_at_timezone_warning_helptext", ); }); QUnit.test("time zone offset warning - date and time field", function (assert) { const $ = django.jQuery; const savedOffset = $("body").attr("data-admin-utc-offset"); // DateTimeField with fieldset containing date and time inputs. const dateTimeField = '

' + '' + '' + "

"; $("#qunit-fixture").append($(dateTimeField)); $("body").attr( "data-admin-utc-offset", new Date().getTimezoneOffset() * -60 + 3600, ); DateTimeShortcuts.init(); $("body").attr("data-admin-utc-offset", savedOffset); assert.equal( $(".timezonewarning").text(), "Note: Enter times in the server timezone. (You are 1 hour behind.)", ); assert.equal( $(".timezonewarning").attr("id"), "id_updated_at_timezone_warning_helptext", ); });