Make WordPress Core


Ignore:
Timestamp:
10/13/2023 04:44:09 PM (8 months ago)
Author:
flixos90
Message:

Themes: Clear existing pattern cache when in theme development mode and prevent PHP warning due to missing file.

Follow up to [56765].

Props spacedmonkey, afercia, jrf, flixos90.
Fixes #59591.
See #59490.

File:
1 edited

Legend:

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

    r56771 r56931  
    1919     * @param string $theme    The theme's slug.
    2020     * @param array  $expected The expected pattern data.
    21 
    2221     */
    2322    public function test_should_return_block_patterns( $theme, $expected ) {
     
    119118        );
    120119    }
     120
     121    /**
     122     * Tests that _wp_get_block_patterns() clears existing transient when in theme development mode.
     123     *
     124     * @ticket 59591
     125     */
     126    public function test_should_clear_existing_transient_when_in_development_mode() {
     127        $theme = wp_get_theme( 'block-theme-patterns' );
     128
     129        // Calling the function should set the cache.
     130        _wp_get_block_patterns( $theme );
     131        $this->assertSameSets(
     132            array(
     133                'cta.php' => array(
     134                    'title'       => 'Centered Call To Action',
     135                    'slug'        => 'block-theme-patterns/cta',
     136                    'description' => '',
     137                    'categories'  => array( 'call-to-action' ),
     138                ),
     139            ),
     140            $theme->get_pattern_cache(),
     141            'The transient for block theme patterns should be set'
     142        );
     143
     144        // Calling the function while in theme development mode should clear the cache.
     145        $GLOBALS['_wp_tests_development_mode'] = 'theme';
     146        _wp_get_block_patterns( $theme );
     147        unset( $GLOBALS['_wp_tests_development_mode'] ); // Reset to not pollute other tests.
     148        $this->assertFalse(
     149            $theme->get_pattern_cache(),
     150            'The transient for block theme patterns should have been cleared due to theme development mode'
     151        );
     152    }
    121153}
Note: See TracChangeset for help on using the changeset viewer.