Editor: Ensure Global styles values are reset in the site editor.

This changeset fixes a bug by which the reset function of the global styles sidebar would not work as expected in the site editor. It reverts [54517] and adds related unit tests.

Props oandregal, ntsekouras, youknowriad, hellofromTonya.
Fixes #57824
See #56467


git-svn-id: https://develop.svn.wordpress.org/trunk@55448 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jb Audras
2023-03-01 16:15:27 +00:00
parent ef30796aab
commit 66055a520d
2 changed files with 45 additions and 1 deletions

View File

@@ -559,7 +559,8 @@ class WP_Theme_JSON_Resolver {
_deprecated_argument( __FUNCTION__, '5.9.0' );
}
$result = static::get_core_data();
$result = new WP_Theme_JSON();
$result->merge( static::get_core_data() );
if ( 'default' === $origin ) {
$result->set_spacing_sizes();
return $result;

View File

@@ -848,6 +848,49 @@ class Tests_Theme_wpThemeJsonResolver extends WP_UnitTestCase {
}
/**
* Tests that get_merged_data returns the data merged up to the proper origin
* and that the core values have the proper data.
*
* @ticket 57824
*
* @covers WP_Theme_JSON_Resolver::get_merged_data
*
*/
public function test_get_merged_data_returns_origin_proper() {
// Make sure the theme has a theme.json
// though it doesn't have any data for styles.spacing.padding.
switch_theme( 'block-theme' );
// Make sure the user defined some data for styles.spacing.padding.
wp_set_current_user( self::$administrator_id );
$user_cpt = WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles( wp_get_theme(), true );
$config = json_decode( $user_cpt['post_content'], true );
$config['styles']['spacing']['padding'] = array(
'top' => '23px',
'left' => '23px',
'bottom' => '23px',
'right' => '23px',
);
$user_cpt['post_content'] = wp_json_encode( $config );
wp_update_post( $user_cpt, true, false );
// Query data from the user origin and then for the theme origin.
$theme_json_user = WP_Theme_JSON_Resolver::get_merged_data( 'custom' );
$padding_user = $theme_json_user->get_raw_data()['styles']['spacing']['padding'];
$theme_json_theme = WP_Theme_JSON_Resolver::get_merged_data( 'theme' );
$padding_theme = $theme_json_theme->get_raw_data()['styles']['spacing']['padding'];
$this->assertSame( '23px', $padding_user['top'] );
$this->assertSame( '23px', $padding_user['right'] );
$this->assertSame( '23px', $padding_user['bottom'] );
$this->assertSame( '23px', $padding_user['left'] );
$this->assertSame( '0px', $padding_theme['top'] );
$this->assertSame( '0px', $padding_theme['right'] );
$this->assertSame( '0px', $padding_theme['bottom'] );
$this->assertSame( '0px', $padding_theme['left'] );
}
/**
* Data provider.
*