Changeset 55318 for trunk/tests/phpunit/tests/media.php
- Timestamp:
- 02/13/2023 06:32:40 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/media.php
r55278 r55318 3548 3548 3549 3549 /** 3550 * Tests that wp_get_loading_attr_default() returns the expected loading attribute value. 3551 * 3550 3552 * @ticket 53675 3553 * @ticket 56930 3554 * 3555 * @covers ::wp_get_loading_attr_default 3556 * 3551 3557 * @dataProvider data_wp_get_loading_attr_default 3552 3558 * … … 3589 3595 $this->assertSame( 'lazy', wp_get_loading_attr_default( $context ) ); 3590 3596 } 3597 3598 // Exceptions: In the following contexts, images shouldn't be lazy-loaded by default. 3599 $this->assertFalse( wp_get_loading_attr_default( 'template' ), 'Images run through the overall block template filter should not be lazy-loaded.' ); 3600 $this->assertFalse( wp_get_loading_attr_default( 'template_part_' . WP_TEMPLATE_PART_AREA_HEADER ), 'Images in the footer block template part should not be lazy-loaded.' ); 3591 3601 } 3592 3602 … … 3701 3711 } 3702 3712 3713 /** 3714 * Tests that wp_filter_content_tags() does not add loading="lazy" to the first 3715 * image in the loop when using a block theme. 3716 * 3717 * @ticket 56930 3718 * 3719 * @covers ::wp_filter_content_tags 3720 * @covers ::wp_get_loading_attr_default 3721 */ 3722 public function test_wp_filter_content_tags_does_not_lazy_load_first_image_in_block_theme() { 3723 global $_wp_current_template_content, $wp_query, $wp_the_query, $post; 3724 3725 // Do not add srcset, sizes, or decoding attributes as they are irrelevant for this test. 3726 add_filter( 'wp_img_tag_add_srcset_and_sizes_attr', '__return_false' ); 3727 add_filter( 'wp_img_tag_add_decoding_attr', '__return_false' ); 3728 3729 $img1 = get_image_tag( self::$large_id, '', '', '', 'large' ); 3730 $img2 = get_image_tag( self::$large_id, '', '', '', 'medium' ); 3731 $lazy_img2 = wp_img_tag_add_loading_attr( $img2, 'the_content' ); 3732 3733 // Only the second image should be lazy-loaded. 3734 $post_content = $img1 . $img2; 3735 $expected_content = wpautop( $img1 . $lazy_img2 ); 3736 3737 // Update the post to test with so that it has the above post content. 3738 wp_update_post( 3739 array( 3740 'ID' => self::$post_ids['publish'], 3741 'post_content' => $post_content, 3742 'post_content_filtered' => $post_content, 3743 ) 3744 ); 3745 3746 $wp_query = new WP_Query( array( 'p' => self::$post_ids['publish'] ) ); 3747 $wp_the_query = $wp_query; 3748 $post = get_post( self::$post_ids['publish'] ); 3749 $this->reset_content_media_count(); 3750 $this->reset_omit_loading_attr_filter(); 3751 3752 $_wp_current_template_content = '<!-- wp:post-content /-->'; 3753 3754 $html = get_the_block_template_html(); 3755 $this->assertSame( '<div class="wp-site-blocks"><div class="entry-content wp-block-post-content is-layout-flow">' . $expected_content . '</div></div>', $html ); 3756 } 3757 3758 /** 3759 * Tests that wp_filter_content_tags() does not add loading="lazy" 3760 * to the featured image when using a block theme. 3761 * 3762 * @ticket 56930 3763 * 3764 * @covers ::wp_filter_content_tags 3765 * @covers ::wp_get_loading_attr_default 3766 */ 3767 public function test_wp_filter_content_tags_does_not_lazy_load_first_featured_image_in_block_theme() { 3768 global $_wp_current_template_content, $wp_query, $wp_the_query, $post; 3769 3770 // Do not add srcset, sizes, or decoding attributes as they are irrelevant for this test. 3771 add_filter( 'wp_img_tag_add_srcset_and_sizes_attr', '__return_false' ); 3772 add_filter( 'wp_img_tag_add_decoding_attr', '__return_false' ); 3773 add_filter( 3774 'wp_get_attachment_image_attributes', 3775 function( $attr ) { 3776 unset( $attr['srcset'], $attr['sizes'], $attr['decoding'] ); 3777 return $attr; 3778 } 3779 ); 3780 3781 $content_img = get_image_tag( self::$large_id, '', '', '', 'large' ); 3782 $lazy_content_img = wp_img_tag_add_loading_attr( $content_img, 'the_content' ); 3783 3784 // The featured image should not be lazy-loaded as it is the first image. 3785 $featured_image_id = self::$large_id; 3786 update_post_meta( self::$post_ids['publish'], '_thumbnail_id', $featured_image_id ); 3787 $expected_featured_image = '<figure class="wp-block-post-featured-image">' . get_the_post_thumbnail( self::$post_ids['publish'], 'post-thumbnail', array( 'loading' => false ) ) . '</figure>'; 3788 3789 // The post content image should be lazy-loaded since the featured image appears above. 3790 $post_content = $content_img; 3791 $expected_content = wpautop( $lazy_content_img ); 3792 3793 // Update the post to test with so that it has the above post content. 3794 wp_update_post( 3795 array( 3796 'ID' => self::$post_ids['publish'], 3797 'post_content' => $post_content, 3798 'post_content_filtered' => $post_content, 3799 ) 3800 ); 3801 3802 $wp_query = new WP_Query( array( 'p' => self::$post_ids['publish'] ) ); 3803 $wp_the_query = $wp_query; 3804 $post = get_post( self::$post_ids['publish'] ); 3805 $this->reset_content_media_count(); 3806 $this->reset_omit_loading_attr_filter(); 3807 3808 $_wp_current_template_content = '<!-- wp:post-featured-image /--> <!-- wp:post-content /-->'; 3809 3810 $html = get_the_block_template_html(); 3811 $this->assertSame( '<div class="wp-site-blocks">' . $expected_featured_image . ' <div class="entry-content wp-block-post-content is-layout-flow">' . $expected_content . '</div></div>', $html ); 3812 } 3813 3814 /** 3815 * Tests that wp_filter_content_tags() does not add loading="lazy" to images 3816 * in a "Header" template part. 3817 * 3818 * @ticket 56930 3819 * 3820 * @covers ::wp_filter_content_tags 3821 * @covers ::wp_get_loading_attr_default 3822 */ 3823 public function test_wp_filter_content_tags_does_not_lazy_load_images_in_header() { 3824 global $_wp_current_template_content; 3825 3826 // Do not add srcset, sizes, or decoding attributes as they are irrelevant for this test. 3827 add_filter( 'wp_img_tag_add_srcset_and_sizes_attr', '__return_false' ); 3828 add_filter( 'wp_img_tag_add_decoding_attr', '__return_false' ); 3829 3830 // Use a single image for each header and footer template parts. 3831 $header_img = get_image_tag( self::$large_id, '', '', '', 'large' ); 3832 $footer_img = get_image_tag( self::$large_id, '', '', '', 'medium' ); 3833 3834 // Create header and footer template parts. 3835 $header_post_id = self::factory()->post->create( 3836 array( 3837 'post_type' => 'wp_template_part', 3838 'post_status' => 'publish', 3839 'post_name' => 'header', 3840 'post_content' => $header_img, 3841 ) 3842 ); 3843 wp_set_post_terms( $header_post_id, WP_TEMPLATE_PART_AREA_HEADER, 'wp_template_part_area' ); 3844 wp_set_post_terms( $header_post_id, get_stylesheet(), 'wp_theme' ); 3845 $footer_post_id = self::factory()->post->create( 3846 array( 3847 'post_type' => 'wp_template_part', 3848 'post_status' => 'publish', 3849 'post_name' => 'footer', 3850 'post_content' => $footer_img, 3851 ) 3852 ); 3853 wp_set_post_terms( $footer_post_id, WP_TEMPLATE_PART_AREA_FOOTER, 'wp_template_part_area' ); 3854 wp_set_post_terms( $footer_post_id, get_stylesheet(), 'wp_theme' ); 3855 3856 $_wp_current_template_content = '<!-- wp:template-part {"slug":"header","theme":"' . get_stylesheet() . '","tagName":"header"} /--><!-- wp:template-part {"slug":"footer","theme":"' . get_stylesheet() . '","tagName":"footer"} /-->'; 3857 3858 // Header image should not be lazy-loaded, footer image should be lazy-loaded. 3859 $expected_template_content = '<header class="wp-block-template-part">' . $header_img . '</header>'; 3860 $expected_template_content .= '<footer class="wp-block-template-part">' . wp_img_tag_add_loading_attr( $footer_img, 'force-lazy' ) . '</footer>'; 3861 3862 $html = get_the_block_template_html(); 3863 $this->assertSame( '<div class="wp-site-blocks">' . $expected_template_content . '</div>', $html ); 3864 } 3865 3703 3866 private function reset_content_media_count() { 3704 3867 // Get current value without increasing.
Note: See TracChangeset
for help on using the changeset viewer.