Skip to content

Commit

Permalink
remove : other populate functions and their tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Ta5r committed Dec 17, 2024
1 parent bfe6662 commit da6f86f
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 286 deletions.
63 changes: 0 additions & 63 deletions includes/Data/ContentBlocksResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -244,69 +244,6 @@ private static function populate_reusable_blocks( array $block ): array {
return array_merge( ...$parsed_blocks );
}

/**
* Populates the innerBlocks of a core/post-content block with the blocks from the post content.
*
* @param array<string,mixed> $block The block to populate.
*
* @return array<string,mixed> The populated block.
*/
private static function populate_post_content_inner_blocks( array $block ): array {
if ( 'core/post-content' !== $block['blockName'] ) {
error_log( 'core/post-content not found' );
return $block;
}

$post = get_post();

if ( ! $post ) {
error_log( 'post not found' );
return $block;
}

$parsed_blocks = ! empty( $post->post_content ) ? self::parse_blocks( $post->post_content ) : null;

if ( empty( $parsed_blocks ) ) {
error_log( 'parsed_blocks not found - empty' );
return $block;
}

$block['innerBlocks'] = $parsed_blocks;
error_log( 'parsed_blocks found :white_check_mark:' );
return $block;
}

/**
* Populates the pattern innerBlocks with the blocks from the pattern.
*
* @param array<string,mixed> $block The block to populate.
* @return array<string,mixed> The populated block.
*/
private static function populate_pattern_inner_blocks( array $block ): array {
error_log( 'populate_pattern_inner_blocks' );
// Bail if not WP 6.6 or later.
if ( ! function_exists( 'resolve_pattern_blocks' ) ) {
error_log( 'resolve_pattern_blocks not found' );
return $block;
}

if ( 'core/pattern' !== $block['blockName'] || ! isset( $block['attrs']['slug'] ) ) {
error_log( 'core/pattern or slug not found' );
return $block;
}

$resolved_patterns = resolve_pattern_blocks( [ $block ] );

if ( empty( $resolved_patterns ) ) {
error_log( 'resolved_patterns not found - empty' );
return $block;
}

$block['innerBlocks'] = $resolved_patterns;
error_log( 'resolved_patterns found :white_check_mark:' );
return $block;
}

/**
* Flattens a list blocks into a single array
*
Expand Down
223 changes: 0 additions & 223 deletions tests/unit/ContentBlocksResolverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -404,227 +404,4 @@ function () use ( $mock_template ) {
$this->assertEquals( 'core/paragraph', $resolved_flat_blocks[1]['blockName'] );
$this->assertEquals( 'core/heading', $resolved_flat_blocks[2]['blockName'] );
}

/**
* Tests behavior when post-content block is empty.
*/
// public function test_resolve_content_blocks_resolves_post_content_inner_blocks_with_empty_post_content_block() {
// error_log( 'test_resolve_content_blocks_resolves_post_content_inner_blocks_with_empty_post_content_block' );
// $empty_post_content = '<!-- wp:post-content /-->';

// wp_update_post([
// 'ID' => $this->post_id,
// 'post_content' => $empty_post_content,
// ]);

// $post_model = new Post( get_post( $this->post_id ) );

// $resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => false ] );
// error_log( print_r( $resolved_blocks, true ) );

// $this->assertCount( 1, $resolved_blocks, 'There should be one top-level block.' );
// $this->assertEquals( 'core/post-content', $resolved_blocks[0]['blockName'] );
// $this->assertEmpty( $resolved_blocks[0]['innerBlocks'], 'The post-content block should have no inner blocks.' );
// }

// /**
// * Tests behavior when no post-content block exists.
// */
// public function test_resolve_content_blocks_resolves_post_content_inner_blocks_with_no_post_content_block() {
// error_log( 'test_resolve_content_blocks_resolves_post_content_inner_blocks_with_no_post_content_block' );
// $post_content = '
// <!-- wp:paragraph -->
// <p>This is just a paragraph block.</p>
// <!-- /wp:paragraph -->
// ';

// wp_update_post([
// 'ID' => $this->post_id,
// 'post_content' => $post_content,
// ]);

// $post_model = new Post( get_post( $this->post_id ) );

// $resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => true ] );
// error_log( print_r( $resolved_blocks, true ) );

// $this->assertCount( 1, $resolved_blocks, 'There should only be one block.' );
// $this->assertEquals( 'core/paragraph', $resolved_blocks[0]['blockName'] );
// }

// /**
// * Tests that post content inner blocks are resolved correctly.
// */
// public function test_resolve_content_blocks_resolves_post_content_inner_blocks() {
// $post_content = '
// <!-- wp:post-content -->
// <!-- wp:columns -->
// <div class="wp-block-columns">
// <!-- wp:column -->
// <div class="wp-block-column">
// <!-- wp:paragraph -->
// <p>Column 1 Paragraph</p>
// <!-- /wp:paragraph -->
// </div>
// <!-- /wp:column -->
// <!-- wp:column -->
// <div class="wp-block-column">
// <!-- wp:heading -->
// <h2>Column 2 Heading</h2>
// <!-- /wp:heading -->
// </div>
// <!-- /wp:column -->
// </div>
// <!-- /wp:columns -->
// <!-- /wp:post-content -->
// ';
// error_log( 'test_resolve_content_blocks_resolves_post_content_inner_blocks' );

// // Update the post with post-content block.
// wp_update_post(
// [
// 'ID' => $this->post_id,
// 'post_content' => $post_content,
// ]
// );
// error_log( 'post updated' );

// $post_model = new Post( get_post( $this->post_id ) );
// error_log( 'post_model' );

// // Resolve blocks as nested.
// $resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => false ] );
// error_log( 'resolved_blocks' );

// // Assertions for nested blocks.
// $this->assertCount( 1, $resolved_blocks, 'There should be only one top-level block (post-content).' );
// $this->assertEquals( 'core/post-content', $resolved_blocks[0]['blockName'] );
// // $this->assertCount( 1, $resolved_blocks[0]['innerBlocks'], 'There should be one top-level block in post content.' );
// $this->assertEquals( 'core/columns', $resolved_blocks[0]['innerBlocks'][0]['blockName'] );

// // Resolve blocks as flat
// $resolved_flat_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => true ] );
// error_log( 'resolved_flat_blocks' );

// // Assertions for flat blocks
// $this->assertCount( 5, $resolved_flat_blocks, 'There should be five blocks when flattened.' );
// $this->assertEquals( 'core/post-content', $resolved_flat_blocks[0]['blockName'] );
// $this->assertEquals( 'core/columns', $resolved_flat_blocks[1]['blockName'] );
// $this->assertEquals( 'core/column', $resolved_flat_blocks[2]['blockName'] );
// $this->assertEquals( 'core/paragraph', $resolved_flat_blocks[3]['blockName'] );
// $this->assertEquals( 'core/column', $resolved_flat_blocks[4]['blockName'] );

// error_log( 'end' );
// }

/**
* Tests that pattern inner blocks are resolved correctly.
*/
public function test_resolve_content_blocks_resolves_pattern_inner_blocks() {
// Skip if pattern resolution functionality is not supported.
if ( ! function_exists( 'resolve_pattern_blocks' ) ) {
$this->markTestSkipped( 'Pattern block resolution not supported in this WordPress version.' );
}

// Create a pattern
$pattern_name = 'test/pattern-blocks';
$pattern_content = '
<!-- wp:paragraph -->
<p>Pattern Paragraph</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2>Pattern Heading</h2>
<!-- /wp:heading -->
';

// Register the pattern.
register_block_pattern(
$pattern_name,
[
'title' => 'Test Pattern',
'content' => $pattern_content,
]
);

// Update post content to include pattern block.
$post_content = '
<!-- wp:pattern {"slug":"test/pattern-blocks"} /-->
';

wp_update_post(
[
'ID' => $this->post_id,
'post_content' => $post_content,
]
);

$post_model = new Post( get_post( $this->post_id ) );

// Resolve blocks as nested.
$resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => false ] );
error_log( print_r( $resolved_blocks, true ) );

$this->assertCount( 1, $resolved_blocks, 'There should be only one top-level block (pattern).' );
$this->assertEquals( 'core/pattern', $resolved_blocks[0]['blockName'] );
$this->assertCount( 2, $resolved_blocks[0]['innerBlocks'], 'There should be two inner blocks in the pattern.' );
$this->assertEquals( 'core/paragraph', $resolved_blocks[0]['innerBlocks'][0]['blockName'] );
$this->assertEquals( 'core/heading', $resolved_blocks[0]['innerBlocks'][1]['blockName'] );

// Resolve blocks as flat.
$resolved_flat_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => true ] );

$this->assertCount( 3, $resolved_flat_blocks, 'There should be three blocks when flattened.' );
$this->assertEquals( 'core/pattern', $resolved_flat_blocks[0]['blockName'] );
$this->assertEquals( 'core/paragraph', $resolved_flat_blocks[1]['blockName'] );
$this->assertEquals( 'core/heading', $resolved_flat_blocks[2]['blockName'] );

// Cleanup: Unregistering the pattern.
unregister_block_pattern( $pattern_name );
}

/**
* Tests that pattern blocks remain unresolved if slug is missing.
*/
public function test_resolve_content_blocks_resolves_pattern_inner_blocks_without_slug() {
$post_content = '<!-- wp:pattern {"slug":""} /-->';

wp_update_post(
[
'ID' => $this->post_id,
'post_content' => $post_content,
]
);

$post_model = new Post( get_post( $this->post_id ) );
$resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => false ] );
error_log( 'resolved_blocks | wp:pattern {"slug":""}' );

$this->assertCount( 1, $resolved_blocks, 'There should be one block.' );
$this->assertEmpty( $resolved_blocks[0]['innerBlocks'], 'innerBlocks should remain empty for missing slug.' );

error_log( 'end slug ' );
}

/**
* Tests that pattern blocks remain unresolved if the slug does not exist.
*/
public function test_resolve_content_blocks_resolves_pattern_inner_blocks_with_non_existent_slug() {
$post_content = '<!-- wp:pattern {"slug":"non-existent-pattern"} /-->';

wp_update_post(
[
'ID' => $this->post_id,
'post_content' => $post_content,
]
);

$post_model = new Post( get_post( $this->post_id ) );
$resolved_blocks = $this->instance->resolve_content_blocks( $post_model, [ 'flat' => false ] );
error_log( 'resolved_blocks | wp:pattern {"slug":"non-existent-pattern"}' );

$this->assertCount( 1, $resolved_blocks, 'There should be one block.' );
$this->assertEmpty( $resolved_blocks[0]['innerBlocks'], 'innerBlocks should remain empty for invalid slug.' );

error_log( 'end non-existent ' );
}
}

0 comments on commit da6f86f

Please sign in to comment.