Make WordPress Core


Ignore:
Timestamp:
09/18/2022 01:08:33 PM (2 years ago)
Author:
SergeyBiryukov
Message:

Tests: Move the basic get_block_templates() test to the dedicated file.

Now that the function has its own test class, the remaining test from Tests_Block_Template_Utils can be moved to Tests_Blocks_GetBlockTemplates for consistency.

Includes:

  • Uncommenting some assertions previously commented out.
  • Moving the get_template_ids() helper method to the top of the class.
  • Standardizing on wpSetUpBeforeClass()/wpTearDownAfterClass() in both classes.
  • Declaring the test theme name as a constant in both classes, since the value is not changed by any of the tests.
  • Renaming some properties in both classes for clarity.

Follow-up to [51003], [52062], [53927], [54184], [54187].

See #55652.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/blocks/getBlockTemplates.php

    r54187 r54198  
    1212     * @var WP_Post
    1313     */
    14     private static $template;
     14    private static $index_template;
    1515
    1616    /**
     
    2222     * @var WP_Post
    2323     */
    24     private static $template_part;
    25 
    26     public static function set_up_before_class() {
    27         parent::set_up_before_class();
    28 
     24    private static $small_header_template_part;
     25
     26    public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
    2927        /*
    3028         * This template has to have the same ID ("block-theme/index") as the template
    3129         * that is shipped with the "block-theme" theme. This is needed for testing purposes.
    3230         */
    33         static::$template = self::factory()->post->create_and_get(
     31        self::$index_template = $factory->post->create_and_get(
    3432            array(
    3533                'post_type' => 'wp_template',
     
    3735                'tax_input' => array(
    3836                    'wp_theme' => array(
    39                         static::TEST_THEME,
     37                        self::TEST_THEME,
    4038                    ),
    4139                ),
     
    4341        );
    4442
    45         wp_set_post_terms( static::$template->ID, static::TEST_THEME, 'wp_theme' );
    46 
    47         static::$custom_single_post_template = self::factory()->post->create_and_get(
     43        wp_set_post_terms( self::$index_template->ID, self::TEST_THEME, 'wp_theme' );
     44
     45        self::$custom_single_post_template = $factory->post->create_and_get(
    4846            array(
    4947                'post_type'    => 'wp_template',
     
    5452                'tax_input'    => array(
    5553                    'wp_theme' => array(
    56                         static::TEST_THEME,
     54                        self::TEST_THEME,
    5755                    ),
    5856                ),
     
    6058        );
    6159
    62         wp_set_post_terms( static::$custom_single_post_template->ID, static::TEST_THEME, 'wp_theme' );
     60        wp_set_post_terms( self::$custom_single_post_template->ID, self::TEST_THEME, 'wp_theme' );
    6361
    6462        /*
     
    6664         * that is shipped with the "block-theme" theme. This is needed for testing purposes.
    6765         */
    68         self::$template_part = self::factory()->post->create_and_get(
     66        self::$small_header_template_part = $factory->post->create_and_get(
    6967            array(
    7068                'post_type' => 'wp_template_part',
     
    7270                'tax_input' => array(
    7371                    'wp_theme'              => array(
    74                         static::TEST_THEME,
     72                        self::TEST_THEME,
    7573                    ),
    7674                    'wp_template_part_area' => array(
     
    8179        );
    8280
    83         wp_set_post_terms( self::$template_part->ID, WP_TEMPLATE_PART_AREA_HEADER, 'wp_template_part_area' );
    84         wp_set_post_terms( self::$template_part->ID, static::TEST_THEME, 'wp_theme' );
    85     }
    86 
    87     public static function tear_down_after_class() {
    88         wp_delete_post( static::$template->ID );
    89         wp_delete_post( static::$custom_single_post_template->ID );
    90         wp_delete_post( static::$template_part->ID );
    91 
    92         parent::tear_down_after_class();
     81        wp_set_post_terms( self::$small_header_template_part->ID, WP_TEMPLATE_PART_AREA_HEADER, 'wp_template_part_area' );
     82        wp_set_post_terms( self::$small_header_template_part->ID, self::TEST_THEME, 'wp_theme' );
     83    }
     84
     85    public static function wpTearDownAfterClass() {
     86        wp_delete_post( self::$index_template->ID );
     87        wp_delete_post( self::$custom_single_post_template->ID );
     88        wp_delete_post( self::$small_header_template_part->ID );
    9389    }
    9490
    9591    public function set_up() {
    9692        parent::set_up();
    97         switch_theme( static::TEST_THEME );
     93        switch_theme( self::TEST_THEME );
     94    }
     95
     96    /**
     97     * Gets the template IDs from the given array.
     98     *
     99     * @param object[] $templates Array of template objects to parse.
     100     * @return string[] The template IDs.
     101     */
     102    private function get_template_ids( $templates ) {
     103        return array_map(
     104            static function( $template ) {
     105                return $template->id;
     106            },
     107            $templates
     108        );
     109    }
     110
     111    /**
     112     * Should retrieve block templates (file and CPT)
     113     */
     114    public function test_get_block_templates() {
     115        // All results.
     116        $templates    = get_block_templates( array(), 'wp_template' );
     117        $template_ids = $this->get_template_ids( $templates );
     118
     119        // Avoid testing the entire array because the theme might add/remove templates.
     120        $this->assertContains( get_stylesheet() . '//' . 'custom-single-post-template', $template_ids );
     121
     122        // The result might change in a block theme.
     123        $this->assertContains( get_stylesheet() . '//' . 'index', $template_ids );
     124
     125        // Filter by slug.
     126        $templates    = get_block_templates( array( 'slug__in' => array( 'custom-single-post-template' ) ), 'wp_template' );
     127        $template_ids = $this->get_template_ids( $templates );
     128        $this->assertSame( array( get_stylesheet() . '//' . 'custom-single-post-template' ), $template_ids );
     129
     130        // Filter by CPT ID.
     131        $templates    = get_block_templates( array( 'wp_id' => self::$custom_single_post_template->ID ), 'wp_template' );
     132        $template_ids = $this->get_template_ids( $templates );
     133        $this->assertSame( array( get_stylesheet() . '//' . 'custom-single-post-template' ), $template_ids );
     134
     135        // Filter template part by area.
     136        // Requires a block theme.
     137        $templates    = get_block_templates( array( 'area' => WP_TEMPLATE_PART_AREA_HEADER ), 'wp_template_part' );
     138        $template_ids = $this->get_template_ids( $templates );
     139        $this->assertSame(
     140            array(
     141                get_stylesheet() . '//' . 'small-header',
     142            ),
     143            $template_ids
     144        );
    98145    }
    99146
     
    175222        );
    176223    }
    177 
    178     /**
    179      * Gets the template IDs from the given array.
    180      *
    181      * @param object[] $templates Array of template objects to parse.
    182      * @return string[] The template IDs.
    183      */
    184     private function get_template_ids( $templates ) {
    185         return array_map(
    186             static function( $template ) {
    187                 return $template->id;
    188             },
    189             $templates
    190         );
    191     }
    192224}
Note: See TracChangeset for help on using the changeset viewer.