wordpress-develop/tests/phpunit/tests/post/getPageChildren.php
Sergey Biryukov 8be943d06e Tests: Introduce assertSameSets() and assertSameSetsWithIndex(), and use them where appropriate.
This ensures that not only the array values being compared are equal, but also that their type is the same.

These new methods replace most of the existing instances of `assertEqualSets()` and `assertEqualSetsWithIndex()`.

Going forward, stricter type checking by using `assertSameSets()` or `assertSameSetsWithIndex()` should generally be preferred, to make the tests more reliable.

Follow-up to [48937].

See #38266.

git-svn-id: https://develop.svn.wordpress.org/trunk@48939 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-04 07:01:00 +00:00

96 lines
2.3 KiB
PHP

<?php
/**
* @group post
*/
class Tests_Post_GetPageChildren extends WP_UnitTestCase {
protected $pages = array();
/*
* Here's the tree we are testing (4 is not in the tree):
*
* pages[0]
* - pages[1]
* -- pages[3]
* - pages[2]
* -- pages[6]
* --- pages[7]
* ---- pages[8]
* - pages[5]
*/
public function setUp() {
parent::setUp();
// Mock page objects.
$this->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->assertSameSets( $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->assertSame( $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->assertSame( $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->assertSame( 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->assertSame( array(), $actual );
}
}