UNPKG

@jokio/graphql

Version:

High level, pre-configured, GraphQL Server

154 lines (142 loc) 6.09 kB
// @flow /** * Copyright (c) 2017, Dirk-Jan Rutten * All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ import { serializeTime, serializeTimeString, serializeDate, serializeDateTime, serializeDateTimeString, serializeUnixTimestamp, parseTime, parseDate, parseDateTime } from '../' import {stringify} from 'jest-matcher-utils' import MockDate from 'mockdate' // Mock the new Date() call so it always returns 2017-01-01T00:00:00.000Z MockDate.set(new Date(Date.UTC(2017, 0, 1))) describe('formatting', () => { [ [ new Date(Date.UTC(2016, 1, 1)), '00:00:00.000Z' ], [ new Date(Date.UTC(2016, 1, 1, 2, 4, 10, 344)), '02:04:10.344Z' ] ].forEach(([date, time]) => { it(`serializes ${stringify(date)} into time-string ${time}`, () => { expect(serializeTime(date)).toEqual(time) }) }); [ [ '00:00:00.000Z', '00:00:00.000Z' ], [ '12:23:44Z', '12:23:44Z' ], [ '14:38:12+01:00', '13:38:12Z' ], [ '00:00:00.4567+01:30', '22:30:00.4567Z' ], [ '14:38:12.1+01:00', '13:38:12.1Z' ] ].forEach(([input, output]) => { it(`serializes time-string ${input} into UTC time-string ${output}`, () => { expect(serializeTimeString(input)).toEqual(output) }) }); [ [ new Date(Date.UTC(2016, 1, 1)), '2016-02-01' ], [ new Date(Date.UTC(2016, 1, 1, 4, 5, 5)), '2016-02-01' ], [ new Date(Date.UTC(2016, 2, 3)), '2016-03-03' ] ].forEach(([date, dateString]) => { it(`serializes ${stringify(date)} into date-string ${dateString}`, () => { expect(serializeDate(date)).toEqual(dateString) }) }); [ [ new Date(Date.UTC(2016, 1, 1)), '2016-02-01T00:00:00.000Z' ], [ new Date(Date.UTC(2016, 3, 5, 10, 1, 4, 555)), '2016-04-05T10:01:04.555Z' ] ].forEach(([date, dateTimeString]) => { it(`serializes ${stringify(date)} into date-time-string ${dateTimeString}`, () => { expect(serializeDateTime(date)).toEqual(dateTimeString) }) }); [ [ new Date(Date.UTC(2016, 1, 1)), '2016-02-01T00:00:00.000Z' ], [ new Date(Date.UTC(2016, 3, 5, 10, 1, 4, 555)), '2016-04-05T10:01:04.555Z' ] ].forEach(([date, dateTimeString]) => { it(`serializes ${stringify(date)} into date-time-string ${dateTimeString}`, () => { expect(serializeDateTime(date)).toEqual(dateTimeString) }) }); [ [ 854325678, '1997-01-27T00:41:18.000Z' ], [ 876535, '1970-01-11T03:28:55.000Z' ], [ 876535.8, '1970-01-11T03:28:55.800Z' ], [ 876535.8321, '1970-01-11T03:28:55.832Z' ], [ -876535.8, '1969-12-21T20:31:04.200Z' ], [ 0, '1970-01-01T00:00:00.000Z' ], // The maximum representable unix timestamp [ 2147483647, '2038-01-19T03:14:07.000Z' ], // The minimum representable unit timestamp [ -2147483648, '1901-12-13T20:45:52.000Z' ] ].forEach(([timestamp, dateTimeString]) => { it(`serializes Unix timestamp ${stringify(timestamp)} into date-time-string ${dateTimeString}`, () => { expect(serializeUnixTimestamp(timestamp)).toEqual(dateTimeString) }) }); [ [ '00:00:59Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 59)) ], [ '00:00:00+01:30', new Date(Date.UTC(2016, 11, 31, 22, 30)) ], [ '00:00:00.1Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 0, 100)) ], [ '00:00:00.12Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 0, 120)) ], [ '00:00:00.000Z', new Date(Date.UTC(2017, 0, 1)) ], [ '00:00:00.993Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 0, 993)) ], [ '00:00:00.123456Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 0, 123)) ], // No rounding takes place! [ '00:00:00.12399Z', new Date(Date.UTC(2017, 0, 1, 0, 0, 0, 123)) ], [ '00:00:00.450+01:30', new Date(Date.UTC(2016, 11, 31, 22, 30, 0, 450)) ], [ '00:00:00.450-01:30', new Date(Date.UTC(2017, 0, 1, 1, 30, 0, 450)) ] ].forEach(([time, date]) => { it(`parses time ${stringify(time)} into Date ${stringify(date)}`, () => { expect(parseTime(time)).toEqual(date) }) }); [ [ '2016-12-17', new Date(Date.UTC(2016, 11, 17)) ], [ '2016-02-01', new Date(Date.UTC(2016, 1, 1)) ] ].forEach(([dateString, date]) => { it(`parses date ${stringify(dateString)} into Date ${stringify(date)}`, () => { expect(parseDate(dateString)).toEqual(date) }) }); [ // Datetime with hours, minutes and seconds [ '2016-02-01T00:00:00Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0)) ], [ '2016-02-01T00:00:15Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 15)) ], [ '2016-02-01T00:00:59Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 59)) ], [ '2016-02-01T00:00:00-11:00', new Date(Date.UTC(2016, 1, 1, 11)) ], [ '2017-01-07T11:25:00+01:00', new Date(Date.UTC(2017, 0, 7, 10, 25)) ], [ '2017-01-07T00:00:00+01:00', new Date(Date.UTC(2017, 0, 6, 23)) ], // Datetime with hours, minutes, seconds and fractional seconds. [ '2016-02-01T00:00:00.12Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0, 120)) ], [ '2016-02-01T00:00:00.123456Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0, 123)) ], [ '2016-02-01T00:00:00.12399Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0, 123)) ], [ '2016-02-01T00:00:00.000Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0, 0)) ], [ '2016-02-01T00:00:00.993Z', new Date(Date.UTC(2016, 1, 1, 0, 0, 0, 993)) ], [ '2017-01-07T11:25:00.450+01:00', new Date(Date.UTC(2017, 0, 7, 10, 25, 0, 450)) ] ].forEach(([dateTime, date]) => { it(`parses date-time ${stringify(dateTime)} into Date ${stringify(date)}`, () => { expect(parseDateTime(dateTime)).toEqual(date) }) }); [ [ '2016-02-01T00:00:00Z', '2016-02-01T00:00:00Z' ], [ '2016-02-01T12:23:44Z', '2016-02-01T12:23:44Z' ], [ '2016-02-01T14:38:12-01:00', '2016-02-01T15:38:12Z' ], [ '2016-02-02T00:00:00.4567+01:30', '2016-02-01T22:30:00.4567Z' ], [ '2016-02-01T14:38:12.1+01:00', '2016-02-01T13:38:12.1Z' ] ].forEach(([input, output]) => { it(`serializes date-time-string ${input} into UTC date-time-string ${output}`, () => { expect(serializeDateTimeString(input)).toEqual(output) }) }) })