-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Global Styles: Fix for third-party blocks #3529
Changes from 3 commits
1885efc
5521274
1099bce
53fbe34
cb00498
f1ca6f5
19f6271
25eaf26
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
<?php | ||
|
||
/** | ||
* Tests wp_add_global_styles_for_blocks(). | ||
* | ||
* @group themes | ||
*/ | ||
class Tests_Theme_wpGetGlobalStylesForBlocks extends WP_UnitTestCase { | ||
ockham marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
/** | ||
* Theme root directory. | ||
* | ||
* @var string | ||
*/ | ||
private $theme_root; | ||
|
||
/** | ||
* Original theme directory. | ||
* | ||
* @var string | ||
*/ | ||
private $orig_theme_dir; | ||
|
||
public function set_up() { | ||
parent::set_up(); | ||
|
||
$this->orig_theme_dir = $GLOBALS['wp_theme_directories']; | ||
$this->theme_root = realpath( DIR_TESTDATA . '/themedir1' ); | ||
|
||
// /themes is necessary as theme.php functions assume /themes is the root if there is only one root. | ||
$GLOBALS['wp_theme_directories'] = array( WP_CONTENT_DIR . '/themes', $this->theme_root ); | ||
|
||
// Set up the new root. | ||
add_filter( 'theme_root', array( $this, 'filter_set_theme_root' ) ); | ||
add_filter( 'stylesheet_root', array( $this, 'filter_set_theme_root' ) ); | ||
add_filter( 'template_root', array( $this, 'filter_set_theme_root' ) ); | ||
|
||
// Clear caches. | ||
wp_clean_themes_cache(); | ||
unset( $GLOBALS['wp_themes'] ); | ||
} | ||
|
||
public function tear_down() { | ||
$GLOBALS['wp_theme_directories'] = $this->orig_theme_dir; | ||
|
||
// Clear up the filters to modify the theme root. | ||
remove_filter( 'theme_root', array( $this, 'filter_set_theme_root' ) ); | ||
remove_filter( 'stylesheet_root', array( $this, 'filter_set_theme_root' ) ); | ||
remove_filter( 'template_root', array( $this, 'filter_set_theme_root' ) ); | ||
|
||
wp_clean_themes_cache(); | ||
unset( $GLOBALS['wp_themes'] ); | ||
|
||
parent::tear_down(); | ||
} | ||
|
||
/** | ||
* Cleans up global scope. | ||
* | ||
* @global WP_Styles $wp_styles | ||
*/ | ||
public function clean_up_global_scope() { | ||
global $wp_styles; | ||
parent::clean_up_global_scope(); | ||
$wp_styles = null; | ||
} | ||
|
||
public function filter_set_theme_root() { | ||
return $this->theme_root; | ||
} | ||
|
||
public function test_styles_for_blocks() { | ||
ockham marked this conversation as resolved.
Show resolved
Hide resolved
|
||
switch_theme( 'block-theme' ); | ||
|
||
// The 3rd party block styles are only missing | ||
// if the assets are loaded per block. | ||
add_filter( 'should_load_separate_core_block_assets', '__return_true' ); | ||
|
||
$name = 'my/third-party-block'; | ||
$settings = array( | ||
'icon' => 'text', | ||
'category' => 'common', | ||
'render_callback' => 'foo', | ||
); | ||
register_block_type( $name, $settings ); | ||
wp_enqueue_global_styles(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are interested in testing There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, it'd be great if we could isolate the test to really just run |
||
unregister_block_type( $name ); | ||
|
||
$this->assertStringContainsString( '.wp-block-my-third-party-block{background-color: hotpink;}', get_echo( 'wp_print_styles' ), '3rd party block styles are included' ); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The styles added to |
||
|
||
switch_theme( WP_DEFAULT_THEME ); | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These styles will be ignored by any other tests because the block
my/third-party-block
won't be registered.