diff --git a/src/utils.test.js b/src/utils.test.js new file mode 100644 index 0000000..aa04f17 --- /dev/null +++ b/src/utils.test.js @@ -0,0 +1,72 @@ +import { cloneColumnsBlockData } from './utils'; +import { getBlocks } from '@plone/volto/helpers'; +import config from '@plone/volto/registry'; + +jest.mock('@plone/volto/helpers', () => ({ + getBlocks: jest.fn(), + getBlocksFieldname: jest.fn(() => 'blocks'), + getBlocksLayoutFieldname: jest.fn(() => 'blocks_layout'), +})); + +describe('cloneColumnsBlockData', () => { + it('should clone the blockData without cloneData', () => { + const mockBlockData = { + data: { + '@type': 'columns', + blocks: { + block1: { + '@type': 'test', + }, + }, + blocks_layout: { + items: ['block1'], + }, + }, + }; + + getBlocks.mockReturnValue([['block1', mockBlockData.data.blocks.block1]]); + config.blocks.blocksConfig = { + test: {}, + }; + const [id, clonedBlockData] = cloneColumnsBlockData(mockBlockData); + expect(clonedBlockData.data.blocks.block1).toEqual( + mockBlockData.data.blocks.block1, + ); + expect(id).not.toBeNull(); + }); + + it('should clone the blockData with cloneData', () => { + const mockBlockData = { + data: { + '@type': 'columns', + blocks: { + block1: { + '@type': 'test', + blocks: {}, + }, + }, + blocks_layout: { + items: ['block1'], + }, + }, + }; + + getBlocks.mockReturnValue([['block1', mockBlockData.data.blocks.block1]]); + config.blocks.blocksConfig = { + test: { + cloneData: jest.fn(() => [ + 'test_uuid', + mockBlockData.data.blocks.block1, + ]), + }, + }; + const [id, clonedBlockData] = cloneColumnsBlockData(mockBlockData); + expect(id).not.toEqual('test_uuid'); + expect(clonedBlockData.data.blocks.block1).toEqual( + mockBlockData.data.blocks.block1, + ); + expect(clonedBlockData.data.blocks['test_uuid']).toEqual( + mockBlockData.data.blocks.block1, + ); + }); +});