summaryrefslogtreecommitdiff
path: root/test/test_helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_helpers.js')
-rw-r--r--test/test_helpers.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/test/test_helpers.js b/test/test_helpers.js
new file mode 100644
index 0000000..607005a
--- /dev/null
+++ b/test/test_helpers.js
@@ -0,0 +1,215 @@
+var zeropad = function (num) {
+ return ((num < 10) ? '0' : '') + num;
+};
+var iso8601 = function (date) {
+ return date.getUTCFullYear()
+ + "-" + zeropad(date.getUTCMonth()+1)
+ + "-" + zeropad(date.getUTCDate())
+ + "T" + zeropad(date.getUTCHours())
+ + ":" + zeropad(date.getUTCMinutes())
+ + ":" + zeropad(date.getUTCSeconds()) + "Z";
+};
+
+function prepareDynamicDates() {
+ $('time.loaded').attr("datetime", iso8601(new Date()));
+ $('time.modified').attr("datetime", iso8601(new Date(document.lastModified)));
+}
+
+function loadNumbers() {
+ jQuery.timeago.settings.strings.numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
+}
+function unloadNumbers() {
+ jQuery.timeago.settings.strings.numbers = [];
+}
+
+function loadCutoffSetting() {
+ jQuery.timeago.settings.cutoff = 7*24*60*60*1000;
+}
+
+function unloadCutoffSetting() {
+ jQuery.timeago.settings.cutoff = 0;
+}
+
+function setupDisposal() {
+ jQuery.timeago.settings.refreshMillis = 25;
+ $('abbr.disposal').attr("title", iso8601(new Date())).timeago();
+}
+
+function loadPigLatin() {
+ jQuery.timeago.settings.strings = {
+ suffixAgo: "ago-hay",
+ suffixFromNow: "omNow-fray",
+ seconds: "ess-lay an-thay a-hay inute-may",
+ minute: "about-hay a-hay inute-may",
+ minutes: "%d inutes-may",
+ hour: "about-hay an-hay hour-hay",
+ hours: "about-hay %d hours-hay",
+ day: "a-hay ay-day",
+ days: "%d ays-day",
+ month: "about-hay a-hay onth-may",
+ months: "%d onths-may",
+ year: "about-hay a-hay ear-yay",
+ years: "%d years-yay"
+ };
+}
+
+function loadRussian() {
+ (function() {
+ function numpf(n, f, s, t) {
+ // f - 1, 21, 31, ...
+ // s - 2-4, 22-24, 32-34 ...
+ // t - 5-20, 25-30, ...
+ var n10 = n % 10;
+ if ( (n10 === 1) && ( (n === 1) || (n > 20) ) ) {
+ return f;
+ } else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
+ return s;
+ } else {
+ return t;
+ }
+ }
+
+ jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: "через",
+ suffixAgo: "назад",
+ suffixFromNow: null,
+ seconds: "меньше минуты",
+ minute: "минуту",
+ minutes: function(value) { return numpf(value, "%d минута", "%d минуты", "%d минут"); },
+ hour: "час",
+ hours: function(value) { return numpf(value, "%d час", "%d часа", "%d часов"); },
+ day: "день",
+ days: function(value) { return numpf(value, "%d день", "%d дня", "%d дней"); },
+ month: "месяц",
+ months: function(value) { return numpf(value, "%d месяц", "%d месяца", "%d месяцев"); },
+ year: "год",
+ years: function(value) { return numpf(value, "%d год", "%d года", "%d лет"); }
+ };
+ })();
+}
+
+function loadBelarusian() {
+ (function() {
+ function numpf(n, f, s, t) {
+ // f - 1, 21, 31, ...
+ // s - 2-4, 22-24, 32-34 ...
+ // t - 5-20, 25-30, ...
+ var n10 = n % 10;
+ if ( (n10 === 1) && ( (n === 1) || (n > 20) ) ) {
+ return f;
+ } else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
+ return s;
+ } else {
+ return t;
+ }
+ }
+
+ jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: "праз",
+ suffixAgo: "таму",
+ suffixFromNow: null,
+ seconds: "менш хвіліны",
+ minute: "хвіліну",
+ minutes: function(value) { return numpf(value, "%d хвіліна", "%d хвіліны", "%d хвілін"); },
+ hour: "гадзіну",
+ hours: function(value) { return numpf(value, "%d гадзіна", "%d гадзіны", "%d гадзін"); },
+ day: "дзень",
+ days: function(value) { return numpf(value, "%d дзень", "%d дні", "%d дзён"); },
+ month: "месяц",
+ months: function(value) { return numpf(value, "%d месяц", "%d месяцы", "%d месяцаў"); },
+ year: "год",
+ years: function(value) { return numpf(value, "%d год", "%d гады", "%d гадоў"); }
+ };
+ })();
+}
+
+function resetRefreshMillis() {
+ jQuery.timeago.settings.refreshMillis = 60000;
+}
+
+function loadMillis() {
+ var millisSubstitution = function(number, millis) { return millis + " milliseconds"; };
+ jQuery.timeago.settings.strings = {
+ suffixAgo: "ago",
+ suffixFromNow: "from now",
+ seconds: millisSubstitution,
+ minute: millisSubstitution,
+ minutes: millisSubstitution,
+ hour: millisSubstitution,
+ hours: millisSubstitution,
+ day: millisSubstitution,
+ days: millisSubstitution,
+ month: millisSubstitution,
+ months: millisSubstitution,
+ year: millisSubstitution,
+ years: millisSubstitution
+ };
+}
+
+function loadNoSpaces() {
+ jQuery.extend(jQuery.timeago.settings.strings, {
+ minutes: "%dminutes",
+ wordSeparator: ""
+ });
+}
+
+function loadNullSpaces() {
+ jQuery.extend(jQuery.timeago.settings.strings, {
+ minutes: "%dminutes",
+ wordSeparator: null
+ });
+}
+
+function loadYoungOldYears() {
+ jQuery.extend(jQuery.timeago.settings.strings, {
+ years: function(value) { return (value < 21) ? "%d young years" : "%d old years"; }
+ });
+}
+
+function loadDoNotAllowFuture() {
+ var mockDateToUse = "2010-01-01";
+ $.timeago.settings.allowFuture = false;
+ enableMockedDate(mockDateToUse);
+}
+
+function unloadDoNotAllowFuture() {
+ $.timeago.settings.allowFuture = true;
+ disableMockedDate();
+}
+
+function loadDoNotAllowPast() {
+ var mockDateToUse = "2010-01-01";
+ $.timeago.settings.allowFuture = true;
+ $.timeago.settings.allowPast = false;
+ $.timeago.settings.strings.inPast = "in the past";
+ enableMockedDate(mockDateToUse);
+}
+
+function unloadDoNotAllowPast() {
+ $.timeago.settings.allowFuture = true;
+ $.timeago.settings.allowPast = true;
+ disableMockedDate();
+}
+
+function enableMockedDate(dateToReturn) {
+ var mockDate = dateToReturn;
+ window.NativeDate = Date;
+ window.Date = function () {
+ if(arguments.length === 0) {
+ return new window.NativeDate(mockDate);
+ } else if(arguments.length === 1) {
+ return new window.NativeDate(arguments[0]);
+ } else if(arguments.length === 7) {
+ return new window.NativeDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
+ } else {
+ throw "Mocking Date with this number of parameters is not implemented.";
+ }
+ };
+}
+
+function disableMockedDate() {
+ window.Date = window.NativeDate;
+ delete window.NativeDate;
+}