Changeset 54198 for trunk/tests/phpunit/tests/block-template-utils.php
- Timestamp:
- 09/18/2022 01:08:33 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/block-template-utils.php
r54187 r54198 12 12 */ 13 13 class Tests_Block_Template_Utils extends WP_UnitTestCase { 14 private static $post; 14 15 const TEST_THEME = 'block-theme'; 16 17 private static $template_post; 15 18 private static $template_part_post; 16 private static $test_theme = 'block-theme'; 17 18 public static function wpSetUpBeforeClass() { 19 // Set up a template post corresponding to a different theme. 20 // We do this to ensure resolution and slug creation works as expected, 21 // even with another post of that same name present for another theme. 22 $args = array( 23 'post_type' => 'wp_template', 24 'post_name' => 'my_template', 25 'post_title' => 'My Template', 26 'post_content' => 'Content', 27 'post_excerpt' => 'Description of my template', 28 'tax_input' => array( 29 'wp_theme' => array( 30 'this-theme-should-not-resolve', 19 20 public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) { 21 /* 22 * Set up a template post corresponding to a different theme. 23 * We do this to ensure resolution and slug creation works as expected, 24 * even with another post of that same name present for another theme. 25 */ 26 self::$template_post = $factory->post->create_and_get( 27 array( 28 'post_type' => 'wp_template', 29 'post_name' => 'my_template', 30 'post_title' => 'My Template', 31 'post_content' => 'Content', 32 'post_excerpt' => 'Description of my template', 33 'tax_input' => array( 34 'wp_theme' => array( 35 'this-theme-should-not-resolve', 36 ), 31 37 ), 32 ) ,33 ); 34 self::$post = self::factory()->post->create_and_get( $args ); 35 wp_set_post_terms( self::$ post->ID, 'this-theme-should-not-resolve', 'wp_theme' );38 ) 39 ); 40 41 wp_set_post_terms( self::$template_post->ID, 'this-theme-should-not-resolve', 'wp_theme' ); 36 42 37 43 // Set up template post. 38 $args = array( 39 'post_type' => 'wp_template', 40 'post_name' => 'my_template', 41 'post_title' => 'My Template', 42 'post_content' => 'Content', 43 'post_excerpt' => 'Description of my template', 44 'tax_input' => array( 45 'wp_theme' => array( 46 self::$test_theme, 44 self::$template_post = $factory->post->create_and_get( 45 array( 46 'post_type' => 'wp_template', 47 'post_name' => 'my_template', 48 'post_title' => 'My Template', 49 'post_content' => 'Content', 50 'post_excerpt' => 'Description of my template', 51 'tax_input' => array( 52 'wp_theme' => array( 53 self::TEST_THEME, 54 ), 47 55 ), 48 ) ,49 ); 50 self::$post = self::factory()->post->create_and_get( $args ); 51 wp_set_post_terms( self::$ post->ID, self::$test_theme, 'wp_theme' );56 ) 57 ); 58 59 wp_set_post_terms( self::$template_post->ID, self::TEST_THEME, 'wp_theme' ); 52 60 53 61 // Set up template part post. 54 $template_part_args = array( 55 'post_type' => 'wp_template_part', 56 'post_name' => 'my_template_part', 57 'post_title' => 'My Template Part', 58 'post_content' => 'Content', 59 'post_excerpt' => 'Description of my template part', 60 'tax_input' => array( 61 'wp_theme' => array( 62 self::$test_theme, 62 self::$template_part_post = $factory->post->create_and_get( 63 array( 64 'post_type' => 'wp_template_part', 65 'post_name' => 'my_template_part', 66 'post_title' => 'My Template Part', 67 'post_content' => 'Content', 68 'post_excerpt' => 'Description of my template part', 69 'tax_input' => array( 70 'wp_theme' => array( 71 self::TEST_THEME, 72 ), 73 'wp_template_part_area' => array( 74 WP_TEMPLATE_PART_AREA_HEADER, 75 ), 63 76 ), 64 'wp_template_part_area' => array( 65 WP_TEMPLATE_PART_AREA_HEADER, 66 ), 67 ), 68 ); 69 self::$template_part_post = self::factory()->post->create_and_get( $template_part_args ); 77 ) 78 ); 79 70 80 wp_set_post_terms( self::$template_part_post->ID, WP_TEMPLATE_PART_AREA_HEADER, 'wp_template_part_area' ); 71 wp_set_post_terms( self::$template_part_post->ID, self::$test_theme, 'wp_theme' ); 81 wp_set_post_terms( self::$template_part_post->ID, self::TEST_THEME, 'wp_theme' ); 82 } 83 84 public static function wpTearDownAfterClass() { 85 wp_delete_post( self::$template_post->ID ); 72 86 } 73 87 74 88 public function set_up() { 75 89 parent::set_up(); 76 switch_theme( self::$test_theme ); 77 } 78 79 public static function wpTearDownAfterClass() { 80 wp_delete_post( self::$post->ID ); 90 switch_theme( self::TEST_THEME ); 81 91 } 82 92 83 93 public function test_build_block_template_result_from_post() { 84 94 $template = _build_block_template_result_from_post( 85 self::$ post,95 self::$template_post, 86 96 'wp_template' 87 97 ); … … 273 283 $this->assertSame( 'wp_template_part', $template->type ); 274 284 $this->assertSame( WP_TEMPLATE_PART_AREA_HEADER, $template->area ); 275 }276 277 /**278 * Should retrieve block templates (file and CPT)279 */280 public function test_get_block_templates() {281 function get_template_ids( $templates ) {282 return array_map(283 static function( $template ) {284 return $template->id;285 },286 $templates287 );288 }289 290 // All results.291 $templates = get_block_templates( array(), 'wp_template' );292 $template_ids = get_template_ids( $templates );293 294 // Avoid testing the entire array because the theme might add/remove templates.295 $this->assertContains( get_stylesheet() . '//' . 'my_template', $template_ids );296 297 // The result might change in a block theme.298 // $this->assertContains( get_stylesheet() . '//' . 'index', $template_ids );299 300 // Filter by slug.301 $templates = get_block_templates( array( 'slug__in' => array( 'my_template' ) ), 'wp_template' );302 $template_ids = get_template_ids( $templates );303 $this->assertSame( array( get_stylesheet() . '//' . 'my_template' ), $template_ids );304 305 // Filter by CPT ID.306 $templates = get_block_templates( array( 'wp_id' => self::$post->ID ), 'wp_template' );307 $template_ids = get_template_ids( $templates );308 $this->assertSame( array( get_stylesheet() . '//' . 'my_template' ), $template_ids );309 310 // Filter template part by area.311 // Requires a block theme.312 /*$templates = get_block_templates( array( 'area' => WP_TEMPLATE_PART_AREA_HEADER ), 'wp_template_part' );313 $template_ids = get_template_ids( $templates );314 $this->assertSame(315 array(316 get_stylesheet() . '//' . 'my_template_part',317 get_stylesheet() . '//' . 'header',318 ),319 $template_ids320 );321 */322 285 } 323 286
Note: See TracChangeset
for help on using the changeset viewer.