forked from WordPress/wordpress-develop
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Tests: Improve code coverage for _build_block_template_result_from_file
Props costdev, bernhard-reiter. See #54335, #59325. Follow-up for [56562]. git-svn-id: https://develop.svn.wordpress.org/trunk@56983 602fd350-edb4-49c9-b593-d223f7449a82
- Loading branch information
Showing
3 changed files
with
233 additions
and
133 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
181 changes: 181 additions & 0 deletions
181
tests/phpunit/tests/block-templates/buildBlockTemplateResultFromFile.php
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,181 @@ | ||
<?php | ||
|
||
require_once __DIR__ . '/base.php'; | ||
|
||
/** | ||
* @group block-templates | ||
* @covers ::_build_block_template_result_from_file | ||
*/ | ||
class Tests_Block_Templates_BuildBlockTemplateResultFromFile extends WP_Block_Templates_UnitTestCase { | ||
|
||
/** | ||
* @ticket 54335 | ||
*/ | ||
public function test_should_build_template() { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'single', | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
), | ||
'wp_template' | ||
); | ||
|
||
$this->assertSame( get_stylesheet() . '//single', $template->id ); | ||
$this->assertSame( get_stylesheet(), $template->theme ); | ||
$this->assertSame( 'single', $template->slug ); | ||
$this->assertSame( 'publish', $template->status ); | ||
$this->assertSame( 'theme', $template->source ); | ||
$this->assertSame( 'Single Posts', $template->title ); | ||
$this->assertSame( 'Displays single posts on your website unless a custom template has been applied to that post or a dedicated template exists.', $template->description ); | ||
$this->assertSame( 'wp_template', $template->type ); | ||
$this->assertEmpty( $template->modified ); | ||
} | ||
|
||
/** | ||
* @ticket 59325 | ||
*/ | ||
public function test_should_build_template_using_custom_properties() { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'custom', | ||
'title' => 'Custom Title', | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
), | ||
'wp_template' | ||
); | ||
|
||
$this->assertSame( 'custom', $template->slug ); | ||
$this->assertSame( 'Custom Title', $template->title ); | ||
$this->assertTrue( $template->is_custom ); | ||
} | ||
|
||
/** | ||
* @ticket 59325 | ||
*/ | ||
public function test_should_enforce_default_properties_when_building_template() { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'single', | ||
'title' => 'Custom title', | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
), | ||
'wp_template' | ||
); | ||
|
||
$this->assertSame( 'single', $template->slug ); | ||
$this->assertSame( 'Single Posts', $template->title ); | ||
$this->assertSame( 'Displays single posts on your website unless a custom template has been applied to that post or a dedicated template exists.', $template->description ); | ||
$this->assertFalse( $template->is_custom ); | ||
} | ||
|
||
/** | ||
* @ticket 59325 | ||
*/ | ||
public function test_should_respect_post_types_property_when_building_template() { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'single', | ||
'postTypes' => array( 'post' ), | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
), | ||
'wp_template' | ||
); | ||
|
||
$this->assertSameSets( array( 'post' ), $template->post_types ); | ||
} | ||
|
||
/** | ||
* @ticket 59325 | ||
* | ||
* @dataProvider data_build_template_injects_theme_attribute | ||
* | ||
* @param string $filename The template's filename. | ||
* @param string $expected The expected block markup. | ||
*/ | ||
public function test_should_build_template_and_inject_theme_attribute( $filename, $expected ) { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'single', | ||
'path' => DIR_TESTDATA . "/templates/$filename", | ||
), | ||
'wp_template' | ||
); | ||
$this->assertSame( $expected, $template->content ); | ||
} | ||
|
||
/** | ||
* Data provider. | ||
* | ||
* @return array[] | ||
*/ | ||
public function data_build_template_injects_theme_attribute() { | ||
return array( | ||
'a template with a template part block' => array( | ||
'filename' => 'template-with-template-part.html', | ||
'expected' => sprintf( | ||
'<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header","theme":"%s"} /-->', | ||
self::TEST_THEME | ||
), | ||
), | ||
'a template with a template part block nested inside another block' => array( | ||
'filename' => 'template-with-nested-template-part.html', | ||
'expected' => sprintf( | ||
'<!-- wp:group --> | ||
<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header","theme":"%s"} /--> | ||
<!-- /wp:group -->', | ||
self::TEST_THEME | ||
), | ||
), | ||
'a template with a template part block with an existing theme attribute' => array( | ||
'filename' => 'template-with-template-part-with-existing-theme-attribute.html', | ||
'expected' => '<!-- wp:template-part {"slug":"header","theme":"fake-theme","align":"full","tagName":"header","className":"site-header"} /-->', | ||
), | ||
'a template with no template part block' => array( | ||
'filename' => 'template.html', | ||
'expected' => '<!-- wp:paragraph --> | ||
<p>Just a paragraph</p> | ||
<!-- /wp:paragraph -->', | ||
), | ||
); | ||
} | ||
|
||
/** | ||
* @ticket 54335 | ||
*/ | ||
public function test_should_build_template_part() { | ||
$template_part = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'header', | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
'area' => WP_TEMPLATE_PART_AREA_HEADER, | ||
), | ||
'wp_template_part' | ||
); | ||
$this->assertSame( get_stylesheet() . '//header', $template_part->id ); | ||
$this->assertSame( get_stylesheet(), $template_part->theme ); | ||
$this->assertSame( 'header', $template_part->slug ); | ||
$this->assertSame( 'publish', $template_part->status ); | ||
$this->assertSame( 'theme', $template_part->source ); | ||
$this->assertSame( 'header', $template_part->title ); | ||
$this->assertSame( '', $template_part->description ); | ||
$this->assertSame( 'wp_template_part', $template_part->type ); | ||
$this->assertSame( WP_TEMPLATE_PART_AREA_HEADER, $template_part->area ); | ||
$this->assertEmpty( $template_part->modified ); | ||
} | ||
|
||
/** | ||
* @ticket 59325 | ||
*/ | ||
public function test_should_ignore_post_types_property_when_building_template_part() { | ||
$template = _build_block_template_result_from_file( | ||
array( | ||
'slug' => 'header', | ||
'postTypes' => array( 'post' ), | ||
'path' => DIR_TESTDATA . '/templates/template.html', | ||
), | ||
'wp_template_part' | ||
); | ||
|
||
$this->assertEmpty( $template->post_types ); | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
tests/phpunit/tests/block-templates/buildBlockTemplateResultFromPost.php
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,52 @@ | ||
<?php | ||
|
||
require_once __DIR__ . '/base.php'; | ||
|
||
/** | ||
* @group block-templates | ||
* @covers ::_build_block_template_result_from_post | ||
*/ | ||
class Tests_Block_Templates_BuildBlockTemplateResultFromPost extends WP_Block_Templates_UnitTestCase { | ||
|
||
/** | ||
* @ticket 54335 | ||
*/ | ||
public function test_should_build_template() { | ||
$template = _build_block_template_result_from_post( | ||
self::$template_post, | ||
'wp_template' | ||
); | ||
|
||
$this->assertNotWPError( $template ); | ||
$this->assertSame( get_stylesheet() . '//my_template', $template->id ); | ||
$this->assertSame( get_stylesheet(), $template->theme ); | ||
$this->assertSame( 'my_template', $template->slug ); | ||
$this->assertSame( 'publish', $template->status ); | ||
$this->assertSame( 'custom', $template->source ); | ||
$this->assertSame( 'My Template', $template->title ); | ||
$this->assertSame( 'Description of my template', $template->description ); | ||
$this->assertSame( 'wp_template', $template->type ); | ||
$this->assertSame( self::$template_post->post_modified, $template->modified, 'Template result properties match' ); | ||
} | ||
|
||
/** | ||
* @ticket 54335 | ||
*/ | ||
public function test_should_build_template_part() { | ||
$template_part = _build_block_template_result_from_post( | ||
self::$template_part_post, | ||
'wp_template_part' | ||
); | ||
$this->assertNotWPError( $template_part ); | ||
$this->assertSame( get_stylesheet() . '//my_template_part', $template_part->id ); | ||
$this->assertSame( get_stylesheet(), $template_part->theme ); | ||
$this->assertSame( 'my_template_part', $template_part->slug ); | ||
$this->assertSame( 'publish', $template_part->status ); | ||
$this->assertSame( 'custom', $template_part->source ); | ||
$this->assertSame( 'My Template Part', $template_part->title ); | ||
$this->assertSame( 'Description of my template part', $template_part->description ); | ||
$this->assertSame( 'wp_template_part', $template_part->type ); | ||
$this->assertSame( WP_TEMPLATE_PART_AREA_HEADER, $template_part->area ); | ||
$this->assertSame( self::$template_part_post->post_modified, $template_part->modified, 'Template part result properties match' ); | ||
} | ||
} |