mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
node -> v8.9.4 yarn -> 1.5.1 nvm -> 0.33.8 Also updates a test in timerender.js which depends on time provided by node which is now changed in newer release. Some changes have been made in circeci script, we just create ~/.config directory and chown it to circleci user so installing new version of yarn does not cause any ci failure on circleci during provision.
292 lines
10 KiB
JavaScript
292 lines
10 KiB
JavaScript
set_global('$', global.make_zjquery());
|
||
set_global('i18n', global.stub_i18n);
|
||
set_global('page_params' , {
|
||
twenty_four_hour_time: true,
|
||
});
|
||
zrequire('XDate', 'xdate');
|
||
zrequire('timerender');
|
||
|
||
(function test_render_now_returns_today() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var expected = {
|
||
time_str: i18n.t('Today'),
|
||
formal_time_str: 'Friday, April 12, 2019',
|
||
needs_update: true,
|
||
};
|
||
var actual = timerender.render_now(today, today);
|
||
assert.equal(expected.time_str, actual.time_str);
|
||
assert.equal(expected.formal_time_str, actual.formal_time_str);
|
||
assert.equal(expected.needs_update, actual.needs_update);
|
||
}());
|
||
|
||
(function test_render_now_returns_yesterday() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var yesterday = today.clone().addDays(-1);
|
||
var expected = {
|
||
time_str: i18n.t('Yesterday'),
|
||
formal_time_str: 'Thursday, April 11, 2019',
|
||
needs_update: true,
|
||
};
|
||
var actual = timerender.render_now(yesterday, today);
|
||
assert.equal(expected.time_str, actual.time_str);
|
||
assert.equal(expected.formal_time_str, actual.formal_time_str);
|
||
assert.equal(expected.needs_update, actual.needs_update);
|
||
}());
|
||
|
||
(function test_render_now_returns_year() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var year_ago = today.clone().addYears(-1);
|
||
var expected = {
|
||
time_str: 'Apr 12, 2018',
|
||
formal_time_str: 'Thursday, April 12, 2018',
|
||
needs_update: false,
|
||
};
|
||
var actual = timerender.render_now(year_ago, today);
|
||
assert.equal(expected.time_str, actual.time_str);
|
||
assert.equal(expected.formal_time_str, actual.formal_time_str);
|
||
assert.equal(expected.needs_update, actual.needs_update);
|
||
}());
|
||
|
||
(function test_render_now_returns_month_and_day() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var three_months_ago = today.clone().addMonths(-3, true);
|
||
var expected = {
|
||
time_str: 'Jan 12',
|
||
formal_time_str: 'Saturday, January 12, 2019',
|
||
needs_update: false,
|
||
};
|
||
var actual = timerender.render_now(three_months_ago, today);
|
||
assert.equal(expected.time_str, actual.time_str);
|
||
assert.equal(expected.formal_time_str, actual.formal_time_str);
|
||
assert.equal(expected.needs_update, actual.needs_update);
|
||
}());
|
||
|
||
(function test_render_now_returns_year_with_year_boundary() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var three_months_ago = today.clone().addMonths(-6, true);
|
||
var expected = {
|
||
time_str: 'Oct 12, 2018',
|
||
formal_time_str: 'Friday, October 12, 2018',
|
||
needs_update: false,
|
||
};
|
||
var actual = timerender.render_now(three_months_ago, today);
|
||
assert.equal(expected.time_str, actual.time_str);
|
||
assert.equal(expected.formal_time_str, actual.formal_time_str);
|
||
assert.equal(expected.needs_update, actual.needs_update);
|
||
}());
|
||
|
||
(function test_render_date_renders_time_html() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var message_time = today.clone();
|
||
var expected_html = i18n.t('Today');
|
||
|
||
var attrs = new Dict();
|
||
var span_stub = $('<span />');
|
||
|
||
span_stub.attr = function (name, val) {
|
||
attrs.set(name, val);
|
||
return span_stub;
|
||
};
|
||
|
||
span_stub.append = function (str) {
|
||
span_stub.html(str);
|
||
return span_stub;
|
||
};
|
||
|
||
var actual = timerender.render_date(message_time, undefined, today);
|
||
assert.equal(expected_html, actual.html());
|
||
assert.equal(attrs.get('title'), 'Friday, April 12, 2019');
|
||
assert.equal(attrs.get('class'), 'timerender0');
|
||
}());
|
||
|
||
(function test_render_date_renders_time_above_html() {
|
||
var today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
|
||
var message_time = today.clone();
|
||
var message_time_above = today.clone().addDays(-1);
|
||
|
||
var span_stub = $('<span />');
|
||
|
||
var appended_val;
|
||
span_stub.append = function (val) {
|
||
appended_val = val;
|
||
return span_stub;
|
||
};
|
||
|
||
var expected = [
|
||
'<i class="date-direction icon-vector-caret-up"></i>',
|
||
i18n.t('Yesterday'),
|
||
'<hr class="date-line">',
|
||
'<i class="date-direction icon-vector-caret-down"></i>',
|
||
i18n.t('Today'),
|
||
];
|
||
|
||
timerender.render_date(message_time, message_time_above, today);
|
||
assert.deepEqual(appended_val, expected);
|
||
}());
|
||
|
||
(function test_get_full_time() {
|
||
var timestamp = 1495091573; // 5/18/2017 7:12:53 AM (UTC+0)
|
||
var expected = '2017-05-18T07:12:53Z'; // ISO 8601 date format
|
||
var actual = timerender.get_full_time(timestamp);
|
||
assert.equal(expected, actual);
|
||
}());
|
||
|
||
(function test_absolute_time_12_hour() {
|
||
set_global('page_params', {
|
||
twenty_four_hour_time: false,
|
||
});
|
||
|
||
// timestamp with hour > 12, same year
|
||
var timestamp = 1555091573000; // 4/12/2019 5:52:53 PM (UTC+0)
|
||
var today = new Date(timestamp);
|
||
var expected = 'Apr 12 05:52 PM';
|
||
var actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour > 12, different year
|
||
today.setFullYear(today.getFullYear() + 1);
|
||
expected = 'Apr 12, 2019 05:52 PM';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour < 12, same year
|
||
timestamp = 1495091573000; // 5/18/2017 7:12:53 AM (UTC+0)
|
||
today = new Date(timestamp);
|
||
expected = 'May 18 07:12 AM';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour < 12, different year
|
||
today.setFullYear(today.getFullYear() + 1);
|
||
expected = 'May 18, 2017 07:12 AM';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
}());
|
||
|
||
(function test_absolute_time_24_hour() {
|
||
set_global('page_params', {
|
||
twenty_four_hour_time: true,
|
||
});
|
||
|
||
// timestamp with hour > 12, same year
|
||
var timestamp = 1555091573000; // 4/12/2019 5:52:53 PM (UTC+0)
|
||
var today = new Date(timestamp);
|
||
var expected = 'Apr 12 17:52';
|
||
var actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour > 12, different year
|
||
today.setFullYear(today.getFullYear() + 1);
|
||
expected = 'Apr 12, 2019 17:52';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour < 12, same year
|
||
timestamp = 1495091573000; // 5/18/2017 7:12:53 AM (UTC+0)
|
||
today = new Date(timestamp);
|
||
expected = 'May 18 07:12';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
|
||
// timestamp with hour < 12, different year
|
||
today.setFullYear(today.getFullYear() + 1);
|
||
expected = 'May 18, 2017 07:12';
|
||
actual = timerender.absolute_time(timestamp, today);
|
||
assert.equal(expected, actual);
|
||
}());
|
||
|
||
(function test_set_full_datetime() {
|
||
var message = {
|
||
timestamp: 1495091573, // 2017-5-18 07:12:53 AM (UTC+0)
|
||
};
|
||
var time_element = $('<span/>');
|
||
var attrs = new Dict();
|
||
|
||
time_element.attr = function (name, val) {
|
||
attrs.set(name, val);
|
||
return time_element;
|
||
};
|
||
|
||
// since node >= 8 date.toLocaleDateString and
|
||
// date.toLocaleTimeString have been changed, instead of
|
||
// returning 5/18/2017 7:12:53 AM (UTC+0) they now return
|
||
// 2017-5-18 07:12:53 (UTC+0) - This change does not affect browsers
|
||
// since browsers have their own way of returning string that is
|
||
// or maybe inconsistenc with node's way.
|
||
var time = new Date(message.timestamp * 1000);
|
||
var expected = `${time.toLocaleDateString()} 07:12:53 (UTC+0)`;
|
||
timerender.set_full_datetime(message, time_element);
|
||
var actual = attrs.get('title');
|
||
assert.equal(expected, actual);
|
||
}());
|
||
|
||
(function test_last_seen_status_from_date() {
|
||
// Set base_dateto to March 1 2016 12.30 AM (months are zero based)
|
||
var base_date = new XDate(2016, 2, 1, 0, 30);
|
||
|
||
function assert_same(modifier, expected_status) {
|
||
var past_date = base_date.clone();
|
||
past_date = modifier(past_date);
|
||
var actual_status = timerender.last_seen_status_from_date(past_date, base_date);
|
||
assert.equal(actual_status, expected_status);
|
||
}
|
||
|
||
assert_same(function (d) { return d.addSeconds(-20); },
|
||
i18n.t("Last seen just now"));
|
||
|
||
assert_same(function (d) { return d.addMinutes(-1); },
|
||
i18n.t("Last seen just now"));
|
||
|
||
assert_same(function (d) { return d.addMinutes(-2); },
|
||
i18n.t("Last seen just now"));
|
||
|
||
assert_same(function (d) { return d.addMinutes(-30); },
|
||
i18n.t("Last seen 30 minutes ago"));
|
||
|
||
assert_same(function (d) { return d.addHours(-1); },
|
||
i18n.t("Last seen an hour ago"));
|
||
|
||
assert_same(function (d) { return d.addHours(-2); },
|
||
i18n.t("Last seen 2 hours ago"));
|
||
|
||
assert_same(function (d) { return d.addHours(-20); },
|
||
i18n.t("Last seen 20 hours ago"));
|
||
|
||
assert_same(function (d) { return d.addDays(-1); },
|
||
i18n.t("Last seen yesterday"));
|
||
|
||
assert_same(function (d) { return d.addDays(-2); },
|
||
i18n.t("Last seen on Feb 28"));
|
||
|
||
assert_same(function (d) { return d.addDays(-61); },
|
||
i18n.t("Last seen on Dec 31"));
|
||
|
||
assert_same(function (d) { return d.addDays(-300); },
|
||
i18n.t("Last seen on May 06"));
|
||
|
||
assert_same(function (d) { return d.addDays(-366); },
|
||
i18n.t("Last seen on Mar 01, 2015"));
|
||
|
||
assert_same(function (d) { return d.addYears(-3); },
|
||
i18n.t("Last seen on Mar 01, 2013"));
|
||
|
||
}());
|
||
|
||
(function test_set_full_datetime() {
|
||
var time = new XDate(1549958107000); // Tuesday 2/12/2019 07:55:07 AM (UTC+0)
|
||
var time_str = timerender.stringify_time(time);
|
||
var expected = '07:55';
|
||
assert.equal(expected, time_str);
|
||
|
||
page_params.twenty_four_hour_time = false;
|
||
time_str = timerender.stringify_time(time);
|
||
expected = '7:55 AM';
|
||
assert.equal(expected, time_str);
|
||
|
||
time = new XDate(1549979707000); // Tuesday 2/12/2019 13:55:07 PM (UTC+0)
|
||
page_params.twenty_four_hour_time = false;
|
||
time_str = timerender.stringify_time(time);
|
||
expected = '1:55 PM';
|
||
assert.equal(expected, time_str);
|
||
}());
|