Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add blocks origin test and improve them all
  • Loading branch information
oandregal committed Nov 24, 2022
commit 3a5602a60073d8c7880f6570b1ad555e376852d2
201 changes: 184 additions & 17 deletions phpunit/class-wp-theme-json-resolver-test.php
Original file line number Diff line number Diff line change
Expand Up @@ -363,31 +363,195 @@ public function test_get_user_data_from_wp_global_styles_does_not_use_uncached_q
* @covers WP_Theme_JSON_Resolver::get_merged_data
*/
public function test_get_merged_data_returns_origin_default() {
switch_theme( 'block-theme' ); // make sure there is data from the theme origin
$settings = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( 'default' )->get_settings();
$this->assertTrue( isset( $settings['color']['palette']['default'] ) );
$this->assertFalse( isset( $settings['color']['palette']['theme'] ) );
$this->assertFalse( isset( $settings['color']['palette']['custom'] ) );
// Make sure there is data from the blocks origin.
register_block_type(
'my/block-with-styles',
array(
'api_version' => 2,
'attributes' => array(
'borderColor' => array(
'type' => 'string',
),
'style' => array(
'type' => 'object',
),
),
'supports' => array(
'__experimentalStyle' => array(
'typography' => array(
'fontSize' => '42rem',
),
),
),
),
);

// Make sure there is data from the theme origin.
switch_theme( 'block-theme' );

// Make sure there is data from the user origin.
wp_set_current_user( self::$administrator_id );
$user_cpt = WP_Theme_JSON_Resolver_Gutenberg::get_user_data_from_wp_global_styles( wp_get_theme(), true );
$config = json_decode( $user_cpt['post_content'], true );
$config['settings']['color']['palette']['custom'] = array(
array(
'color' => 'hotpink',
'name' => 'My color',
'slug' => 'my-color'
)
);
$user_cpt['post_content'] = wp_json_encode( $config );
wp_update_post( $user_cpt, true, false );

$theme_json = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( 'default' );
$settings = $theme_json->get_settings();
$styles = $theme_json->get_styles_block_nodes();
$this->assertTrue( isset( $settings['color']['palette']['default'] ), 'core palette is present' );
$this->assertFalse( isset( $styles[4] ) , 'block styles are not present' );
$this->assertFalse( isset( $settings['color']['palette']['theme'] ), 'theme palette is not present' );
$this->assertFalse( isset( $settings['color']['palette']['custom'] ), 'user palette is not present' );
unregister_block_type( 'my/block-with-styles' );
}

/**
* @covers WP_Theme_JSON_Resolver::get_merged_data
*/
public function test_get_merged_data_returns_origin_blocks() {
// Make sure there is data from the blocks origin.
register_block_type(
'my/block-with-styles',
array(
'api_version' => 2,
'attributes' => array(
'borderColor' => array(
'type' => 'string',
),
'style' => array(
'type' => 'object',
),
),
'supports' => array(
'__experimentalStyle' => array(
'typography' => array(
'fontSize' => '42rem',
),
),
),
),
);

// Make sure there is data from the theme origin.
switch_theme( 'block-theme' );

// Make sure there is data from the user origin.
wp_set_current_user( self::$administrator_id );
$user_cpt = WP_Theme_JSON_Resolver_Gutenberg::get_user_data_from_wp_global_styles( wp_get_theme(), true );
$config = json_decode( $user_cpt['post_content'], true );
$config['settings']['color']['palette']['custom'] = array(
array(
'color' => 'hotpink',
'name' => 'My color',
'slug' => 'my-color'
)
);
$user_cpt['post_content'] = wp_json_encode( $config );
wp_update_post( $user_cpt, true, false );

$theme_json = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( 'blocks' );
$settings = $theme_json->get_settings();
$styles = $theme_json->get_styles_block_nodes();
$this->assertTrue( isset( $settings['color']['palette']['default'] ), 'core palette is present' );
$this->assertSame( $styles[4]['name'], 'my/block-with-styles' , 'block styles are present' );
$this->assertFalse( isset( $settings['color']['palette']['theme'] ), 'theme palette is not present' );
$this->assertFalse( isset( $settings['color']['palette']['custom'] ), 'user palette is not present' );
unregister_block_type( 'my/block-with-styles' );
}

/**
* @covers WP_Theme_JSON_Resolver::get_merged_data
*/
public function test_get_merged_data_returns_origin_theme() {
switch_theme( 'block-theme' ); // make sure there is data from the theme origin
$settings = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( 'theme' )->get_settings();
$this->assertTrue( isset( $settings['color']['palette']['default'] ) );
$this->assertTrue( isset( $settings['color']['palette']['theme'] ) );
$this->assertFalse( isset( $settings['color']['palette']['custom'] ) );
// Make sure there is data from the blocks origin.
register_block_type(
'my/block-with-styles',
array(
'api_version' => 2,
'attributes' => array(
'borderColor' => array(
'type' => 'string',
),
'style' => array(
'type' => 'object',
),
),
'supports' => array(
'__experimentalStyle' => array(
'typography' => array(
'fontSize' => '42rem',
),
),
),
),
);

// Make sure there is data from the theme origin.
switch_theme( 'block-theme' );

// Make sure there is data from the user origin.
wp_set_current_user( self::$administrator_id );
$user_cpt = WP_Theme_JSON_Resolver_Gutenberg::get_user_data_from_wp_global_styles( wp_get_theme(), true );
$config = json_decode( $user_cpt['post_content'], true );
$config['settings']['color']['palette']['custom'] = array(
array(
'color' => 'hotpink',
'name' => 'My color',
'slug' => 'my-color'
)
);
$user_cpt['post_content'] = wp_json_encode( $config );
wp_update_post( $user_cpt, true, false );

$theme_json = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( 'theme' );
$settings = $theme_json->get_settings();
$styles = $theme_json->get_styles_block_nodes();
$this->assertTrue( isset( $settings['color']['palette']['default'] ), 'core palette is present' );
$this->assertSame( $styles[4]['name'], 'my/block-with-styles' , 'block styles are present' );
$this->assertTrue( isset( $settings['color']['palette']['theme'] ), 'theme palette is present' );
$this->assertFalse( isset( $settings['color']['palette']['custom'] ), 'user palette is not present' );
unregister_block_type( 'my/block-with-styles' );
}

/**
* @covers WP_Theme_JSON_Resolver::get_merged_data
*/
public function test_get_merged_data_returns_origin_custom() {
switch_theme( 'block-theme' ); // make sure there is data from the theme origin
// Make sure there is data from the blocks origin.
register_block_type(
'my/block-with-styles',
array(
'api_version' => 2,
'attributes' => array(
'borderColor' => array(
'type' => 'string',
),
'style' => array(
'type' => 'object',
),
),
'supports' => array(
'__experimentalStyle' => array(
'typography' => array(
'fontSize' => '42rem',
),
),
),
),
);

// Make sure there is data from the theme origin.
switch_theme( 'block-theme' );

// start saving user data
// Make sure there is data from the user origin.
wp_set_current_user( self::$administrator_id );
$user_cpt = WP_Theme_JSON_Resolver_Gutenberg::get_user_data_from_wp_global_styles( wp_get_theme(), true );
$config = json_decode( $user_cpt['post_content'], true );
Expand All @@ -400,12 +564,15 @@ public function test_get_merged_data_returns_origin_custom() {
);
$user_cpt['post_content'] = wp_json_encode( $config );
wp_update_post( $user_cpt, true, false );
// end saving user data

$settings = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data()->get_settings();
$this->assertTrue( isset( $settings['color']['palette']['default'] ) );
$this->assertTrue( isset( $settings['color']['palette']['theme'] ) );
$this->assertTrue( isset( $settings['color']['palette']['custom'] ) );
$theme_json = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data();
$settings = $theme_json->get_settings();
$styles = $theme_json->get_styles_block_nodes();
$this->assertTrue( isset( $settings['color']['palette']['default'] ), 'core palette is present' );
$this->assertSame( $styles[4]['name'], 'my/block-with-styles' , 'block styles are present' );
$this->assertTrue( isset( $settings['color']['palette']['theme'] ), 'theme palette is present' );
$this->assertTrue( isset( $settings['color']['palette']['custom'] ), 'user palette is present' );
unregister_block_type( 'my/block-with-styles' );
}

}