mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 20:30:23 +00:00
Block Editor: Fix for theme.json: color.duotone and spacing.units should allow empty sets.
This commit fixes an issue with the color.duotone & spacing.units in which empty values didn't override previous origins, resulting in that a theme couldn't provide an empty set for this via its theme.json. Props nosolosw, youknowriad, aristath. See #53175. git-svn-id: https://develop.svn.wordpress.org/trunk@51383 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -667,6 +667,209 @@ class Tests_Theme_wpThemeJson extends WP_UnitTestCase {
|
||||
$this->assertEqualSetsWithIndex( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 53175
|
||||
*/
|
||||
public function test_merge_incoming_data_empty_presets() {
|
||||
$theme_json = new WP_Theme_JSON(
|
||||
array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'duotone' => array(
|
||||
array(
|
||||
'slug' => 'value',
|
||||
'colors' => array( 'red', 'green' ),
|
||||
),
|
||||
),
|
||||
'gradients' => array(
|
||||
array(
|
||||
'slug' => 'gradient',
|
||||
'gradient' => 'gradient',
|
||||
),
|
||||
),
|
||||
'palette' => array(
|
||||
array(
|
||||
'slug' => 'red',
|
||||
'color' => 'red',
|
||||
),
|
||||
),
|
||||
),
|
||||
'spacing' => array(
|
||||
'units' => array( 'px', 'em' ),
|
||||
),
|
||||
'typography' => array(
|
||||
'fontSizes' => array(
|
||||
array(
|
||||
'slug' => 'size',
|
||||
'value' => 'size',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$theme_json->merge(
|
||||
new WP_Theme_JSON(
|
||||
array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'duotone' => array(),
|
||||
'gradients' => array(),
|
||||
'palette' => array(),
|
||||
),
|
||||
'spacing' => array(
|
||||
'units' => array(),
|
||||
),
|
||||
'typography' => array(
|
||||
'fontSizes' => array(),
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$actual = $theme_json->get_raw_data();
|
||||
$expected = array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'duotone' => array(),
|
||||
'gradients' => array(
|
||||
'theme' => array(),
|
||||
),
|
||||
'palette' => array(
|
||||
'theme' => array(),
|
||||
),
|
||||
),
|
||||
'spacing' => array(
|
||||
'units' => array(),
|
||||
),
|
||||
'typography' => array(
|
||||
'fontSizes' => array(
|
||||
'theme' => array(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqualSetsWithIndex( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 53175
|
||||
*/
|
||||
public function test_merge_incoming_data_null_presets() {
|
||||
$theme_json = new WP_Theme_JSON(
|
||||
array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'duotone' => array(
|
||||
array(
|
||||
'slug' => 'value',
|
||||
'colors' => array( 'red', 'green' ),
|
||||
),
|
||||
),
|
||||
'gradients' => array(
|
||||
array(
|
||||
'slug' => 'gradient',
|
||||
'gradient' => 'gradient',
|
||||
),
|
||||
),
|
||||
'palette' => array(
|
||||
array(
|
||||
'slug' => 'red',
|
||||
'color' => 'red',
|
||||
),
|
||||
),
|
||||
),
|
||||
'spacing' => array(
|
||||
'units' => array( 'px', 'em' ),
|
||||
),
|
||||
'typography' => array(
|
||||
'fontSizes' => array(
|
||||
array(
|
||||
'slug' => 'size',
|
||||
'value' => 'size',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$theme_json->merge(
|
||||
new WP_Theme_JSON(
|
||||
array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'custom' => false,
|
||||
),
|
||||
'spacing' => array(
|
||||
'customMargin' => false,
|
||||
),
|
||||
'typography' => array(
|
||||
'customLineHeight' => false,
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$actual = $theme_json->get_raw_data();
|
||||
$expected = array(
|
||||
'version' => WP_Theme_JSON::LATEST_SCHEMA,
|
||||
'settings' => array(
|
||||
'color' => array(
|
||||
'custom' => false,
|
||||
'duotone' => array(
|
||||
array(
|
||||
'slug' => 'value',
|
||||
'colors' => array( 'red', 'green' ),
|
||||
),
|
||||
),
|
||||
'gradients' => array(
|
||||
'theme' => array(
|
||||
array(
|
||||
'slug' => 'gradient',
|
||||
'gradient' => 'gradient',
|
||||
),
|
||||
),
|
||||
),
|
||||
'palette' => array(
|
||||
'theme' => array(
|
||||
array(
|
||||
'slug' => 'red',
|
||||
'color' => 'red',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'spacing' => array(
|
||||
'customMargin' => false,
|
||||
'units' => array( 'px', 'em' ),
|
||||
),
|
||||
'typography' => array(
|
||||
'customLineHeight' => false,
|
||||
'fontSizes' => array(
|
||||
'theme' => array(
|
||||
array(
|
||||
'slug' => 'size',
|
||||
'value' => 'size',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqualSetsWithIndex( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 52991
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user