UNPKG

@onereach/time-interpreter

Version:

Convert dates, durations and time to canonical format (dates -> ISO 8601, durations -> milliseconds).

96 lines (80 loc) 3.27 kB
const jsonfile = require("jsonfile/index.js"); const _ = require("lodash"); const assert = require("assert").strict; const Interpreter = require("../index.js"); const converter = new Interpreter(); // TODO: generate expected results files depending on summer/winter time const objects = jsonfile.readFileSync("test/parse/objects.json"); const times = jsonfile.readFileSync("test/parse/times.json"); const testParseMethod = (assert, describe, input, expected) => { describe("test-1 #parse(date)", function () { input.forEach((date, i) => { if (typeof date === "number") key = "input-" + date; else if (typeof date === "object") key = JSON.stringify(date); else key = date; const expectedResult = expected[key].datetime; const actualResult = converter.parse(date, "", "", "2021"); if (actualResult) delete actualResult.isoWithFractSec; it(key, function () { assert.deepEqual(actualResult, expectedResult); }); }); }); describe("test-2 #parse(date, 'America/Denver')", function () { input.forEach((date, i) => { if (typeof date === "number") key = "input-" + date; else if (typeof date === "object") key = JSON.stringify(date); else key = date; const expectedResult = expected[key].inZone; const actualResult = converter.parse(date, "America/Denver", "", "2021"); if (actualResult) delete actualResult.isoWithFractSec; it(key, function () { assert.deepEqual( actualResult, expectedResult ); }); }); }); describe("test-3 #parse(date, 'America/Denver', '-01:00')", function () { input.forEach((date, i) => { if (typeof date === "number") key = "input-" + date; else if (typeof date === "object") key = JSON.stringify(date); else key = date; const expectedResult = expected[key].outOffset; const actualResult = converter.parse(date, "America/Denver", "-01:00", "2021"); if (actualResult) delete actualResult.isoWithFractSec; it(key, function () { assert.deepEqual( actualResult, expectedResult ); }); }); }); describe("test-4 #parse(date, '+01:00', 'GMT+0', '2021', '2008-12-15')", function () { input.forEach((date, i) => { if (typeof date === "number") key = "input-" + date; else if (typeof date === "object") key = JSON.stringify(date); else key = date; const expectedResult = expected[key].date; const actualResult = converter.parse(date, "+01:00", "GMT+0", "2021", "2008-12-15"); if (actualResult) delete actualResult.isoWithFractSec; it(key, function () { assert.deepEqual( actualResult, expectedResult ); }); }); }); }; // TIMES describe("input string is time value", function () { testParseMethod(assert, describe, Object.keys(times), times); }); // TYPE OF OBJECT describe("input date/datetime object", function () { const obj = Object.keys(objects).map((k) => JSON.parse(k.replace(/\//g, ""))); testParseMethod(assert, describe, obj, objects); });