diff options
author | Stephen Vance <steve@vance.com> | 2013-07-08 22:00:36 -0400 |
---|---|---|
committer | Stephen Vance <steve@vance.com> | 2013-07-08 22:00:36 -0400 |
commit | 4b343728754a485f258a1308f3de3f22120eb098 (patch) | |
tree | f22db6ce930e1dfb67d8b5a6716b470c80543543 | |
parent | 7bc2133a3b589f2fde2d6fe2b0fea658c3109bb0 (diff) | |
download | jQuery-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.js | 6 | ||||
-rw-r--r-- | test/jquery-ui-timepicker-addon_spec.js | 45 |
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 |