From 85c0921f91343b3949993ca2e1bf938cc61bec6b Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Wed, 19 Oct 2016 19:38:27 +0000 Subject: [PATCH] Customize: Fix unit tests when `twentyfifteen` is `WP_DEFAULT_THEME` instead of `twentysixteen`. Use an inactive core theme for previewing theme switch instead of assuming `twentysixteen` is installed and active and `twentyfifteen` is not. See #30937. git-svn-id: https://develop.svn.wordpress.org/trunk@38830 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/customize/manager.php | 40 +++++++++++++++++------ 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/tests/phpunit/tests/customize/manager.php b/tests/phpunit/tests/customize/manager.php index 634baf6198..3016c70f0b 100644 --- a/tests/phpunit/tests/customize/manager.php +++ b/tests/phpunit/tests/customize/manager.php @@ -70,6 +70,22 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { parent::tearDown(); } + /** + * Get a core theme that is not the same as the current theme. + * + * @throws Exception If an inactive core Twenty* theme cannot be found. + * @return string Theme slug (stylesheet). + */ + function get_inactive_core_theme() { + $stylesheet = get_stylesheet(); + foreach ( wp_get_themes() as $theme ) { + if ( $theme->stylesheet !== $stylesheet && 0 === strpos( $theme->stylesheet, 'twenty' ) ) { + return $theme->stylesheet; + } + } + throw new Exception( 'Unable to find inactive twenty* theme.' ); + } + /** * Instantiate class, set global $wp_customize, and return instance. * @@ -347,6 +363,8 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { * @covers WP_Customize_Manager::add_state_query_params() */ function test_add_state_query_params() { + $preview_theme = $this->get_inactive_core_theme(); + $uuid = wp_generate_uuid4(); $messenger_channel = 'preview-0'; $wp_customize = new WP_Customize_Manager( array( @@ -366,7 +384,7 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { $wp_customize = new WP_Customize_Manager( array( 'changeset_uuid' => $uuid, 'messenger_channel' => null, - 'theme' => 'twentyfifteen', + 'theme' => $preview_theme, ) ); $url = $wp_customize->add_state_query_params( home_url( '/' ) ); $parsed_url = wp_parse_url( $url ); @@ -375,13 +393,13 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { $this->assertArrayHasKey( 'customize_changeset_uuid', $query_params ); $this->assertArrayHasKey( 'customize_theme', $query_params ); $this->assertEquals( $uuid, $query_params['customize_changeset_uuid'] ); - $this->assertEquals( 'twentyfifteen', $query_params['customize_theme'] ); + $this->assertEquals( $preview_theme, $query_params['customize_theme'] ); $uuid = wp_generate_uuid4(); $wp_customize = new WP_Customize_Manager( array( 'changeset_uuid' => $uuid, 'messenger_channel' => null, - 'theme' => 'twentyfifteen', + 'theme' => $preview_theme, ) ); $url = $wp_customize->add_state_query_params( 'http://not-allowed.example.com/?q=1' ); $parsed_url = wp_parse_url( $url ); @@ -610,8 +628,9 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { function test_save_changeset_post_with_theme_activation() { wp_set_current_user( self::$admin_user_id ); + $preview_theme = $this->get_inactive_core_theme(); $stashed_theme_mods = array( - 'twentyfifteen' => array( + $preview_theme => array( 'background_color' => array( 'value' => '#123456', ), @@ -621,18 +640,18 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { $uuid = wp_generate_uuid4(); $manager = new WP_Customize_Manager( array( 'changeset_uuid' => $uuid, - 'theme' => 'twentyfifteen', + 'theme' => $preview_theme, ) ); $manager->register_controls(); $GLOBALS['wp_customize'] = $manager; - $manager->set_post_value( 'blogname', 'Hello 2015' ); + $manager->set_post_value( 'blogname', 'Hello Preview Theme' ); $post_values = $manager->unsanitized_post_values(); $manager->save_changeset_post( array( 'status' => 'publish' ) ); // Activate. $this->assertEquals( '#123456', $post_values['background_color'] ); - $this->assertEquals( 'twentyfifteen', get_stylesheet() ); - $this->assertEquals( 'Hello 2015', get_option( 'blogname' ) ); + $this->assertEquals( $preview_theme, get_stylesheet() ); + $this->assertEquals( 'Hello Preview Theme', get_option( 'blogname' ) ); } /** @@ -749,8 +768,9 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { function test_unsanitized_post_values_with_changeset_and_stashed_theme_mods() { wp_set_current_user( self::$admin_user_id ); + $preview_theme = $this->get_inactive_core_theme(); $stashed_theme_mods = array( - 'twentyfifteen' => array( + $preview_theme => array( 'background_color' => array( 'value' => '#000000', ), @@ -827,7 +847,7 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { // Test unstashing theme mods. $manager = new WP_Customize_Manager( array( 'changeset_uuid' => $uuid, - 'theme' => 'twentyfifteen', + 'theme' => $preview_theme, ) ); $this->assertFalse( $manager->is_theme_active() ); $values = $manager->unsanitized_post_values( array( 'exclude_post_data' => true, 'exclude_changeset' => true ) );