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
|
/* 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 = $(
'<input type="text" class="vDateField" value="2015-03-16"><br>',
);
$("#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 = $(
'<input type="text" name="time_test" class="vTimeField">',
);
$("#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 = $(
'<input id="id_updated_at" type="text" name="updated_at" class="vTimeField">',
);
$("#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 =
'<p class="datetime">' +
'<input id="id_updated_at_0" type="text" name="updated_at_0" class="vDateField">' +
'<input id="id_updated_at_1" type="text" name="updated_at_1" class="vTimeField">' +
"</p>";
$("#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",
);
});
|