serialize-killer
Version:
Make your objects unserializable.
47 lines (46 loc) • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const unserializable_1 = require("./unserializable");
describe('unserializable', () => {
it('returns a frozen value', () => {
expect(Object.isFrozen((0, unserializable_1.unserializable)())).toBe(true);
});
it('cannot be unpoisoned', () => {
const poison = (0, unserializable_1.unserializable)();
expect(() => {
delete poison.__unserializable__;
}).toThrowErrorMatchingInlineSnapshot(`"Cannot delete property '__unserializable__' of #<Object>"`);
});
describe('as a standalone value', () => {
it('prevents serialization', () => {
expect(() => JSON.stringify((0, unserializable_1.unserializable)()))
.toThrowErrorMatchingInlineSnapshot(`
"Converting circular structure to JSON
--> starting at object with constructor 'Object'
--- property '__unserializable__' closes the circle"
`);
});
});
describe('as a top-level value in an object', () => {
it('prevents serialization', () => {
expect(() => JSON.stringify({
_: (0, unserializable_1.unserializable)(),
hello: 'world',
})).toThrowErrorMatchingInlineSnapshot(`
"Converting circular structure to JSON
--> starting at object with constructor 'Object'
--- property '__unserializable__' closes the circle"
`);
});
});
describe('as an element in an array', () => {
it('prevents serialization', () => {
expect(() => JSON.stringify(['hello', (0, unserializable_1.unserializable)(), 'world']))
.toThrowErrorMatchingInlineSnapshot(`
"Converting circular structure to JSON
--> starting at object with constructor 'Object'
--- property '__unserializable__' closes the circle"
`);
});
});
});