WordPress.org

Make WordPress Core

Ticket #15667: 15667.get_pages-unit-tests.diff

File 15667.get_pages-unit-tests.diff, 2.4 KB (added by willmot, 8 years ago)

Unit tests for get_pages() exclude and exclude_tree args

  • tests/phpunit/tests/post/getPages.php

    diff --git tests/phpunit/tests/post/getPages.php tests/phpunit/tests/post/getPages.php
    index 707c6ad..f4e7989 100644
    class Tests_Post_getPages extends WP_UnitTestCase { 
    132132                $this->assertEquals( $inc, $exc_result );
    133133        }
    134134
     135        /*
     136         * @ticket 15667
     137         */
     138        function test_get_pages_exclude_with_children() {
     139
     140                $page_1       = $this->factory->post->create( array( 'post_type' => 'page' ) );
     141                $page_1_child = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_1 ) );
     142                $page_2       = $this->factory->post->create( array( 'post_type' => 'page' ) );
     143                $page_2_child = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_2 ) );
     144
     145                // If hierarchical is false get_pages returns the children even though the parents are excluded
     146                $pages = get_pages( 'hierarchical=0&exclude=' . implode( ',', array( $page_1, $page_2 ) ) );
     147                $this->assertEqualSets( array( $page_1_child, $page_2_child ), wp_list_pluck( $pages, 'ID' ) );
     148
     149                // If hierarchical is true get_pages doesn't return the children if the parents are excluded
     150                $pages = get_pages( 'hierarchical=1&exclude=' . implode( ',', array( $page_1, $page_2 ) ) );
     151                $this->assertEmpty( $pages );
     152
     153        }
     154
     155        /*
     156         * @ticket 15667
     157         */
     158        function test_get_pages_exclude_tree() {
     159
     160                $page_1       = $this->factory->post->create( array( 'post_type' => 'page' ) );
     161                $page_1_child = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_1 ) );
     162                $page_2       = $this->factory->post->create( array( 'post_type' => 'page' ) );
     163                $page_2_child = $this->factory->post->create( array( 'post_type' => 'page', 'post_parent' => $page_2 ) );
     164
     165                // exclude_tree always excludes the children regardless of what hierarchical is set to
     166                $pages = get_pages( 'hierarchical=0&exclude_tree=' . $page_1 );
     167                $this->assertEqualSets( array( $page_2, $page_2_child ), wp_list_pluck( $pages, 'ID' ) );
     168                $pages = get_pages( 'hierarchical=1&exclude_tree=' . $page_1 );
     169                $this->assertEqualSets( array( $page_2, $page_2_child ), wp_list_pluck( $pages, 'ID' ) );
     170
     171                // You can only pass a single ID to exclude_tree
     172                $pages = get_pages( 'exclude_tree=' . implode( ',', array( $page_1, $page_2 ) ) );
     173                $this->assertEqualSets( array( $page_2, $page_2_child ), wp_list_pluck( $pages, 'ID' ) );
     174
     175        }
     176
    135177        /**
    136178         * @ticket 9470
    137179         */