@bjesuiter/serializr-helpers
Version:
Provides some helper functions and serialization PropertySchemas for mobxjs/serializr - library
153 lines (152 loc) • 8.98 kB
JavaScript
;
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();
});
});
});
});