UNPKG

unserializable

Version:

Utilities for converting unserializable JavaScript objects and instances to serializable objects and vice versa.

64 lines (55 loc) 2.45 kB
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()); }); });