WordPress.org

Make WordPress Core

Changeset 1138 in tests


Ignore:
Timestamp:
11/16/12 17:27:02 (17 months ago)
Author:
scribu
Message:

add 'the_post' filter tests. props kovshenin. see #WP22448

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/post/query.php

    r1132 r1138  
    497497        $this->assertEquals( 1 , count( $posts ) ); 
    498498    } 
     499 
     500    /** 
     501     * @ticket 22448 
     502     */ 
     503    function test_the_posts_filter() { 
     504        // Create posts and clear their caches. 
     505        $post_ids = $this->factory->post->create_many( 10 ); 
     506        foreach ( $post_ids as $post_id ) 
     507            clean_post_cache( $post_id ); 
     508 
     509        add_filter( 'the_posts', array( $this, 'the_posts_filter' ) ); 
     510 
     511        $query = new WP_Query( array( 
     512            'post_type' => 'post', 
     513            'posts_per_page' => 5, 
     514        ) ); 
     515 
     516        // Sixth post added in filter 
     517        $this->assertEquals( 6, count( $query->posts ) ); 
     518        $this->assertEquals( 6, $query->post_count ); 
     519 
     520        foreach ( $query->posts as $post ) { 
     521 
     522            // posts are WP_Post objects 
     523            $this->assertTrue( is_a( $post, 'WP_Post' ) ); 
     524 
     525            // filters are raw 
     526            $this->assertEquals( 'raw', $post->filter ); 
     527 
     528            // custom data added in the_posts filter is preserved 
     529            $this->assertEquals( array( $post->ID, 'custom data' ), $post->custom_data ); 
     530        } 
     531 
     532        remove_filter( 'the_posts', array( $this, 'the_posts_filter' ) ); 
     533    } 
     534 
     535    /** 
     536     * Use with the_posts filter, appends a post and adds some custom data. 
     537     */ 
     538    function the_posts_filter( $posts ) { 
     539        $posts[] = clone $posts[0]; 
     540 
     541        // Add some custom data to each post. 
     542        foreach ( $posts as $key => $post ) 
     543            $posts[ $key ]->custom_data = array( $post->ID, 'custom data' ); 
     544 
     545        return $posts; 
     546    } 
    499547} 
Note: See TracChangeset for help on using the changeset viewer.