diff --git a/tests/phpunit/data/blocks/hooked-block-error/block.json b/tests/phpunit/data/blocks/hooked-block-error/block.json new file mode 100644 index 0000000000000..346c43b5b374a --- /dev/null +++ b/tests/phpunit/data/blocks/hooked-block-error/block.json @@ -0,0 +1,8 @@ +{ + "name": "tests/hooked-block-error", + "description": "A block that throws an error because it tries to hook a block to itself.", + "blockHooks": { + "tests/hooked-block-error": "before", + "tests/other-block": "after" + } +} diff --git a/tests/phpunit/data/blocks/notice/block.json b/tests/phpunit/data/blocks/notice/block.json index b6aa36e52e86c..909137252a1bc 100644 --- a/tests/phpunit/data/blocks/notice/block.json +++ b/tests/phpunit/data/blocks/notice/block.json @@ -31,7 +31,10 @@ "root": ".wp-block-notice" }, "blockHooks": { - "core/post-content": "before" + "tests/before": "before", + "tests/after": "after", + "tests/first-child": "firstChild", + "tests/last-child": "lastChild" }, "supports": { "align": true, diff --git a/tests/phpunit/tests/blocks/register.php b/tests/phpunit/tests/blocks/register.php index 55faf297a5b84..3e55206037e40 100644 --- a/tests/phpunit/tests/blocks/register.php +++ b/tests/phpunit/tests/blocks/register.php @@ -645,8 +645,13 @@ public function test_block_registers_with_metadata_fixture() { 'Block type should contain selectors from metadata.' ); // @ticket 59346 - $this->assertSame( - array( 'core/post-content' => 'before' ), + $this->assertSameSets( + array( + 'tests/before' => 'before', + 'tests/after' => 'after', + 'tests/first-child' => 'first_child', + 'tests/last-child' => 'last_child', + ), $result->block_hooks, 'Block type should contain block hooks from metadata.' ); @@ -1069,4 +1074,22 @@ public function test_register_block_style_name_without_spaces() { $actual = register_block_style( 'core/query', $block_styles ); $this->assertTrue( $actual ); } + + /** + * @ticket 59346 + * + * @covers ::register_block_type + * + * @expectedIncorrectUsage register_block_type_from_metadata + */ + public function test_register_block_hooks_targeting_itself() { + $block_type = register_block_type( + DIR_TESTDATA . '/blocks/hooked-block-error' + ); + + $this->assertSame( + array( 'tests/other-block' => 'after' ), + $block_type->block_hooks + ); + } }