UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

128 lines (127 loc) 4.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const clone_1 = require("@jsonjoy.com/util/lib/json-clone/clone"); const values = [ ['"null"', null], // ['"true"', true], ['"false"', false], ['integer', 123], // ['float', -1.2], // ['empty string', ''], ['string', 'asdf'], // ['empty object', {}], ['simple object', { foo: 'bar' }], // ['nested object', {foo: {bar: 'baz'}}], // ['empty array', []], ['simple array', [1, 'a', false]], // ['nested array', [[{foo: [1, 2, null]}]]], ]; const testCases = [ { comment: 'Replacing non-existing object key, first level', doc: {}, patch: [{ op: 'replace', path: '/foo', value: 'bar' }], error: 'NOT_FOUND', }, ]; for (const [name, doc] of values) { for (const [name2, doc2] of values) { testCases.push({ comment: `Replace root ${name} by ${name2}`, doc: (0, clone_1.clone)(doc), patch: [{ op: 'replace', path: '', value: (0, clone_1.clone)(doc2) }], expected: (0, clone_1.clone)(doc2), }); } } for (const [name, doc] of values) { for (const [name2, doc2] of values) { testCases.push({ comment: `Replace first level object ${name} by ${name2}`, doc: { foo: 'bar', baz: 123, asdf: (0, clone_1.clone)(doc), gg: true, aha: null, }, patch: [{ op: 'replace', path: '/asdf', value: (0, clone_1.clone)(doc2) }], expected: { foo: 'bar', baz: 123, asdf: (0, clone_1.clone)(doc2), gg: true, aha: null, }, }); } } for (const [name, doc] of values) { for (const [name2, doc2] of values) { testCases.push({ comment: `Replace first level object ${name} by ${name2}`, doc: { foo: 'bar', baz: 123, test: { '1': 1234, '2': { gg: (0, clone_1.clone)(doc), }, }, gg: true, aha: null, }, patch: [{ op: 'replace', path: '/test/2/gg', value: (0, clone_1.clone)(doc2) }], expected: { foo: 'bar', baz: 123, test: { '1': 1234, '2': { gg: (0, clone_1.clone)(doc2), }, }, gg: true, aha: null, }, }); } } for (const [name, doc] of values) { for (const [name2, doc2] of values) { testCases.push({ comment: `Replace first level array ${name} by ${name2}, in the middle of array`, doc: ['bar', 123, false, {}, [], (0, clone_1.clone)(doc), true, null], patch: [{ op: 'replace', path: '/5', value: (0, clone_1.clone)(doc2) }], expected: ['bar', 123, false, {}, [], (0, clone_1.clone)(doc2), true, null], }); } } for (const [name, doc] of values) { for (const [name2, doc2] of values) { testCases.push({ comment: `Replace deeply nested array ${name} by ${name2}, at the first position`, doc: [ 'bar', [ 123, { hmm: [(0, clone_1.clone)(doc), 1, 2, 3, 4], }, ], ], patch: [{ op: 'replace', path: '/1/1/hmm/0', value: (0, clone_1.clone)(doc2) }], expected: [ 'bar', [ 123, { hmm: [(0, clone_1.clone)(doc2), 1, 2, 3, 4], }, ], ], }); } } exports.default = testCases;