@@ -1187,17 +1187,132 @@ public function test_index_includes_link_to_active_theme_if_authenticated() {
11871187
11881188 /**
11891189 * @ticket 52321
1190+ * @ticket 59935
1191+ *
1192+ * @covers WP_REST_Server::get_index
11901193 */
1191- public function test_index_includes_site_icon () {
1192- $ server = new WP_REST_Server ();
1194+ public function test_get_index_should_include_site_icon () {
11931195 update_option ( 'site_icon ' , self ::$ icon_id );
11941196
1197+ $ server = new WP_REST_Server ();
11951198 $ request = new WP_REST_Request ( 'GET ' , '/ ' );
11961199 $ index = $ server ->dispatch ( $ request );
11971200 $ data = $ index ->get_data ();
11981201
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+ );
12011316 }
12021317
12031318 public function test_get_namespace_index () {
0 commit comments