-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Comment Template Block: Add test coverage for context setting (#50879)
Add a unit test to verify that the Comment Template block sets `commentId` context as expected.
- Loading branch information
Showing
1 changed file
with
124 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<?php | ||
/** | ||
* Tests for the Comment Template block rendering. | ||
* | ||
* @package WordPress | ||
* @subpackage Blocks | ||
* @since 6.3.0 | ||
* | ||
* @group blocks | ||
*/ | ||
class Tests_Blocks_RenderCommentTemplateBlock extends WP_UnitTestCase { | ||
|
||
private static $custom_post; | ||
private static $comment_ids; | ||
private static $per_page = 5; | ||
|
||
/** | ||
* Array of the comments options and their original values. | ||
* Used to reset the options after each test. | ||
* | ||
* @var array | ||
*/ | ||
private static $original_options; | ||
|
||
public static function set_up_before_class() { | ||
parent::set_up_before_class(); | ||
|
||
// Store the original option values. | ||
$options = array( | ||
'comment_order', | ||
'comments_per_page', | ||
'default_comments_page', | ||
'page_comments', | ||
'previous_default_page', | ||
'thread_comments_depth', | ||
); | ||
foreach ( $options as $option ) { | ||
static::$original_options[ $option ] = get_option( $option ); | ||
} | ||
} | ||
|
||
public function tear_down() { | ||
// Reset the comment options to their original values. | ||
foreach ( static::$original_options as $option => $original_value ) { | ||
update_option( $option, $original_value ); | ||
} | ||
|
||
parent::tear_down(); | ||
} | ||
|
||
public function set_up() { | ||
parent::set_up(); | ||
|
||
update_option( 'page_comments', true ); | ||
update_option( 'comments_per_page', self::$per_page ); | ||
|
||
self::$custom_post = self::factory()->post->create_and_get( | ||
array( | ||
'post_type' => 'dogs', | ||
'post_status' => 'publish', | ||
'post_name' => 'metaldog', | ||
'post_title' => 'Metal Dog', | ||
'post_content' => 'Metal Dog content', | ||
'post_excerpt' => 'Metal Dog', | ||
) | ||
); | ||
|
||
self::$comment_ids = self::factory()->comment->create_post_comments( | ||
self::$custom_post->ID, | ||
1, | ||
array( | ||
'comment_author' => 'Test', | ||
'comment_author_email' => 'test@example.org', | ||
'comment_author_url' => 'http://example.com/author-url/', | ||
'comment_content' => 'Hello world', | ||
) | ||
); | ||
} | ||
|
||
public function test_rendering_comment_template_sets_comment_id_context() { | ||
$parsed_comment_author_name_block = parse_blocks( '<!-- wp:comment-author-name /-->' )[0]; | ||
$comment_author_name_block = new WP_Block( | ||
$parsed_comment_author_name_block, | ||
array( | ||
'commentId' => self::$comment_ids[0], | ||
) | ||
); | ||
$comment_author_name_block_markup = $comment_author_name_block->render(); | ||
$this->assertNotEmpty( | ||
$comment_author_name_block_markup, | ||
'Comment Author Name block rendered markup is empty.' | ||
); | ||
|
||
$render_block_callback = static function( $block_content, $block ) use ( $parsed_comment_author_name_block ) { | ||
// Insert a Comment Author Name block (which requires `commentId` | ||
// block context to work) after the Comment Content block. | ||
if ( 'core/comment-content' !== $block['blockName'] ) { | ||
return $block_content; | ||
} | ||
|
||
$inserted_content = render_block( $parsed_comment_author_name_block ); | ||
return $inserted_content . $block_content; | ||
}; | ||
|
||
add_filter( 'render_block', $render_block_callback, 10, 3 ); | ||
$parsed_blocks = parse_blocks( | ||
'<!-- wp:comment-template --><!-- wp:comment-content /--><!-- /wp:comment-template -->' | ||
); | ||
$block = new WP_Block( | ||
$parsed_blocks[0], | ||
array( | ||
'postId' => self::$custom_post->ID, | ||
) | ||
); | ||
$markup = $block->render(); | ||
remove_filter( 'render_block', $render_block_callback ); | ||
|
||
$this->assertStringContainsString( | ||
$comment_author_name_block_markup, | ||
$markup, | ||
"Rendered markup doesn't contain Comment Author Name block." | ||
); | ||
} | ||
} |
baf2251
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.
Flaky tests detected in baf2251.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.
🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/5122010013
📝 Reported issues:
/test/e2e/specs/editor/blocks/navigation.spec.js