Make WordPress Core

Changeset 56588

Timestamp:
09/14/2023 02:54:41 PM (11 months 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
     205
     206
     207
    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
     215
     216
     217
     218
    209219            'block_hooks'      => 'invalid_block_hooks',
    210             'category'         => true,
     220            ',
    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
     235
     236
     237
    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
     279
     280
     281
    278282            'description'      => false,
    279             'icon'             => false,
     283            'keywords'         => false,
     284            'textdomain'       => false,
    280285            'attributes'       => false,
    281286            'provides_context' => false,
    282287            'uses_context'     => false,
     288
     289
     290
     291
     292
    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
     309
     310
     311
    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
    557557        $this->assertArrayHasKey( 'title', $properties );
     558
     559
     560
    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
     567
    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
    689689            'category',
     690
     691
     692
     693
     694
     695
     696
     697
     698
     699
     700
     701
     702
     703
    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.