Ticket #54751: 54751.diff
File 54751.diff, 4.1 KB (added by , 3 years ago) |
---|
-
src/wp-includes/class-wp-list-util.php
diff --git a/src/wp-includes/class-wp-list-util.php b/src/wp-includes/class-wp-list-util.php index 368c46bd01..849807dc86 100644
a b class WP_List_Util { 144 144 * 145 145 * This has the same functionality and prototype of 146 146 * array_column() (PHP 5.5) but also supports objects. 147 *148 * Displays a `_doing_it_wrong()` notice when object is not an array.149 147 * 150 148 * @since 4.7.0 151 149 * 152 150 * @param int|string $field Field to fetch from the object or array. 153 151 * @param int|string $index_key Optional. Field from the element to use as keys for the new array. 154 152 * Default null. 155 * @return array|WP_Error Array of found values. If `$index_key` is set, an array of found 156 * values with keys corresponding to `$index_key`. If `$index_key` is 157 * null, array keys from the original `$list` will be preserved in the 158 * results on success, 159 * WP_Error object on failure. 153 * @return array Array of found values. If `$index_key` is set, an array of found values with keys 154 * corresponding to `$index_key`. If `$index_key` is null, array keys from the original 155 * `$list` will be preserved in the results. 160 156 */ 161 157 public function pluck( $field, $index_key = null ) { 162 163 if ( ! is_array( $this->output ) ) {164 /*165 * Check if given object is an array.166 * Return an error if target is no array.167 */168 _doing_it_wrong(169 __METHOD__,170 __( 'Input object must be an array.' ),171 '6.0.0'172 );173 return new WP_Error( 'input_object_is_no_array', __( 'List input object to pluck from must be an array.' ) );174 }175 176 158 $newlist = array(); 177 159 178 160 if ( ! $index_key ) { -
tests/phpunit/tests/functions/wpListUtil.php
diff --git a/tests/phpunit/tests/functions/wpListUtil.php b/tests/phpunit/tests/functions/wpListUtil.php index 02f4d3c25d..45cad6627a 100644
a b class Tests_Functions_wpListUtil extends WP_UnitTestCase { 52 52 $this->assertEqualSets( $expected, $actual ); 53 53 $this->assertEqualSets( $expected, $util->get_output() ); 54 54 } 55 56 /**57 * @covers WP_List_Util::pluck58 */59 public function test_wp_list_util_pluck() {60 $expected = array(61 0 => 'buz',62 1 => 'baz',63 );64 65 $util = new WP_List_Util(66 array(67 (object) array(68 'foo' => 'bar',69 'bar' => 'buz',70 ),71 (object) array( 'bar' => 'baz' ),72 )73 );74 $actual = $util->pluck( 'bar' );75 76 $this->assertEqualSets( $expected, $actual );77 $this->assertEqualSets( $expected, $util->get_output() );78 }79 80 /**81 * @covers WP_List_Util::pluck82 */83 public function test_wp_list_util_pluck_with_index_key() {84 $expected = array(85 'bar1' => 'buz',86 'bar2' => 'baz',87 );88 89 $util = new WP_List_Util(90 array(91 (object) array(92 'test_key' => 'bar1',93 'test_field' => 'buz',94 ),95 (object) array(96 'test_key' => 'bar2',97 'test_field' => 'baz',98 ),99 )100 );101 $actual = $util->pluck( 'test_field' , 'test_key' );102 103 $this->assertEqualSets( $expected, $actual );104 $this->assertEqualSets( $expected, $util->get_output() );105 }106 107 /**108 * Test for doing it wrong on invalid argument, type string.109 *110 * @covers WP_List_Util::pluck111 * @expectedIncorrectUsage WP_List_Util::pluck112 * @ticket 54751113 */114 public function test_wp_list_util_pluck_doing_it_wrong_when_string_is_given() {115 116 $this->setExpectedIncorrectUsage( 'WP_List_Util::pluck' );117 118 $util = new WP_List_Util(119 'invalid'120 );121 122 $actual = $util->pluck( 'bar' );123 124 $this->assertInstanceOf( 'WP_Error', $actual );125 }126 127 /**128 * Test for doing it wrong on invalid argument, type integer.129 *130 * @covers WP_List_Util::pluck131 * @expectedIncorrectUsage WP_List_Util::pluck132 * @ticket 54751133 */134 public function test_wp_list_util_pluck_doing_it_wrong_when_integer_is_given() {135 136 $this->setExpectedIncorrectUsage( 'WP_List_Util::pluck' );137 138 $util = new WP_List_Util(139 15101994140 );141 142 $actual = $util->pluck( 'bar' );143 144 $this->assertInstanceOf( 'WP_Error', $actual );145 }146 55 }