unserializable
Version:
Utilities for converting unserializable JavaScript objects and instances to serializable objects and vice versa.
64 lines (55 loc) • 2.45 kB
JavaScript
import expect from 'expect';
import { unserializable, serializable, getType } from '../src/index';
describe('unserializable', () => {
it('should handle ES6 Map instances', () => {
const test = new Map([['a', 1], ['b', 2]]);
const type = getType(test);
const serializableTest = serializable[type](test);
const unserializableTest = unserializable[type](serializableTest);
expect(type).toBe('Map');
expect(Array.isArray(serializableTest)).toBe(true);
expect(serializableTest.length).toBe(2);
expect(Array.isArray(serializableTest[0])).toBe(true);
expect(serializableTest[0][0]).toBe('a');
expect(serializableTest[0][1]).toBe(1);
expect(Array.isArray(serializableTest[1])).toBe(true);
expect(serializableTest[1][0]).toBe('b');
expect(serializableTest[1][1]).toBe(2);
expect(unserializableTest instanceof Map).toBe(true);
});
it('should handle ES6 Set instances', () => {
const test = new Set(['a', 'a', 'b', 'b']);
const type = getType(test);
const serializableTest = serializable[type](test);
const unserializableTest = unserializable[type](serializableTest);
expect(type).toBe('Set');
expect(Array.isArray(serializableTest)).toBe(true);
expect(serializableTest.length).toBe(2);
expect(serializableTest[0]).toBe('a');
expect(serializableTest[1]).toBe('b');
expect(unserializableTest instanceof Set).toBe(true);
});
it('should handle Date instances', () => {
const now = Date.now();
const test = new Date(now);
const type = getType(test);
const serializableTest = serializable[type](test);
const unserializableTest = unserializable[type](serializableTest);
expect(type).toBe('Date');
expect(typeof serializableTest).toBe('number');
expect(serializableTest).toBe(now);
expect(unserializableTest instanceof Date).toBe(true);
expect(test.toString()).toBe(unserializableTest.toString());
});
it('should handle RegExp instances', () => {
const test = /[^A-z0-9]/gi;
const type = getType(test);
const serializableTest = serializable[type](test);
const unserializableTest = unserializable[type](serializableTest);
expect(type).toBe('RegExp');
expect(typeof serializableTest).toBe('string');
expect(serializableTest).toBe('/[^A-z0-9]/gi');
expect(unserializableTest instanceof RegExp).toBe(true);
expect(test.toString()).toBe(unserializableTest.toString());
});
});