Changeset 57703
- Timestamp:
- 02/23/2024 04:53:39 PM (15 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/blocks/wpBlockPatternsRegistry.php
r57627 r57703 22 22 23 23 /** 24 * Original registered patterns. 25 * This is the value from the internal private property. 26 * 27 * @since 6.5.0 28 * @var array 29 */ 30 private $original_registered_patterns = null; 31 32 /** 24 33 * Set up each test method. 25 34 * … … 29 38 parent::set_up(); 30 39 31 $this->registry = new WP_Block_Patterns_Registry(); 40 $this->registry = new WP_Block_Patterns_Registry(); 41 $this->original_registered_patterns = $this->get_registered_patterns_variable_value(); 32 42 } 33 43 … … 46 56 } 47 57 58 $this->set_registered_patterns_variable_value( $this->original_registered_patterns ); 48 59 parent::tear_down(); 49 60 } … … 544 555 $this->assertEmpty( array_intersect( $theme_patterns, $registered ), 'Theme patterns were were incorrectly registered.' ); 545 556 } 557 558 /** 559 * Ensures theme patterns are lazy loaded. 560 * 561 * @ticket 59532 562 * 563 * @covers WP_Block_Patterns_Registry::get_all_registered 564 */ 565 public function test_lazy_loading_block_patterns_get_all_registered() { 566 // This test needs to use access static class properties. 567 $registry = WP_Block_Patterns_Registry::get_instance(); 568 569 // Testing only the first pattern loaded from the theme. 570 $pattern_name = 'twentytwentythree/footer-default'; 571 572 // Ensure we're using a theme with patterns. 573 switch_theme( 'twentytwentythree' ); 574 575 // This helper is fired on the init hook. 576 _register_theme_block_patterns(); 577 578 // Get the value of the private property. 579 $registered_patterns = $this->get_registered_patterns_variable_value(); 580 581 $this->assertTrue( 582 isset( $registered_patterns[ $pattern_name ]['file_path'] ) && 583 ! isset( $registered_patterns[ $pattern_name ]['content'] ), 584 'Pattern was not lazy loaded.' 585 ); 586 587 $all_patterns = $registry->get_all_registered(); 588 589 $loaded_pattern = array_values( 590 array_filter( 591 $all_patterns, 592 function ( $pattern ) use ( $pattern_name ) { 593 return $pattern['name'] === $pattern_name; 594 } 595 ) 596 ); 597 598 $this->assertTrue( 599 ! empty( $loaded_pattern[0]['content'] ), 600 'Content not loaded.' 601 ); 602 603 // Check if the original property was updated. 604 $registered_patterns = $this->get_registered_patterns_variable_value(); 605 606 $this->assertTrue( 607 ! empty( $registered_patterns[ $pattern_name ]['content'] ), 608 'Content not updated.' 609 ); 610 } 611 612 /** 613 * Ensures theme patterns are lazy loaded. 614 * 615 * @ticket 59532 616 * 617 * @covers WP_Block_Patterns_Registry::get_registered 618 */ 619 public function test_lazy_loading_block_patterns_get_registered() { 620 // This test needs to use access static class properties. 621 $registry = WP_Block_Patterns_Registry::get_instance(); 622 623 // Testing only the first pattern loaded from the theme. 624 $pattern_name = 'twentytwentythree/footer-default'; 625 626 // Ensure we're using a theme with patterns. 627 switch_theme( 'twentytwentythree' ); 628 629 // This helper is fired on the init hook. 630 _register_theme_block_patterns(); 631 632 // Get the value of the private property. 633 $registered_patterns = $this->get_registered_patterns_variable_value(); 634 635 $this->assertTrue( 636 isset( $registered_patterns[ $pattern_name ]['file_path'] ) && 637 ! isset( $registered_patterns[ $pattern_name ]['content'] ), 638 'Pattern was not lazy loaded.' 639 ); 640 641 $loaded_pattern = $registry->get_registered( $pattern_name ); 642 643 $this->assertTrue( 644 ! empty( $loaded_pattern['content'] ), 645 'Content not loaded.' 646 ); 647 648 // Check if the original property was updated. 649 $registered_patterns = $this->get_registered_patterns_variable_value(); 650 651 $this->assertTrue( 652 ! empty( $registered_patterns[ $pattern_name ]['content'] ), 653 'Content not updated.' 654 ); 655 } 656 657 /** 658 * Get the value of the `$registered_patterns` private property. 659 * 660 * @return array 661 */ 662 private function get_registered_patterns_variable_value() { 663 $registry = WP_Block_Patterns_Registry::get_instance(); 664 // Use Reflection to access private property. 665 $reflection = new ReflectionClass( $registry ); 666 $property = $reflection->getProperty( 'registered_patterns' ); 667 $property->setAccessible( true ); 668 669 // Get the value of the private property. 670 $registered_patterns = $property->getValue( $registry ); 671 $property->setAccessible( false ); 672 673 return $registered_patterns; 674 } 675 676 /** 677 * Set the value of the `$registered_patterns` private property. 678 * 679 * @param array $value The value to set. 680 */ 681 private function set_registered_patterns_variable_value( $value ) { 682 $registry = WP_Block_Patterns_Registry::get_instance(); 683 // Use Reflection to access private property. 684 $reflection = new ReflectionClass( $registry ); 685 $property = $reflection->getProperty( 'registered_patterns' ); 686 $property->setAccessible( true ); 687 688 // Set the value of the private property. 689 $property->setValue( $registry, $value ); 690 $property->setAccessible( false ); 691 } 546 692 }
Note: See TracChangeset
for help on using the changeset viewer.