From 896e4b9489e2e94242f1574127e14f5a8e7969f0 Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Wed, 7 Nov 2018 18:16:18 +0100 Subject: [PATCH] Refactor getBlockTransforms to use block type normalization --- packages/blocks/src/api/factory.js | 10 ++++++---- packages/blocks/src/api/test/factory.js | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/blocks/src/api/factory.js b/packages/blocks/src/api/factory.js index d59707e59bd899..f51dfb7e6576d2 100644 --- a/packages/blocks/src/api/factory.js +++ b/packages/blocks/src/api/factory.js @@ -25,6 +25,7 @@ import { createHooks, applyFilters } from '@wordpress/hooks'; * Internal dependencies */ import { getBlockType, getBlockTypes } from './registration'; +import { normalizeBlockType } from './utils'; /** * Returns a block object given its type and attributes. @@ -279,13 +280,13 @@ export function findTransform( transforms, predicate ) { * transform object includes `blockName` as a property. * * @param {string} direction Transform direction ("to", "from"). - * @param {?string} blockName Optional block name. + * @param {string|Object} blockTypeOrName Block type or name. * * @return {Array} Block transforms for direction. */ -export function getBlockTransforms( direction, blockName ) { +export function getBlockTransforms( direction, blockTypeOrName ) { // When retrieving transforms for all block types, recurse into self. - if ( blockName === undefined ) { + if ( blockTypeOrName === undefined ) { return flatMap( getBlockTypes(), ( { name } ) => getBlockTransforms( direction, name ) @@ -293,7 +294,8 @@ export function getBlockTransforms( direction, blockName ) { } // Validate that block type exists and has array of direction. - const { transforms } = getBlockType( blockName ) || {}; + const blockType = normalizeBlockType( blockTypeOrName ); + const { name: blockName, transforms } = blockType || {}; if ( ! transforms || ! Array.isArray( transforms[ direction ] ) ) { return []; } diff --git a/packages/blocks/src/api/test/factory.js b/packages/blocks/src/api/test/factory.js index d8c46a857f90dd..eaf222b8b5c866 100644 --- a/packages/blocks/src/api/test/factory.js +++ b/packages/blocks/src/api/test/factory.js @@ -15,7 +15,12 @@ import { getBlockTransforms, findTransform, } from '../factory'; -import { getBlockTypes, unregisterBlockType, registerBlockType } from '../registration'; +import { + getBlockType, + getBlockTypes, + registerBlockType, + unregisterBlockType, +} from '../registration'; describe( 'block factory', () => { const defaultBlockSettings = { @@ -1181,6 +1186,20 @@ describe( 'block factory', () => { }, ] ); } ); + + it( 'should return single block type transforms when passed as an object', () => { + const transforms = getBlockTransforms( + 'from', + getBlockType( 'core/transform-from-text-block-1' ) + ); + + expect( transforms ).toEqual( [ + { + blocks: [ 'core/text-block' ], + blockName: 'core/transform-from-text-block-1', + }, + ] ); + } ); } ); describe( 'findTransform', () => {