Changeset 57147
- Timestamp:
- 11/30/2023 02:52:52 PM (14 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api/class-wp-rest-server.php
r57126 r57147 1297 1297 $this->add_site_logo_to_index( $response ); 1298 1298 $this->add_site_icon_to_index( $response ); 1299 } else { 1300 if ( rest_is_field_included( 'site_logo', $fields ) ) { 1301 $this->add_site_logo_to_index( $response ); 1302 } 1303 if ( rest_is_field_included( 'site_icon', $fields ) || rest_is_field_included( 'site_icon_url', $fields ) ) { 1304 $this->add_site_icon_to_index( $response ); 1305 } 1299 1306 } 1300 1307 -
trunk/tests/phpunit/tests/rest-api/rest-server.php
r56566 r57147 1188 1188 /** 1189 1189 * @ticket 52321 1190 */ 1191 public function test_index_includes_site_icon() { 1192 $server = new WP_REST_Server(); 1190 * @ticket 59935 1191 * 1192 * @covers WP_REST_Server::get_index 1193 */ 1194 public function test_get_index_should_include_site_icon() { 1193 1195 update_option( 'site_icon', self::$icon_id ); 1194 1196 1197 $server = new WP_REST_Server(); 1195 1198 $request = new WP_REST_Request( 'GET', '/' ); 1196 1199 $index = $server->dispatch( $request ); 1197 1200 $data = $index->get_data(); 1198 1201 1199 $this->assertArrayHasKey( 'site_icon', $data ); 1200 $this->assertSame( self::$icon_id, $data['site_icon'] ); 1202 $this->assertArrayHasKey( 'site_logo', $data, 'The "site_logo" field is missing in the response.' ); 1203 $this->assertArrayHasKey( 'site_icon', $data, 'The "site_icon" field is missing in the response.' ); 1204 $this->assertArrayHasKey( 'site_icon_url', $data, 'The "site_icon_url" field is missing in the response.' ); 1205 $this->assertSame( self::$icon_id, $data['site_icon'], 'The response "site_icon" ID does not match.' ); 1206 $this->assertStringContainsString( 'test-image-large', $data['site_icon_url'], 'The "site_icon_url" should contain the expected image.' ); 1207 } 1208 /** 1209 * @ticket 52321 1210 * @ticket 59935 1211 * 1212 * @covers WP_REST_Server::get_index 1213 */ 1214 public function test_get_index_should_not_include_site_icon() { 1215 $server = new WP_REST_Server(); 1216 $request = new WP_REST_Request( 'GET', '/' ); 1217 $index = $server->dispatch( $request ); 1218 $data = $index->get_data(); 1219 1220 $this->assertArrayHasKey( 'site_logo', $data, 'The "site_logo" field is missing in the response.' ); 1221 $this->assertArrayHasKey( 'site_icon', $data, 'The "site_icon" field is missing in the response.' ); 1222 $this->assertArrayHasKey( 'site_icon_url', $data, 'The "site_icon_url" field is missing in the response.' ); 1223 $this->assertSame( 0, $data['site_icon'], 'Response "site_icon" should be 0.' ); 1224 $this->assertSame( '', $data['site_icon_url'], 'Response "site_icon_url" should be an empty string.' ); 1225 } 1226 1227 /** 1228 * Test that the "get_index" method returns the expected site_icon* 1229 * and site_logo fields based on the specified request parameters. 1230 * 1231 * @ticket 59935 1232 * 1233 * @covers WP_REST_Server::get_index 1234 * 1235 * @dataProvider data_get_index_should_return_site_icon_and_site_logo_fields 1236 * 1237 * @param string $fields List of fields to use in the request. 1238 * @param array $expected_fields Expected fields. 1239 * @param array $unexpected_fields Optional. Fields that should not be in the results. Default array(). 1240 * @param bool $is_embed Optional. Whether to use the "_embed" request parameter. Default false. 1241 */ 1242 public function test_get_index_should_return_site_icon_and_site_logo_fields( $fields, $expected_fields, $unexpected_fields = array(), $is_embed = false ) { 1243 $server = new WP_REST_Server(); 1244 $request = new WP_REST_Request( 'GET', '/', array() ); 1245 $request->set_param( '_fields', $fields ); 1246 if ( $is_embed ) { 1247 $request->set_param( '_embed', true ); 1248 } 1249 1250 $response = $server->get_index( $request )->get_data(); 1251 1252 foreach ( $expected_fields as $expected_field ) { 1253 $this->assertArrayHasKey( $expected_field, $response, "Expected \"{$expected_field}\" field is missing in the response." ); 1254 } 1255 1256 foreach ( $unexpected_fields as $unexpected_field ) { 1257 $this->assertArrayNotHasKey( $unexpected_field, $response, "Response must not contain the \"{$unexpected_field}\" field." ); 1258 } 1259 } 1260 1261 /** 1262 * Data provider. 1263 * 1264 * @return array 1265 */ 1266 public function data_get_index_should_return_site_icon_and_site_logo_fields() { 1267 return array( 1268 'no site_logo or site_icon fields' => array( 1269 'fields' => 'name', 1270 'expected_fields' => array(), 1271 'unexpected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1272 ), 1273 '_links request parameter' => array( 1274 'fields' => '_links', 1275 'expected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1276 ), 1277 '_embed request parameter' => array( 1278 'field' => '_embed', 1279 'expected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1280 'unexpected_fields' => array(), 1281 'is_embed' => true, 1282 ), 1283 'site_logo field' => array( 1284 'fields' => 'site_logo', 1285 'expected_fields' => array( 'site_logo' ), 1286 'unexpected_fields' => array( 'site_icon', 'site_icon_url' ), 1287 ), 1288 'site_icon field' => array( 1289 'fields' => 'site_icon', 1290 'expected_fields' => array( 'site_icon', 'site_icon_url' ), 1291 'unexpected_fields' => array( 'site_logo' ), 1292 ), 1293 'site_icon_url field' => array( 1294 'fields' => 'site_icon_url', 1295 'expected_fields' => array( 'site_icon', 'site_icon_url' ), 1296 'unexpected_fields' => array( 'site_logo' ), 1297 ), 1298 'site_icon and site_icon_url field' => array( 1299 'fields' => 'site_icon_url', 1300 'expected_fields' => array( 'site_icon', 'site_icon_url' ), 1301 'unexpected_fields' => array( 'site_logo' ), 1302 ), 1303 'site_logo and site_icon fields' => array( 1304 'fields' => 'site_logo,site_icon', 1305 'expected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1306 ), 1307 'site_logo and site_icon_url fields' => array( 1308 'fields' => 'site_logo,site_icon_url', 1309 'expected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1310 ), 1311 'site_logo, site_icon, and site_icon_url fields' => array( 1312 'fields' => 'site_logo,site_icon,site_icon_url', 1313 'expected_fields' => array( 'site_logo', 'site_icon', 'site_icon_url' ), 1314 ), 1315 ); 1201 1316 } 1202 1317
Note: See TracChangeset
for help on using the changeset viewer.