From 293fe32935cb919b7bc88eb65a73d92e06db6667 Mon Sep 17 00:00:00 2001 From: Kerry Liu Date: Fri, 19 Feb 2021 14:32:11 -0800 Subject: [PATCH 1/3] export metadata, temporary placeholder to not override server values --- packages/blocks/src/api/registration.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/blocks/src/api/registration.js b/packages/blocks/src/api/registration.js index af0dd733cf7410..41302b47e11e16 100644 --- a/packages/blocks/src/api/registration.js +++ b/packages/blocks/src/api/registration.js @@ -160,6 +160,10 @@ export const serverSideBlockDefinitions = {}; // eslint-disable-next-line camelcase export function unstable__bootstrapServerSideBlockDefinitions( definitions ) { for ( const blockName of Object.keys( definitions ) ) { + // don't overwrite with block.json if we've already initialized from server + if ( serverSideBlockDefinitions[ blockName ] ) { + continue; + } serverSideBlockDefinitions[ blockName ] = mapKeys( pickBy( definitions[ blockName ], ( value ) => ! isNil( value ) ), ( value, key ) => camelCase( key ) From b1e55f56706a70cbcbbd238d293695141298ad42 Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Mon, 22 Feb 2021 10:55:35 +0100 Subject: [PATCH 2/3] Add e2e test that ensure that filtered metadata is propagated to the client --- packages/blocks/src/api/registration.js | 3 +- .../plugins/register-block-type-hooks.php | 28 ++++++++++++++++ .../plugins/register-block-type-hooks.test.js | 32 +++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 packages/e2e-tests/plugins/register-block-type-hooks.php create mode 100644 packages/e2e-tests/specs/editor/plugins/register-block-type-hooks.test.js diff --git a/packages/blocks/src/api/registration.js b/packages/blocks/src/api/registration.js index 41302b47e11e16..b4b0618ac67f18 100644 --- a/packages/blocks/src/api/registration.js +++ b/packages/blocks/src/api/registration.js @@ -160,7 +160,8 @@ export const serverSideBlockDefinitions = {}; // eslint-disable-next-line camelcase export function unstable__bootstrapServerSideBlockDefinitions( definitions ) { for ( const blockName of Object.keys( definitions ) ) { - // don't overwrite with block.json if we've already initialized from server + // Don't overwrite if already set. It covers the case when metadata + // was initialized from the server. if ( serverSideBlockDefinitions[ blockName ] ) { continue; } diff --git a/packages/e2e-tests/plugins/register-block-type-hooks.php b/packages/e2e-tests/plugins/register-block-type-hooks.php new file mode 100644 index 00000000000000..ac7fdf2a5ba057 --- /dev/null +++ b/packages/e2e-tests/plugins/register-block-type-hooks.php @@ -0,0 +1,28 @@ + 'widgets' ), + ); +} + +add_filter( 'block_type_metadata', 'gutenberg_test_block_type_metadata' ); diff --git a/packages/e2e-tests/specs/editor/plugins/register-block-type-hooks.test.js b/packages/e2e-tests/specs/editor/plugins/register-block-type-hooks.test.js new file mode 100644 index 00000000000000..d623dac3833f8f --- /dev/null +++ b/packages/e2e-tests/specs/editor/plugins/register-block-type-hooks.test.js @@ -0,0 +1,32 @@ +/** + * WordPress dependencies + */ +import { + activatePlugin, + createNewPost, + deactivatePlugin, + openGlobalBlockInserter, +} from '@wordpress/e2e-test-utils'; + +describe( 'Register block type hooks', () => { + beforeEach( async () => { + await activatePlugin( 'gutenberg-test-register-block-type-hooks' ); + await createNewPost(); + } ); + + afterEach( async () => { + await deactivatePlugin( 'gutenberg-test-register-block-type-hooks' ); + } ); + + it( 'has a custom category for Paragraph block', async () => { + await openGlobalBlockInserter(); + + const widgetsCategory = await page.$( + '.block-editor-block-types-list[aria-label="Widgets"]' + ); + + expect( + await widgetsCategory.$( '.editor-block-list-item-paragraph' ) + ).toBeDefined(); + } ); +} ); From 849084db1102488cf4d38e139bf537559ae79d3c Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Mon, 22 Feb 2021 15:09:19 +0100 Subject: [PATCH 3/3] Fix issues raised by PHP linter --- packages/e2e-tests/plugins/register-block-type-hooks.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/e2e-tests/plugins/register-block-type-hooks.php b/packages/e2e-tests/plugins/register-block-type-hooks.php index ac7fdf2a5ba057..39709110c6270e 100644 --- a/packages/e2e-tests/plugins/register-block-type-hooks.php +++ b/packages/e2e-tests/plugins/register-block-type-hooks.php @@ -10,18 +10,18 @@ /** * Changes the category for the paragraph block. * - * @param array $metadata Array of metadata for registering a block type. + * @param array $metadata Array of metadata for registering a block type. * * @return array Filtered metadata for registering a block type. */ function gutenberg_test_block_type_metadata( $metadata ) { - if ( 'core/paragraph' !== $metadata[ 'name' ] ) { + if ( 'core/paragraph' !== $metadata['name'] ) { return $metadata; } return array_merge( $metadata, - array( 'category' => 'widgets' ), + array( 'category' => 'widgets' ) ); }