UNPKG

@plone/volto

Version:
55 lines (47 loc) 1.46 kB
import cloneDeep from 'lodash/cloneDeep'; import { cloneBlocks } from './cloneBlocks'; describe('cloneBlocks', () => { it('cloneBlocks - basic', () => { const blocksData = { blocks: { a: { '@type': 'slate', value: 1 }, b: { '@type': 'slate', value: 2 }, }, blocks_layout: { items: ['a', 'b'] }, }; const result = cloneBlocks(blocksData); expect(result.blocks_layout.items[0]).not.toBe('a'); expect(result.blocks[result.blocks_layout.items[0]]).toStrictEqual({ '@type': 'slate', value: 1, }); }); it('cloneBlocks - nested', () => { const blocksData = { blocks: { a: { '@type': 'slate', value: 1 }, b: { '@type': 'slate', value: 2 }, }, blocks_layout: { items: ['a', 'b'] }, }; blocksData.blocks.c = cloneDeep(blocksData); blocksData.blocks_layout.items.push('c'); const result = cloneBlocks(blocksData); expect(result.blocks_layout.items[0]).not.toBe('a'); expect(result.blocks[result.blocks_layout.items[0]]).toStrictEqual({ '@type': 'slate', value: 1, }); expect( result.blocks[result.blocks_layout.items[2]].blocks_layout.items[0], ).not.toBe('c'); expect( result.blocks[result.blocks_layout.items[2]].blocks[ result.blocks[result.blocks_layout.items[2]].blocks_layout.items[0] ], ).toStrictEqual({ '@type': 'slate', value: 1, }); }); });