mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 20:30:23 +00:00
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
This commit is contained in:
@@ -86,139 +86,6 @@ class Tests_Block_Template_Utils extends WP_UnitTestCase {
|
||||
switch_theme( self::TEST_THEME );
|
||||
}
|
||||
|
||||
public function test_build_block_template_result_from_post() {
|
||||
$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' );
|
||||
|
||||
// Test template parts.
|
||||
$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' );
|
||||
}
|
||||
|
||||
public function test_build_block_template_result_from_file() {
|
||||
$template = _build_block_template_result_from_file(
|
||||
array(
|
||||
'slug' => 'single',
|
||||
'path' => __DIR__ . '/../data/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 );
|
||||
|
||||
// Test template parts.
|
||||
$template_part = _build_block_template_result_from_file(
|
||||
array(
|
||||
'slug' => 'header',
|
||||
'path' => __DIR__ . '/../data/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
|
||||
*
|
||||
* @covers ::_build_block_template_result_from_file
|
||||
*
|
||||
* @dataProvider data_build_block_template_result_from_file_injects_theme_attribute
|
||||
*
|
||||
* @param string $filename The template's filename.
|
||||
* @param string $expected The expected block markup.
|
||||
*/
|
||||
public function test_build_block_template_result_from_file_injects_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_block_template_result_from_file_injects_theme_attribute() {
|
||||
$theme = 'block-theme';
|
||||
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"} /-->',
|
||||
$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 -->',
|
||||
$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 59338
|
||||
*
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
@@ -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' );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user