@onereach/time-interpreter
Version:
Convert dates, durations and time to canonical format (dates -> ISO 8601, durations -> milliseconds).
60 lines (51 loc) • 2.09 kB
JavaScript
const jsonfile = require("jsonfile/index.js");
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/formatTime/objects.json");
const numbers = jsonfile.readFileSync("test/formatTime/numbers.json");
const stringNumbers = jsonfile.readFileSync(
"test/formatTime/string-numbers.json"
);
const times = jsonfile.readFileSync("test/formatTime/times.json");
const invalid = jsonfile.readFileSync("test/formatTime/invalid.json");
const testFormatTime = (assert, describe, input, expected) => {
const defResult = {
"offsetNum": undefined,
"time": undefined,
"timezoneOffset": undefined,
"zoneName": undefined
};
describe("test-1 #formatTime(time, '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;
let expectedResult = expected[key].inZone;
const actualResult = converter.formatTime(date, "America/Denver");
if (actualResult) delete actualResult.timeWithFractSec;
if (JSON.stringify(expectedResult) === "{}") expectedResult = defResult;
it(key, function () {
assert.deepEqual(
actualResult,
expectedResult
);
});
});
});
describe("test-2 #formatTime(time, '+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;
let expectedResult = expected[key].inOffset;
const actualResult = converter.formatTime(date, "+01:00");
if (actualResult) delete actualResult.timeWithFractSec;
if (JSON.stringify(expectedResult) === "{}") expectedResult = defResult;
it(key, function () {
assert.deepEqual(actualResult, expectedResult);
});
});
});
};