diff options
Diffstat (limited to 'test/test_helpers.js')
-rw-r--r-- | test/test_helpers.js | 215 |
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; +} |