From ba712c67896f9faef81901922a425adb5cc8caa3 Mon Sep 17 00:00:00 2001 From: Boone Gorges Date: Tue, 5 May 2015 19:36:46 +0000 Subject: [PATCH] Unit tests for `get_page_children()`. Props santagada, boonebgorges. See #10852. git-svn-id: https://develop.svn.wordpress.org/trunk@32354 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/post/getPageChildren.php | 95 ++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 tests/phpunit/tests/post/getPageChildren.php diff --git a/tests/phpunit/tests/post/getPageChildren.php b/tests/phpunit/tests/post/getPageChildren.php new file mode 100644 index 0000000000..356fa271b4 --- /dev/null +++ b/tests/phpunit/tests/post/getPageChildren.php @@ -0,0 +1,95 @@ +pages = array( + 0 => (object) array( + 'ID' => 100, + 'post_parent' => 0, + ), + 1 => (object) array( + 'ID' => 101, + 'post_parent' => 100, + ), + 2 => (object) array( + 'ID' => 102, + 'post_parent' => 100, + ), + 3 => (object) array( + 'ID' => 103, + 'post_parent' => 101, + ), + + // Not in the tree. + 4 => (object) array( + 'ID' => 104, + 'post_parent' => 9898989898, + ), + + 5 => (object) array( + 'ID' => 105, + 'post_parent' => 100, + ), + 6 => (object) array( + 'ID' => 106, + 'post_parent' => 102, + ), + 7 => (object) array( + 'ID' => 107, + 'post_parent' => 106, + ), + 8 => (object) array( + 'ID' => 108, + 'post_parent' => 107, + ), + ); + } + + public function test_page_id_0_should_return_all_pages_in_tree_and_exclude_pages_not_in_tree() { + $expected = array( 100, 101, 102, 103, 105, 106, 107, 108 ); + $actual = get_page_children( 0, $this->pages ); + $this->assertEqualSets( $expected, wp_list_pluck( $actual, 'ID' ) ); + } + + public function test_hierarchical_order_should_be_respected_in_results() { + $expected = array( 100, 101, 103, 102, 106, 107, 108, 105 ); + $actual = get_page_children( 0, $this->pages ); + $this->assertEquals( $expected, wp_list_pluck( $actual, 'ID' ) ); + } + + public function test_not_all_pages_should_be_returned_when_page_id_is_in_the_middle_of_the_tree() { + $expected = array( 106, 107, 108 ); + $actual = get_page_children( 102, $this->pages ); + $this->assertEquals( $expected, wp_list_pluck( $actual, 'ID' ) ); + } + + public function test_page_id_that_is_a_leaf_should_return_empty_array() { + $actual = get_page_children( 103, $this->pages ); + $this->assertEquals( array(), $actual ); + } + + public function test_nonzero_page_id_not_matching_any_actual_post_id_should_return_empty_array() { + $actual = get_page_children( 200, $this->pages ); + $this->assertEquals( array(), $actual ); + } +}