UNPKG

@bjesuiter/serializr-helpers

Version:

Provides some helper functions and serialization PropertySchemas for mobxjs/serializr - library

153 lines (152 loc) 8.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var moment_1 = __importDefault(require("moment")); var test_iso_model_1 = require("../test-utils/test-iso-model"); var serializr_1 = require("serializr"); var test_iso_utc_model_1 = require("../test-utils/test-iso-utc-model"); var serializr_helpers_1 = require("./serializr-helpers"); var moment_serialization_schema_1 = require("./moment-serialization-schema"); describe('MomentSerializationScheme', function () { var testIsoLocalString = '2019-06-10T08:50:23.559+02:00'; var testIsoUtcString = '2019-06-10T06:50:23.559Z'; describe('MomentIsoSerialization', function () { describe('with TestIsoModel', function () { it('serialize local -> local time', function () { var testIsoModel = new test_iso_model_1.TestIsoModel(moment_1.default(testIsoLocalString)); var js = serializr_1.serialize(testIsoModel); expect(js.testMoment).toEqual(testIsoLocalString); }); it('serialize utc -> local time', function () { var testIsoModel = new test_iso_model_1.TestIsoModel(moment_1.default(testIsoUtcString)); var js = serializr_1.serialize(testIsoModel); expect(js.testMoment).toEqual(testIsoLocalString); }); it('deserialize local -> local time', function () { var isoLocalMoment = moment_1.default(testIsoLocalString); var recovered = serializr_helpers_1.deserializeFromJson(test_iso_model_1.TestIsoModel, "{\n \"testMoment\": \"" + testIsoLocalString + "\"\n }"); expect(recovered.testMoment.isSame(isoLocalMoment)).toBe(true); }); it('deserialize utc -> local time', function () { var isoLocalMoment = moment_1.default(testIsoLocalString); var recovered = serializr_helpers_1.deserializeFromJson(test_iso_model_1.TestIsoModel, "{\n \"testMoment\": \"" + testIsoUtcString + "\"\n }"); expect(recovered.testMoment.isSame(isoLocalMoment)).toBe(true); }); }); describe('with TestIsoUtcModel', function () { it('serialize utc -> utc time', function () { var testIsoUtcModel = new test_iso_utc_model_1.TestIsoUtcModel(moment_1.default(testIsoUtcString)); var js = serializr_1.serialize(testIsoUtcModel); expect(js.testMoment).toEqual(testIsoUtcString); }); it('serialize local -> utc time', function () { var testIsoUtcModel = new test_iso_utc_model_1.TestIsoUtcModel(moment_1.default(testIsoLocalString)); var js = serializr_1.serialize(testIsoUtcModel); expect(js.testMoment).toEqual(testIsoUtcString); }); it('deserialize utc -> utc time', function () { var isoUtcMoment = moment_1.default(testIsoUtcString); var recovered = serializr_helpers_1.deserializeFromJson(test_iso_utc_model_1.TestIsoUtcModel, "{\n \"testMoment\": \"" + testIsoUtcString + "\"\n }"); expect(recovered.testMoment.isSame(isoUtcMoment)).toBe(true); }); it('deserialize local -> utc time', function () { var isoUtcMoment = moment_1.default(testIsoUtcString); var recovered = serializr_helpers_1.deserializeFromJson(test_iso_utc_model_1.TestIsoUtcModel, "{\n \"testMoment\": \"" + testIsoLocalString + "\"\n }"); expect(recovered.testMoment.isSame(isoUtcMoment)).toBe(true); }); }); }); describe('Test buildSerializer function', function () { it('should skip undefined moment in serialization', function () { var serializeFunction = moment_serialization_schema_1.buildSerializer(); var result = serializeFunction(undefined); expect(result).toEqual(serializr_1.SKIP); }); it('should serialize default value string: "null"', function () { var defaultString = 'null'; var serializeFunction = moment_serialization_schema_1.buildSerializer(defaultString); var result = serializeFunction(undefined); expect(result).toEqual(defaultString); }); it('should serialize default value moment: moment("1990-01-01T00:00:00.000Z")', function () { var unixStartTimeString = "1990-01-01T00:00:00.000Z"; var defaultMoment = moment_1.default(unixStartTimeString); var serializeFunction = moment_serialization_schema_1.buildSerializer(defaultMoment, true); var result = serializeFunction(undefined); expect(result).toEqual(unixStartTimeString); }); it('should serialize in utc instead of local time', function () { var unixStartTimeInGermany = "1990-01-01T02:00:00.000+02:00"; var unixStartTime = "1990-01-01T00:00:00.000Z"; var serializeFunction = moment_serialization_schema_1.buildSerializer(undefined, true); var result = serializeFunction(moment_1.default(unixStartTimeInGermany)); expect(result).toEqual(unixStartTime); }); it('should serialize in custom format', function () { var unixStartTime = "1990-01-01T00:00:00.000Z"; var serializeFunction = moment_serialization_schema_1.buildSerializer(undefined, true, 'YYYY-MM-DD'); var result = serializeFunction(moment_1.default(unixStartTime)); expect(result).toEqual('1990-01-01'); }); it('should serialize in localtime with custom format', function () { var unixStartTime = "1990-01-01T00:00:00.000Z"; var serializeFunction = moment_serialization_schema_1.buildSerializer(undefined, false, 'YYYY-MM-DD'); var result = serializeFunction(moment_1.default(unixStartTime)); expect(result).toEqual('1990-01-01'); }); }); describe('Test buildDeserializer function', function () { describe('Test deserializationErrorPolicies', function () { it('should throw error', function () { var deserializeFunc = moment_serialization_schema_1.buildDeserializer('throw'); expect(function () { return deserializeFunc('some-illegal-moment', function () { }); }) .toThrowErrorMatchingSnapshot(); }); it('should log error', function () { var mockLogger = { error: jest.fn(), info: jest.fn(), debug: jest.fn(), log: jest.fn(), warn: jest.fn(), }; var deserializeFunc = moment_serialization_schema_1.buildDeserializer('log-error', false, undefined, mockLogger); deserializeFunc('some-illegal-moment', function () { }); expect(mockLogger.error).toHaveBeenCalledTimes(1); }); it('should log warning', function () { var mockLogger = { error: jest.fn(), info: jest.fn(), debug: jest.fn(), log: jest.fn(), warn: jest.fn(), }; var deserializeFunc = moment_serialization_schema_1.buildDeserializer('log-warn', false, undefined, mockLogger); deserializeFunc('some-illegal-moment', function () { }); expect(mockLogger.warn).toHaveBeenCalledTimes(1); }); }); describe('Test defaultDeserializationValue', function () { it('should deserialize to default value', function () { var defaultMoment = moment_1.default("1990-01-01T00:00:00.000Z"); var deserializeFunc = moment_serialization_schema_1.buildDeserializer('silent', true, defaultMoment); var result = deserializeFunc('some-illegal-moment', function () { }); expect(result.isValid()).toBe(true); expect(result.isSame(defaultMoment)).toBe(true); }); it('should throw error when default deserialization value is invalid', function () { var deserializeFunc = moment_serialization_schema_1.buildDeserializer('silent', false, moment_1.default('default-illegal-moment')); expect(function () { return deserializeFunc('some-illegal-moment', function () { }); }) .toThrowErrorMatchingSnapshot(); }); }); }); });