Make WordPress Core

Changeset 56588


Ignore:
Timestamp:
09/14/2023 02:54:41 PM (3 years ago)
Author:
gziolo
Message:

Tests: Improve the assertions for REST API endpoint for block types

Follow-up to [56587], [55673]. While working on #59346, it was noted that selectors fiels is not always included in the assertions. While looking at it is was difficult to spot the issue because the random order of how REST API fields where listed.

Reorderd the REST API fields in the test cases to follow the list from the documentation: https://github.com/WordPress/gutenberg/blob/trunk/docs/reference-guides/block-api/block-metadata.md. This way it's going to be easier to maintain the list moving forward.

Props ockham.
See #59346, #59313, #57585.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-block-type-controller.php

    r56587 r56588  
    202202                $settings   = array(
    203203                        'title'            => true,
     204                        'category'         => true,
     205                        'parent'           => 'invalid_parent',
     206                        'ancestor'         => 'invalid_ancestor',
     207                        'icon'             => true,
    204208                        'description'      => true,
    205                         'icon'             => true,
     209                        'keywords'         => 'invalid_keywords',
     210                        'textdomain'       => true,
    206211                        'attributes'       => 'invalid_attributes',
    207212                        'provides_context' => 'invalid_provides_context',
    208213                        'uses_context'     => 'invalid_uses_context',
     214                        'selectors'        => 'invalid_selectors',
     215                        'supports'         => 'invalid_supports',
     216                        'styles'           => array(),
     217                        'example'          => 'invalid_example',
     218                        'variations'       => 'invalid_variations',
    209219                        'block_hooks'      => 'invalid_block_hooks',
    210                         'category'         => true,
     220                        'render_callback'  => 'invalid_callback',
    211221                        'editor_script'    => true,
    212222                        'script'           => true,
     
    214224                        'editor_style'     => true,
    215225                        'style'            => true,
    216                         'keywords'         => 'invalid_keywords',
    217                         'example'          => 'invalid_example',
    218                         'parent'           => 'invalid_parent',
    219                         'ancestor'         => 'invalid_ancestor',
    220                         'selectors'        => 'invalid_selectors',
    221                         'supports'         => 'invalid_supports',
    222                         'styles'           => array(),
    223                         'render_callback'  => 'invalid_callback',
    224                         'textdomain'       => true,
    225                         'variations'       => 'invalid_variations',
    226226                );
    227227                register_block_type( $block_type, $settings );
     
    232232                $this->assertSame( $block_type, $data['name'] );
    233233                $this->assertSame( '1', $data['title'] );
     234                $this->assertNull( $data['category'] );
     235                $this->assertSameSets( array( 'invalid_parent' ), $data['parent'] );
     236                $this->assertSameSets( array( 'invalid_ancestor' ), $data['ancestor'] );
     237                $this->assertNull( $data['icon'] );
    234238                $this->assertSame( '1', $data['description'] );
    235                 $this->assertNull( $data['icon'] );
     239                $this->assertSameSets( array( 'invalid_keywords' ), $data['keywords'] );
     240                $this->assertNull( $data['textdomain'] );
     241                $this->assertSameSetsWithIndex(
     242                        array(
     243                                'lock' => array( 'type' => 'object' ),
     244                        ),
     245                        $data['attributes']
     246                );
     247                $this->assertSameSets( array( 'invalid_uses_context' ), $data['uses_context'] );
     248                $this->assertSameSets( array(), $data['provides_context'] );
     249                $this->assertSameSets( array(), $data['selectors'], 'invalid selectors defaults to empty array' );
     250                $this->assertSameSets( array(), $data['supports'] );
     251                $this->assertSameSets( array(), $data['styles'] );
     252                $this->assertNull( $data['example'] );
     253                $this->assertSameSets( array( array() ), $data['variations'] );
     254                $this->assertSameSets( array(), $data['block_hooks'], 'invalid block_hooks defaults to empty array' );
    236255                $this->assertSameSets( array(), $data['editor_script_handles'] );
    237256                $this->assertSameSets( array(), $data['script_handles'] );
     
    239258                $this->assertSameSets( array(), $data['editor_style_handles'] );
    240259                $this->assertSameSets( array(), $data['style_handles'] );
    241                 $this->assertSameSets( array(), $data['provides_context'] );
    242                 $this->assertSameSetsWithIndex(
    243                         array(
    244                                 'lock' => array( 'type' => 'object' ),
    245                         ),
    246                         $data['attributes']
    247                 );
    248                 $this->assertSameSets( array( 'invalid_uses_context' ), $data['uses_context'] );
    249                 $this->assertSameSets( array(), $data['block_hooks'], 'invalid block_hooks defaults to empty array' );
    250                 $this->assertSameSets( array( 'invalid_keywords' ), $data['keywords'] );
    251                 $this->assertSameSets( array( 'invalid_parent' ), $data['parent'] );
    252                 $this->assertSameSets( array( 'invalid_ancestor' ), $data['ancestor'] );
    253                 $this->assertSameSets( array(), $data['selectors'], 'invalid selectors defaults to empty array' );
    254                 $this->assertSameSets( array(), $data['supports'] );
    255                 $this->assertSameSets( array(), $data['styles'] );
    256                 $this->assertNull( $data['example'] );
    257                 $this->assertNull( $data['category'] );
    258                 $this->assertNull( $data['textdomain'] );
    259260                $this->assertFalse( $data['is_dynamic'] );
    260                 $this->assertSameSets( array( array() ), $data['variations'] );
    261261                // Deprecated properties.
    262262                $this->assertNull( $data['editor_script'] );
     
    276276                $settings   = array(
    277277                        'title'            => false,
     278                        'category'         => false,
     279                        'parent'           => false,
     280                        'ancestor'         => false,
     281                        'icon'             => false,
    278282                        'description'      => false,
    279                         'icon'             => false,
     283                        'keywords'         => false,
     284                        'textdomain'       => false,
    280285                        'attributes'       => false,
    281286                        'provides_context' => false,
    282287                        'uses_context'     => false,
     288                        'selectors'        => false,
     289                        'supports'         => false,
     290                        'styles'           => false,
     291                        'example'          => false,
     292                        'variations'       => false,
    283293                        'block_hooks'      => false,
    284                         'category'         => false,
    285294                        'editor_script'    => false,
    286295                        'script'           => false,
     
    288297                        'editor_style'     => false,
    289298                        'style'            => false,
    290                         'keywords'         => false,
    291                         'parent'           => false,
    292                         'ancestor'         => false,
    293                         'selectors'        => false,
    294                         'supports'         => false,
    295                         'styles'           => false,
    296299                        'render_callback'  => false,
    297                         'textdomain'       => false,
    298                         'example'          => false,
    299                         'variations'       => false,
    300300                );
    301301                register_block_type( $block_type, $settings );
     
    306306                $this->assertSame( $block_type, $data['name'] );
    307307                $this->assertSame( '', $data['title'] );
     308                $this->assertNull( $data['category'] );
     309                $this->assertSameSets( array(), $data['parent'] );
     310                $this->assertSameSets( array(), $data['ancestor'] );
     311                $this->assertNull( $data['icon'] );
    308312                $this->assertSame( '', $data['description'] );
    309                 $this->assertNull( $data['icon'] );
     313                $this->assertSameSets( array(), $data['keywords'] );
     314                $this->assertNull( $data['textdomain'] );
     315                $this->assertSameSetsWithIndex(
     316                        array(
     317                                'lock' => array( 'type' => 'object' ),
     318                        ),
     319                        $data['attributes']
     320                );
     321                $this->assertSameSets( array(), $data['provides_context'] );
     322                $this->assertSameSets( array(), $data['uses_context'] );
     323                $this->assertSameSets( array(), $data['selectors'], 'selectors defaults to empty array' );
     324                $this->assertSameSets( array(), $data['supports'] );
     325                $this->assertSameSets( array(), $data['styles'] );
     326                $this->assertNull( $data['example'] );
     327                $this->assertSameSets( array(), $data['variations'] );
     328                $this->assertSameSets( array(), $data['block_hooks'], 'block_hooks defaults to empty array' );
    310329                $this->assertSameSets( array(), $data['editor_script_handles'] );
    311330                $this->assertSameSets( array(), $data['script_handles'] );
     
    313332                $this->assertSameSets( array(), $data['editor_style_handles'] );
    314333                $this->assertSameSets( array(), $data['style_handles'] );
    315                 $this->assertSameSetsWithIndex(
    316                         array(
    317                                 'lock' => array( 'type' => 'object' ),
    318                         ),
    319                         $data['attributes']
    320                 );
    321                 $this->assertSameSets( array(), $data['provides_context'] );
    322                 $this->assertSameSets( array(), $data['block_hooks'], 'block_hooks defaults to empty array' );
    323                 $this->assertSameSets( array(), $data['uses_context'] );
    324                 $this->assertSameSets( array(), $data['keywords'] );
    325                 $this->assertSameSets( array(), $data['parent'] );
    326                 $this->assertSameSets( array(), $data['ancestor'] );
    327                 $this->assertSameSets( array(), $data['selectors'], 'selectors defaults to empty array' );
    328                 $this->assertSameSets( array(), $data['supports'] );
    329                 $this->assertSameSets( array(), $data['styles'] );
    330                 $this->assertNull( $data['example'] );
    331                 $this->assertNull( $data['category'] );
    332                 $this->assertNull( $data['example'] );
    333                 $this->assertNull( $data['textdomain'] );
    334334                $this->assertFalse( $data['is_dynamic'] );
    335                 $this->assertSameSets( array(), $data['variations'] );
    336335                // Deprecated properties.
    337336                $this->assertNull( $data['editor_script'] );
     
    555554                $this->assertCount( 30, $properties );
    556555                $this->assertArrayHasKey( 'api_version', $properties );
     556                $this->assertArrayHasKey( 'name', $properties );
    557557                $this->assertArrayHasKey( 'title', $properties );
     558                $this->assertArrayHasKey( 'category', $properties );
     559                $this->assertArrayHasKey( 'parent', $properties );
     560                $this->assertArrayHasKey( 'ancestor', $properties );
    558561                $this->assertArrayHasKey( 'icon', $properties );
    559562                $this->assertArrayHasKey( 'description', $properties );
    560563                $this->assertArrayHasKey( 'keywords', $properties );
    561                 $this->assertArrayHasKey( 'styles', $properties );
    562564                $this->assertArrayHasKey( 'textdomain', $properties );
    563                 $this->assertArrayHasKey( 'name', $properties );
    564565                $this->assertArrayHasKey( 'attributes', $properties );
     566                $this->assertArrayHasKey( 'provides_context', $properties );
     567                $this->assertArrayHasKey( 'uses_context', $properties );
    565568                $this->assertArrayHasKey( 'selectors', $properties, 'schema must contain selectors' );
    566569                $this->assertArrayHasKey( 'supports', $properties );
    567                 $this->assertArrayHasKey( 'category', $properties );
    568                 $this->assertArrayHasKey( 'is_dynamic', $properties );
     570                $this->assertArrayHasKey( 'styles', $properties );
     571                $this->assertArrayHasKey( 'example', $properties );
     572                $this->assertArrayHasKey( 'variations', $properties );
     573                $this->assertArrayHasKey( 'block_hooks', $properties );
    569574                $this->assertArrayHasKey( 'editor_script_handles', $properties );
    570575                $this->assertArrayHasKey( 'script_handles', $properties );
     
    572577                $this->assertArrayHasKey( 'editor_style_handles', $properties );
    573578                $this->assertArrayHasKey( 'style_handles', $properties );
    574                 $this->assertArrayHasKey( 'parent', $properties );
    575                 $this->assertArrayHasKey( 'example', $properties );
    576                 $this->assertArrayHasKey( 'uses_context', $properties );
    577                 $this->assertArrayHasKey( 'provides_context', $properties );
    578                 $this->assertArrayHasKey( 'block_hooks', $properties );
    579                 $this->assertArrayHasKey( 'variations', $properties );
    580                 $this->assertArrayHasKey( 'ancestor', $properties );
     579                $this->assertArrayHasKey( 'is_dynamic', $properties );
    581580                // Deprecated properties.
    582581                $this->assertArrayHasKey( 'editor_script', $properties );
     
    687686                        'api_version',
    688687                        'name',
     688                        'title',
    689689                        'category',
     690                        'parent',
     691                        'ancestor',
     692                        'icon',
     693                        'description',
     694                        'keywords',
     695                        'textdomain',
     696                        'provides_context',
     697                        'uses_context',
     698                        'selectors',
     699                        'supports',
     700                        'styles',
     701                        'example',
     702                        'variations',
     703                        'block_hooks',
    690704                        'editor_script_handles',
    691705                        'script_handles',
     
    693707                        'editor_style_handles',
    694708                        'style_handles',
    695                         'title',
    696                         'icon',
    697                         'description',
    698                         'keywords',
    699                         'parent',
    700                         'provides_context',
    701                         'uses_context',
    702                         'block_hooks',
    703                         'supports',
    704                         'styles',
    705                         'textdomain',
    706                         'example',
    707709                        // Deprecated fields.
    708710                        'editor_script',
Note: See TracChangeset for help on using the changeset viewer.