xcraft-core-transport
Version:
Xcraft bus transport backends
224 lines (187 loc) • 5.07 kB
JavaScript
'use strict';
const {expect} = require('chai');
const {OrderedMap} = require('immutable');
const Shredder = require('xcraft-core-shredder');
const helpers = require('../lib/helpers.js');
describe('xcraft.transport.serializer', function () {
const v1 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {c: 1, d: {}},
};
it('object', function () {
const s = helpers.toXcraftJSON(v1)[0];
const v = helpers.fromXcraftJSON(s)[0];
expect(v).to.be.eql(v1);
});
/////////////////////////////////////////////////////////////////////////////
const v2 = {
_xcraftMessage: true,
a: 1,
b: {},
data: OrderedMap({c: 1, d: {}}),
};
it('immutable', function () {
const s = helpers.toXcraftJSON(v2)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v2);
});
/////////////////////////////////////////////////////////////////////////////
const v3 = {
_xcraftMessage: true,
a: 1,
b: {},
data: new Shredder(OrderedMap({c: 1, d: {}})),
};
it('shredder', function () {
const s = helpers.toXcraftJSON(v3)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v3);
});
/////////////////////////////////////////////////////////////////////////////
const v4 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {c: 1, d: {}, data: {e: 1, f: {}}},
};
it('object-nested', function () {
const s = helpers.toXcraftJSON(v4)[0];
const v = helpers.fromXcraftJSON(s)[0];
expect(v).to.be.eql(v4);
});
/////////////////////////////////////////////////////////////////////////////
const v5 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {
c: 1,
d: {},
data: OrderedMap({e: 1, f: {}}),
},
};
it('immutable-nested', function () {
const s = helpers.toXcraftJSON(v5)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v5);
});
/////////////////////////////////////////////////////////////////////////////
const v6 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {
c: 1,
d: {},
data: new Shredder(OrderedMap({e: 1, f: {}})),
},
};
it('shredder-nested', function () {
const s = helpers.toXcraftJSON(v6)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v6);
});
/////////////////////////////////////////////////////////////////////////////
const v7 = {
_xcraftMessage: true,
a: 1,
b: {},
data: [
{c: 1, d: {}},
{e: 1, f: {}},
],
};
it('object-array', function () {
const s = helpers.toXcraftJSON(v7)[0];
const v = helpers.fromXcraftJSON(s)[0];
expect(v).to.be.eql(v7);
});
/////////////////////////////////////////////////////////////////////////////
const v8 = {
_xcraftMessage: true,
a: 1,
b: {},
data: [OrderedMap({c: 1, d: {}}), OrderedMap({e: 1, f: {}})],
};
it('immutable-array', function () {
const s = helpers.toXcraftJSON(v8)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v8);
});
/////////////////////////////////////////////////////////////////////////////
const v9 = {
_xcraftMessage: true,
a: 1,
b: {},
data: [
new Shredder(OrderedMap({c: 1, d: {}})),
new Shredder(OrderedMap({e: 1, f: {}})),
],
};
it('shredder-array', function () {
const s = helpers.toXcraftJSON(v9)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v9);
});
/////////////////////////////////////////////////////////////////////////////
const v10 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {
g: 1,
data: [
{c: 1, d: {}},
{e: 1, f: {}},
],
},
};
it('object-array-nested', function () {
const s = helpers.toXcraftJSON(v10)[0];
const v = helpers.fromXcraftJSON(s)[0];
expect(v).to.be.eql(v10);
});
/////////////////////////////////////////////////////////////////////////////
const v11 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {
g: 1,
data: [OrderedMap({c: 1, d: {}}), OrderedMap({e: 1, f: {}})],
},
};
it('immutable-array-nested', function () {
const s = helpers.toXcraftJSON(v11)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v11);
});
/////////////////////////////////////////////////////////////////////////////
const v12 = {
_xcraftMessage: true,
a: 1,
b: {},
data: {
g: 1,
data: [
new Shredder(OrderedMap({c: 1, d: {}})),
new Shredder(OrderedMap({e: 1, f: {}})),
],
},
};
it('shredder-array-nested', function () {
const s = helpers.toXcraftJSON(v12)[0];
const v = helpers.fromXcraftJSON(s)[0];
delete v._xcraftRawMessage;
expect(v).to.be.eql(v12);
});
});