summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Vance <steve@vance.com>2013-07-08 22:00:36 -0400
committerStephen Vance <steve@vance.com>2013-07-08 22:00:36 -0400
commit4b343728754a485f258a1308f3de3f22120eb098 (patch)
treef22db6ce930e1dfb67d8b5a6716b470c80543543
parent7bc2133a3b589f2fde2d6fe2b0fea658c3109bb0 (diff)
downloadjQuery-Timepicker-Addon-4b343728754a485f258a1308f3de3f22120eb098.zip
jQuery-Timepicker-Addon-4b343728754a485f258a1308f3de3f22120eb098.tar.gz
jQuery-Timepicker-Addon-4b343728754a485f258a1308f3de3f22120eb098.tar.bz2
Test timepicker.timezoneOffsetString(). Fix lower range issue and simplify formatting of output string by eliminating 'magic' 101 values.
-rw-r--r--jquery-ui-timepicker-addon.js6
-rw-r--r--test/jquery-ui-timepicker-addon_spec.js45
2 files changed, 48 insertions, 3 deletions
diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js
index d526bed..0b0d2e3 100644
--- a/jquery-ui-timepicker-addon.js
+++ b/jquery-ui-timepicker-addon.js
@@ -1915,12 +1915,12 @@
/**
* Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)
- * @param {number} tzMinutes if not a number this value is returned
+ * @param {number} tzMinutes if not a number, less than -720 (-1200), or greater than 840 (+1400) this value is returned
* @param {boolean} iso8601 if true formats in accordance to iso8601 "+12:45"
* @return {string}
*/
$.timepicker.timezoneOffsetString = function(tzMinutes, iso8601) {
- if(isNaN(tzMinutes) || tzMinutes > 840){
+ if(isNaN(tzMinutes) || tzMinutes > 840 || tzMinutes < -720){
return tzMinutes;
}
@@ -1928,7 +1928,7 @@
minutes = off % 60,
hours = (off - minutes) / 60,
iso = iso8601? ':':'',
- tz = (off >= 0 ? '+' : '-') + ('0' + (hours * 101).toString()).slice(-2) + iso + ('0' + (minutes * 101).toString()).slice(-2);
+ tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
if(tz == '+00:00'){
return 'Z';
diff --git a/test/jquery-ui-timepicker-addon_spec.js b/test/jquery-ui-timepicker-addon_spec.js
index d2fb99d..3eb2da5 100644
--- a/test/jquery-ui-timepicker-addon_spec.js
+++ b/test/jquery-ui-timepicker-addon_spec.js
@@ -220,5 +220,50 @@ describe('datetimepicker', function() {
expect($.timepicker.timezoneOffsetNumber('+0400')).toBe(240);
});
});
+
+ describe('timezoneOffsetString', function() {
+ it('returns NaN if the input is NaN', function() {
+ expect($.timepicker.timezoneOffsetString(NaN)).toBeNaN();
+ });
+
+ it('returns the input if the input is greater than 840 (+14:00)', function() {
+ var expectedMinutes = 850;
+
+ var actualMinutes = $.timepicker.timezoneOffsetString(expectedMinutes);
+
+ expect(actualMinutes).toBe(expectedMinutes);
+ });
+
+ it('returns the input if the input is less than -720 (-12:00)', function() {
+ var expectedMinutes = -730;
+
+ var actualMinutes = $.timepicker.timezoneOffsetString(expectedMinutes);
+
+ expect(actualMinutes).toBe(expectedMinutes);
+ });
+
+ it('returns "Z" if the offset is 0 and iso8601 is true', function() {
+ expect($.timepicker.timezoneOffsetString(0, true)).toBe('Z');
+ });
+
+ it('returns the expected offset string for non-iso8601 values', function() {
+ expect($.timepicker.timezoneOffsetString(0, false)).toBe('+0000');
+ expect($.timepicker.timezoneOffsetString(60, false)).toBe('+0100');
+ expect($.timepicker.timezoneOffsetString(480, false)).toBe('+0800');
+ expect($.timepicker.timezoneOffsetString(-60, false)).toBe('-0100');
+ expect($.timepicker.timezoneOffsetString(-480, false)).toBe('-0800');
+ expect($.timepicker.timezoneOffsetString(-720, false)).toBe('-1200');
+ expect($.timepicker.timezoneOffsetString(840, false)).toBe('+1400');
+ });
+
+ it('returns the expected offset string for iso8601 values', function() {
+ expect($.timepicker.timezoneOffsetString(60, true)).toBe('+01:00');
+ expect($.timepicker.timezoneOffsetString(480, true)).toBe('+08:00');
+ expect($.timepicker.timezoneOffsetString(-60, true)).toBe('-01:00');
+ expect($.timepicker.timezoneOffsetString(-480, true)).toBe('-08:00');
+ expect($.timepicker.timezoneOffsetString(-720, true)).toBe('-12:00');
+ expect($.timepicker.timezoneOffsetString(840, true)).toBe('+14:00');
+ });
+ });
});
}); \ No newline at end of file