diff --git a/frontend/test/unit/lib/time.spec.js b/frontend/test/unit/lib/time.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..f4db03f022a49e061fd60ae5cd6d245cdec09963 --- /dev/null +++ b/frontend/test/unit/lib/time.spec.js @@ -0,0 +1,38 @@ +import { parseTimestamp } from 'metabase/lib/time'; +import moment from 'moment'; + +describe('time', () => { + describe('parseTimestamp', () => { + const NY15_TOKYO = moment(1420038000000); // 2014-12-31 15:00 UTC + const NY15_UTC = moment(1420070400000); // 2015-01-01 00:00 UTC + const NY15_LA = moment(1420099200000); // 2015-01-01 00:00 UTC + + + const TEST_CASES = [ + ['2015-01-01T00:00:00.000Z', 0, NY15_UTC], + ['2015-01-01T00:00:00.000+00:00', 0, NY15_UTC], + ['2015-01-01T00:00:00.000+0000', 0, NY15_UTC], + ['2015-01-01T00:00:00Z', 0, NY15_UTC], + + ['2015-01-01T00:00:00.000+09:00', 540, NY15_TOKYO], + ['2015-01-01T00:00:00.000+0900', 540, NY15_TOKYO], + ['2015-01-01T00:00:00+09:00', 540, NY15_TOKYO], + ['2015-01-01T00:00:00+0900', 540, NY15_TOKYO], + + ['2015-01-01T00:00:00.000-08:00', -480, NY15_LA], + ['2015-01-01T00:00:00.000-0800', -480, NY15_LA], + ['2015-01-01T00:00:00-08:00', -480, NY15_LA], + ['2015-01-01T00:00:00-0800', -480, NY15_LA]] + + TEST_CASES.map(([str, expectedOffset, expectedMoment]) => { + it(str + ' should be parsed as moment reprsenting' + expectedMoment + "with the offset " + expectedOffset, () => { + let result = parseTimestamp(str); + + expect(moment.isMoment(result)).toBe(true); + expect(result.utcOffset()).toBe(expectedOffset); + expect(result.unix()).toEqual(expectedMoment.unix()); + }); + }); + + }); +}); diff --git a/package.json b/package.json index a61d2d52a5a9664c1423c952d12f360ac01cdcb5..23fc7aee8bf1cdcbcadb0cf4b8889d66de004fa0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "isomorphic-fetch": "^2.2.1", "js-cookie": "^2.1.2", "leaflet": "^0.7.7", - "moment": "^2.12.0", + "moment": "2.14.1", "node-libs-browser": "^0.5.3", "normalizr": "^2.0.0", "number-to-locale-string": "^1.0.1",