podeng
Version:
Simple JSON value normalization to make everything gone right.
115 lines (100 loc) • 3.37 kB
JavaScript
'use strict';
const moment = require('moment-timezone');
const blueprint = require('../blueprint');
const types = require('../types');
moment.tz.setDefault('Asia/Jakarta');
test('Object able to serialize and deserialize', () => {
const Obj1 = blueprint.object({
date: types.datetime({ serialize: { to: 'happy_date' } })
});
expect(Obj1.serialize({ date: '1991-06-18' })).toEqual({
happy_date: '1991-06-18T00:00:00+07:00'
});
expect(Obj1.deserialize({ happy_date: '1991-06-18' })).toEqual({
date: '1991-06-18T00:00:00+07:00'
});
expect(Obj1.deserialize({ happy_date: '1991-06-18s' })).toEqual({
date: null
});
});
test('Object able to serialize and deserialize with custom deserialize rules', () => {
const Obj1 = blueprint.object({
date: types.datetime({
serialize: { to: 'happy_date' },
deserialize: { from: 'what_a_date' },
timezoneAware: false
})
});
const Obj2 = blueprint.object({
date: types.datetime({
dateOnly: true,
serialize: { to: 'good_day' }
})
});
const Obj3 = blueprint.object({
date: types.datetime({
returnFormat: 'DD-MM-YYYY HH'
})
});
expect(Obj1.serialize({ date: '1991-06-18' })).toEqual({
happy_date: '1991-06-18T00:00:00Z'
});
expect(Obj1.serialize({ date: '1991-06-17s' })).toEqual({ happy_date: null });
expect(Obj1.deserialize({ what_a_date: '1991-06-07' })).toEqual({
date: '1991-06-07T00:00:00Z'
});
expect(Obj1.deserialize({ what_a_date: 'meh' })).toEqual({
date: null
});
expect(Obj1.deserialize({ what_a_date: '1991-06-18 18:08:08' })).toEqual({
date: '1991-06-18T18:08:08Z'
});
expect(Obj2.serialize({ date: '1992-05-31 18:08:31' })).toEqual({
good_day: '1992-05-31'
});
expect(Obj2.serialize({ date: 'meh' })).toEqual({ good_day: null });
expect(Obj2.serialize({ date: '1992-05-31' })).toEqual({
good_day: '1992-05-31'
});
expect(Obj2.deserialize({ good_day: '1992-05-31' })).toEqual({
date: '1992-05-31'
});
expect(Obj2.deserialize({ good_day: '1992-xx-05-31' })).toEqual({
date: null
});
expect(Obj2.deserialize({ good_day: '1992-05-31 18:08:31' })).toEqual({
date: '1992-05-31'
});
expect(Obj3.serialize({ date: '1991-06-18' })).toEqual({
date: '18-06-1991 00'
});
expect(Obj3.serialize({ date: '1992-05-31 18:08:31' })).toEqual({
date: '31-05-1992 18'
});
expect(Obj3.serialize({ date: '1992-05-3111' })).toEqual({ date: null });
expect(Obj3.deserialize({ date: '1991-06-18' })).toEqual({
date: '18-06-1991 00'
});
expect(Obj3.deserialize({ date: '1992-05-31 18:08:31' })).toEqual({
date: '31-05-1992 18'
});
expect(Obj3.deserialize({ date: '1992-05-3111' })).toEqual({ date: null });
});
test('Object able to hide on serialize', () => {
const Obj1 = blueprint.object({
date: types.datetime({
serialize: { to: 'good_day' }
}),
date2: types.datetime({ serialize: { display: false } })
});
expect(Obj1.serialize({ date: '1991-06-18', date2: '1991-06-18' })).toEqual({
good_day: '1991-06-18T00:00:00+07:00'
});
expect(Obj1.serialize({ date: '1991x-06-18', date2: '1991-06-18' })).toEqual({
good_day: null
});
expect(Obj1({ date: '1991-06-18', date2: '1991-06-18' })).toEqual({
date: '1991-06-18T00:00:00+07:00',
date2: '1991-06-18T00:00:00+07:00'
});
});