Changeset 47258
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php
r47122 r47258 111 111 112 112 if ( in_array( 'theme_supports', $fields, true ) ) { 113 $formats = get_theme_support( 'post-formats' ); 114 $formats = is_array( $formats ) ? array_values( $formats[0] ) : array(); 115 $formats = array_merge( array( 'standard' ), $formats ); 113 $item_schemas = $this->get_item_schema(); 114 $theme_supports = $item_schemas['properties']['theme_supports']['properties']; 115 foreach ( $theme_supports as $name => $schema ) { 116 if ( 'formats' === $name ) { 117 continue; 118 } 119 120 if ( ! current_theme_supports( $name ) ) { 121 $data['theme_supports'][ $name ] = false; 122 continue; 123 } 124 125 if ( 'boolean' === $schema['type'] ) { 126 $data['theme_supports'][ $name ] = true; 127 continue; 128 } 129 130 $support = get_theme_support( $name ); 131 132 if ( is_array( $support ) ) { 133 // None of the Core theme supports have variadic args. 134 $support = $support[0]; 135 136 // Core multi-type theme-support schema definitions always list boolean first. 137 if ( is_array( $schema['type'] ) && 'boolean' === $schema['type'][0] ) { 138 // Pass the non-boolean type through to the sanitizer, which cannot itself 139 // determine the intended type if the value is invalid (for example if an 140 // object includes non-safelisted properties). 141 $schema['type'] = $schema['type'][1]; 142 } 143 } 144 145 $data['theme_supports'][ $name ] = rest_sanitize_value_from_schema( $support, $schema ); 146 } 147 148 $formats = get_theme_support( 'post-formats' ); 149 $formats = is_array( $formats ) ? array_values( $formats[0] ) : array(); 150 $formats = array_merge( array( 'standard' ), $formats ); 151 116 152 $data['theme_supports']['formats'] = $formats; 117 118 $data['theme_supports']['post-thumbnails'] = false;119 $data['theme_supports']['responsive-embeds'] = (bool) get_theme_support( 'responsive-embeds' );120 $post_thumbnails = get_theme_support( 'post-thumbnails' );121 122 if ( $post_thumbnails ) {123 // $post_thumbnails can contain a nested array of post types.124 // e.g. array( array( 'post', 'page' ) ).125 $data['theme_supports']['post-thumbnails'] = is_array( $post_thumbnails ) ? $post_thumbnails[0] : true;126 }127 153 } 128 154 … … 163 189 'theme_supports' => array( 164 190 'description' => __( 'Features supported by this theme.' ), 165 'type' => ' array',191 'type' => 'object', 166 192 'readonly' => true, 167 193 'properties' => array( 168 'formats' => array( 194 'align-wide' => array( 195 'description' => __( 'Whether theme opts in to wide alignment CSS class.' ), 196 'type' => 'boolean', 197 ), 198 'automatic-feed-links' => array( 199 'description' => __( 'Whether posts and comments RSS feed links are added to head.' ), 200 'type' => 'boolean', 201 ), 202 'custom-header' => array( 203 'description' => __( 'Custom header if defined by the theme.' ), 204 'type' => array( 'boolean', 'object' ), 205 'properties' => array( 206 'default-image' => array( 207 'type' => 'string', 208 'format' => 'uri', 209 ), 210 'random-default' => array( 211 'type' => 'boolean', 212 ), 213 'width' => array( 214 'type' => 'integer', 215 ), 216 'height' => array( 217 'type' => 'integer', 218 ), 219 'flex-height' => array( 220 'type' => 'boolean', 221 ), 222 'flex-width' => array( 223 'type' => 'boolean', 224 ), 225 'default-text-color' => array( 226 'type' => 'string', 227 ), 228 'header-text' => array( 229 'type' => 'boolean', 230 ), 231 'uploads' => array( 232 'type' => 'boolean', 233 ), 234 'video' => array( 235 'type' => 'boolean', 236 ), 237 ), 238 'additionalProperties' => false, 239 ), 240 'custom-background' => array( 241 'description' => __( 'Custom background if defined by the theme.' ), 242 'type' => array( 'boolean', 'object' ), 243 'properties' => array( 244 'default-image' => array( 245 'type' => 'string', 246 'format' => 'uri', 247 ), 248 'default-preset' => array( 249 'type' => 'string', 250 'enum' => array( 251 'default', 252 'fill', 253 'fit', 254 'repeat', 255 'custom', 256 ), 257 ), 258 'default-position-x' => array( 259 'type' => 'string', 260 'enum' => array( 261 'left', 262 'center', 263 'right', 264 ), 265 ), 266 'default-position-y' => array( 267 'type' => 'string', 268 'enum' => array( 269 'left', 270 'center', 271 'right', 272 ), 273 ), 274 'default-size' => array( 275 'type' => 'string', 276 'enum' => array( 277 'auto', 278 'contain', 279 'cover', 280 ), 281 ), 282 'default-repeat' => array( 283 'type' => 'string', 284 'enum' => array( 285 'repeat-x', 286 'repeat-y', 287 'repeat', 288 'no-repeat', 289 ), 290 ), 291 'default-attachment' => array( 292 'type' => 'string', 293 'enum' => array( 294 'scroll', 295 'fixed', 296 ), 297 ), 298 'default-color' => array( 299 'type' => 'string', 300 ), 301 ), 302 'additionalProperties' => false, 303 ), 304 'custom-logo' => array( 305 'description' => __( 'Custom logo if defined by the theme.' ), 306 'type' => array( 'boolean', 'object' ), 307 'properties' => array( 308 'width' => array( 309 'type' => 'integer', 310 ), 311 'height' => array( 312 'type' => 'integer', 313 ), 314 'flex-width' => array( 315 'type' => 'boolean', 316 ), 317 'flex-height' => array( 318 'type' => 'boolean', 319 ), 320 'header-text' => array( 321 'type' => 'array', 322 'items' => array( 323 'type' => 'string', 324 ), 325 ), 326 ), 327 'additionalProperties' => false, 328 ), 329 'customize-selective-refresh-widgets' => array( 330 'description' => __( 'Whether the theme enables Selective Refresh for Widgets being managed with the Customizer.' ), 331 'type' => 'boolean', 332 ), 333 'dark-editor-style' => array( 334 'description' => __( 'Whether theme opts in to the dark editor style UI.' ), 335 'type' => 'boolean', 336 ), 337 'disable-custom-colors' => array( 338 'description' => __( 'Whether the theme disables custom colors.' ), 339 'type' => 'boolean', 340 ), 341 'disable-custom-font-sizes' => array( 342 'description' => __( 'Whether the theme disables custom font sizes.' ), 343 'type' => 'boolean', 344 ), 345 'disable-custom-gradients' => array( 346 'description' => __( 'Whether the theme disables custom graidients.' ), 347 'type' => 'boolean', 348 ), 349 'editor-color-palette' => array( 350 'description' => __( 'Custom color palette if defined by the theme.' ), 351 'type' => array( 'boolean', 'array' ), 352 'items' => array( 353 'type' => 'object', 354 'properties' => array( 355 'name' => array( 356 'type' => 'string', 357 ), 358 'slug' => array( 359 'type' => 'string', 360 ), 361 'color' => array( 362 'type' => 'string', 363 ), 364 ), 365 'additionalProperties' => false, 366 ), 367 ), 368 'editor-font-sizes' => array( 369 'description' => __( 'Custom font sizes if defined by the theme.' ), 370 'type' => array( 'boolean', 'array' ), 371 'items' => array( 372 'type' => 'object', 373 'properties' => array( 374 'name' => array( 375 'type' => 'string', 376 ), 377 'size' => array( 378 'type' => 'number', 379 ), 380 'slug' => array( 381 'type' => 'string', 382 ), 383 ), 384 'additionalProperties' => false, 385 ), 386 ), 387 'editor-gradient-presets' => array( 388 'description' => __( 'Custom gradient presets if defined by the theme.' ), 389 'type' => array( 'boolean', 'array' ), 390 'items' => array( 391 'type' => 'object', 392 'properties' => array( 393 'name' => array( 394 'type' => 'string', 395 ), 396 'gradient' => array( 397 'type' => 'string', 398 ), 399 'slug' => array( 400 'type' => 'string', 401 ), 402 ), 403 'additionalProperties' => false, 404 ), 405 ), 406 'editor-styles' => array( 407 'description' => __( 'Whether theme opts in to the editor styles CSS wrapper.' ), 408 'type' => 'boolean', 409 ), 410 'formats' => array( 169 411 'description' => __( 'Post formats supported.' ), 170 412 'type' => 'array', 171 'readonly' => true, 172 ), 173 'post-thumbnails' => array( 413 'items' => array( 414 'type' => 'string', 415 'enum' => get_post_format_slugs(), 416 ), 417 ), 418 'html5' => array( 419 'description' => __( 'Allows use of html5 markup for search forms, comment forms, comment lists, gallery, and caption.' ), 420 'type' => array( 'boolean', 'array' ), 421 'items' => array( 422 'type' => 'string', 423 'enum' => array( 424 'search-form', 425 'comment-form', 426 'comment-list', 427 'gallery', 428 'caption', 429 'script', 430 'style', 431 ), 432 ), 433 ), 434 'post-thumbnails' => array( 174 435 'description' => __( 'Whether the theme supports post thumbnails.' ), 175 'type' => array( 'array', 'bool' ), 176 'readonly' => true, 177 ), 178 'responsive-embeds' => array( 436 'type' => array( 'boolean', 'array' ), 437 'items' => array( 438 'type' => 'string', 439 ), 440 ), 441 'responsive-embeds' => array( 179 442 'description' => __( 'Whether the theme supports responsive embedded content.' ), 180 'type' => 'bool', 181 'readonly' => true, 443 'type' => 'boolean', 444 ), 445 'title-tag' => array( 446 'description' => __( 'Whether the theme can manage the document title tag.' ), 447 'type' => 'boolean', 448 ), 449 'wp-block-styles' => array( 450 'description' => __( 'Whether theme opts in to default WordPress block styles for viewing.' ), 451 'type' => 'boolean', 182 452 ), 183 453 ), -
trunk/tests/phpunit/tests/rest-api/rest-themes-controller.php
r46586 r47258 189 189 $this->assertEquals( 1, count( $properties ) ); 190 190 $this->assertArrayHasKey( 'theme_supports', $properties ); 191 192 $this->assertEquals( 3, count( $properties['theme_supports']['properties'] ) ); 193 $this->assertArrayHasKey( 'formats', $properties['theme_supports']['properties'] ); 194 $this->assertArrayHasKey( 'post-thumbnails', $properties['theme_supports']['properties'] ); 195 $this->assertArrayHasKey( 'responsive-embeds', $properties['theme_supports']['properties'] ); 191 $theme_supports = $properties['theme_supports']['properties']; 192 $this->assertEquals( 20, count( $theme_supports ) ); 193 $this->assertArrayHasKey( 'align-wide', $theme_supports ); 194 $this->assertArrayHasKey( 'automatic-feed-links', $theme_supports ); 195 $this->assertArrayHasKey( 'custom-header', $theme_supports ); 196 $this->assertArrayHasKey( 'custom-background', $theme_supports ); 197 $this->assertArrayHasKey( 'custom-logo', $theme_supports ); 198 $this->assertArrayHasKey( 'customize-selective-refresh-widgets', $theme_supports ); 199 $this->assertArrayHasKey( 'title-tag', $theme_supports ); 200 $this->assertArrayHasKey( 'dark-editor-style', $theme_supports ); 201 $this->assertArrayHasKey( 'disable-custom-font-sizes', $theme_supports ); 202 $this->assertArrayHasKey( 'disable-custom-gradients', $theme_supports ); 203 $this->assertArrayHasKey( 'editor-color-palette', $theme_supports ); 204 $this->assertArrayHasKey( 'editor-font-sizes', $theme_supports ); 205 $this->assertArrayHasKey( 'editor-gradient-presets', $theme_supports ); 206 $this->assertArrayHasKey( 'editor-styles', $theme_supports ); 207 $this->assertArrayHasKey( 'formats', $theme_supports ); 208 $this->assertArrayHasKey( 'html5', $theme_supports ); 209 $this->assertArrayHasKey( 'post-thumbnails', $theme_supports ); 210 $this->assertArrayHasKey( 'responsive-embeds', $theme_supports ); 211 $this->assertArrayHasKey( 'title-tag', $theme_supports ); 212 $this->assertArrayHasKey( 'wp-block-styles', $theme_supports ); 213 } 214 215 /** 216 * @ticket 49037 217 */ 218 public function test_theme_supports_disable_custom_colors_false() { 219 remove_theme_support( 'disable-custom-colors' ); 220 $response = self::perform_active_theme_request(); 221 $result = $response->get_data(); 222 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 223 $this->assertArrayHasKey( 'disable-custom-colors', $result[0]['theme_supports'] ); 224 $this->assertFalse( $result[0]['theme_supports']['disable-custom-colors'] ); 225 } 226 227 /** 228 * @ticket 49037 229 */ 230 public function test_theme_supports_disable_custom_colors_true() { 231 remove_theme_support( 'disable-custom-colors' ); 232 add_theme_support( 'disable-custom-colors' ); 233 $response = self::perform_active_theme_request(); 234 $result = $response->get_data(); 235 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 236 $this->assertTrue( $result[0]['theme_supports']['disable-custom-colors'] ); 237 } 238 239 /** 240 * @ticket 49037 241 */ 242 public function test_theme_supports_disable_custom_font_sizes_false() { 243 remove_theme_support( 'disable-custom-font-sizes' ); 244 $response = self::perform_active_theme_request(); 245 $result = $response->get_data(); 246 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 247 $this->assertArrayHasKey( 'disable-custom-font-sizes', $result[0]['theme_supports'] ); 248 $this->assertFalse( $result[0]['theme_supports']['disable-custom-font-sizes'] ); 249 } 250 251 /** 252 * @ticket 49037 253 */ 254 public function test_theme_supports_disable_custom_font_sizes_true() { 255 remove_theme_support( 'disable-custom-font-sizes' ); 256 add_theme_support( 'disable-custom-font-sizes' ); 257 $response = self::perform_active_theme_request(); 258 $result = $response->get_data(); 259 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 260 $this->assertTrue( $result[0]['theme_supports']['disable-custom-font-sizes'] ); 261 } 262 263 /** 264 * @ticket 49037 265 */ 266 public function test_theme_supports_editor_font_sizes_false() { 267 remove_theme_support( 'editor-font-sizes' ); 268 $response = self::perform_active_theme_request(); 269 $result = $response->get_data(); 270 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 271 $this->assertArrayHasKey( 'editor-font-sizes', $result[0]['theme_supports'] ); 272 $this->assertFalse( $result[0]['theme_supports']['editor-font-sizes'] ); 273 } 274 275 /** 276 * @ticket 49037 277 */ 278 public function test_theme_supports_editor_font_sizes_array() { 279 remove_theme_support( 'editor-font-sizes' ); 280 $tiny = array( 281 'name' => 'Tiny', 282 'size' => 8, 283 'slug' => 'tiny', 284 ); 285 add_theme_support( 'editor-font-sizes', array( $tiny ) ); 286 $response = self::perform_active_theme_request(); 287 $result = $response->get_data(); 288 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 289 $this->assertArrayHasKey( 'editor-font-sizes', $result[0]['theme_supports'] ); 290 $this->assertEquals( array( $tiny ), $result[0]['theme_supports']['editor-font-sizes'] ); 291 } 292 293 /** 294 * @ticket 49037 295 */ 296 public function test_theme_supports_editor_color_palette_false() { 297 remove_theme_support( 'editor-color-palette' ); 298 $response = self::perform_active_theme_request(); 299 $result = $response->get_data(); 300 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 301 $this->assertArrayHasKey( 'editor-color-palette', $result[0]['theme_supports'] ); 302 $this->assertFalse( $result[0]['theme_supports']['editor-color-palette'] ); 303 } 304 305 /** 306 * @ticket 49037 307 */ 308 public function test_theme_supports_editor_color_palette_array() { 309 remove_theme_support( 'editor-color-palette' ); 310 $wordpress_blue = array( 311 'name' => 'WordPress Blue', 312 'slug' => 'wordpress-blue', 313 'color' => '#0073AA', 314 ); 315 add_theme_support( 'editor-color-palette', array( $wordpress_blue ) ); 316 $response = self::perform_active_theme_request(); 317 $result = $response->get_data(); 318 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 319 $this->assertEquals( array( $wordpress_blue ), $result[0]['theme_supports']['editor-color-palette'] ); 320 } 321 322 /** 323 * @ticket 49037 324 */ 325 public function test_theme_supports_enable_automatic_feed_links() { 326 remove_theme_support( 'automatic-feed-links' ); 327 add_theme_support( 'automatic-feed-links' ); 328 $response = self::perform_active_theme_request(); 329 $result = $response->get_data(); 330 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 331 $this->assertTrue( $result[0]['theme_supports']['automatic-feed-links'] ); 332 } 333 334 /** 335 * @ticket 49037 336 */ 337 public function test_theme_supports_does_not_enable_automatic_feed_links() { 338 remove_theme_support( 'automatic-feed-links' ); 339 $response = self::perform_active_theme_request(); 340 $result = $response->get_data(); 341 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 342 $this->assertArrayHasKey( 'automatic-feed-links', $result[0]['theme_supports'] ); 343 $this->assertFalse( $result[0]['theme_supports']['automatic-feed-links'] ); 344 } 345 346 /** 347 * @ticket 49037 348 */ 349 public function test_theme_does_not_support_custom_logo() { 350 remove_theme_support( 'custom-logo' ); 351 $response = self::perform_active_theme_request(); 352 $result = $response->get_data(); 353 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 354 $this->assertArrayHasKey( 'custom-logo', $result[0]['theme_supports'] ); 355 $this->assertFalse( $result[0]['theme_supports']['custom-logo'] ); 356 } 357 358 /** 359 * @ticket 49037 360 */ 361 public function test_theme_supports_custom_logo() { 362 remove_theme_support( 'custom-logo' ); 363 $wordpress_logo = array( 364 'height' => 100, 365 'width' => 400, 366 'flex-height' => true, 367 'flex-width' => true, 368 'header-text' => array( 'site-title', 'site-description' ), 369 ); 370 add_theme_support( 'custom-logo', $wordpress_logo ); 371 $response = self::perform_active_theme_request(); 372 $result = $response->get_data(); 373 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 374 $this->assertEquals( $wordpress_logo, $result[0]['theme_supports']['custom-logo'] ); 375 } 376 377 /** 378 * @ticket 49037 379 */ 380 public function test_theme_does_not_support_custom_header() { 381 remove_theme_support( 'custom-header' ); 382 $response = self::perform_active_theme_request(); 383 $result = $response->get_data(); 384 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 385 $this->assertArrayHasKey( 'custom-header', $result[0]['theme_supports'] ); 386 $this->assertFalse( $result[0]['theme_supports']['custom-header'] ); 387 } 388 389 /** 390 * @ticket 49037 391 */ 392 public function test_theme_supports_custom_header() { 393 remove_theme_support( 'custom-header' ); 394 $wordpress_header = array( 395 'default-image' => '', 396 'random-default' => false, 397 'width' => 0, 398 'height' => 0, 399 'flex-height' => false, 400 'flex-width' => false, 401 'default-text-color' => '', 402 'header-text' => true, 403 'uploads' => true, 404 'wp-head-callback' => '', 405 'admin-head-callback' => '', 406 'admin-preview-callback' => '', 407 'video' => false, 408 'video-active-callback' => 'is_front_page', 409 ); 410 $excluded = array( 411 'wp-head-callback', 412 'admin-head-callback', 413 'admin-preview-callback', 414 'video-active-callback', 415 ); 416 add_theme_support( 'custom-header', $wordpress_header ); 417 $response = self::perform_active_theme_request(); 418 $result = $response->get_data(); 419 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 420 421 $expected = array_diff_key( $wordpress_header, array_flip( $excluded ) ); 422 $this->assertEquals( $expected, $result[0]['theme_supports']['custom-header'] ); 423 } 424 425 /** 426 * @ticket 49037 427 */ 428 public function test_theme_does_not_support_custom_background() { 429 remove_theme_support( 'custom-background' ); 430 $response = self::perform_active_theme_request(); 431 $result = $response->get_data(); 432 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 433 $this->assertArrayHasKey( 'custom-background', $result[0]['theme_supports'] ); 434 $this->assertFalse( $result[0]['theme_supports']['custom-background'] ); 435 } 436 437 /** 438 * @ticket 49037 439 */ 440 public function test_theme_supports_custom_background() { 441 remove_theme_support( 'custom-background' ); 442 $background = array( 443 'default-image' => '', 444 'default-preset' => 'default', 445 'default-position-x' => 'left', 446 'default-position-y' => 'top', 447 'default-size' => 'auto', 448 'default-repeat' => 'repeat', 449 'default-attachment' => 'scroll', 450 'default-color' => '', 451 'wp-head-callback' => '_custom_background_cb', 452 'admin-head-callback' => '', 453 'admin-preview-callback' => '', 454 ); 455 $excluded = array( 456 'wp-head-callback', 457 'admin-head-callback', 458 'admin-preview-callback', 459 ); 460 add_theme_support( 'custom-background', $background ); 461 $response = self::perform_active_theme_request(); 462 $result = $response->get_data(); 463 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 464 465 $expected = array_diff_key( $background, array_flip( $excluded ) ); 466 $this->assertEquals( $expected, $result[0]['theme_supports']['custom-background'] ); 467 } 468 469 /** 470 * @ticket 49037 471 */ 472 public function test_theme_does_not_support_html5() { 473 remove_theme_support( 'html5' ); 474 $response = self::perform_active_theme_request(); 475 $result = $response->get_data(); 476 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 477 $this->assertArrayHasKey( 'html5', $result[0]['theme_supports'] ); 478 $this->assertFalse( $result[0]['theme_supports']['html5'] ); 479 } 480 481 /** 482 * @ticket 49037 483 */ 484 public function test_theme_supports_html5() { 485 remove_theme_support( 'html5' ); 486 $html5 = array( 487 'search-form', 488 'comment-form', 489 'comment-list', 490 'gallery', 491 'caption', 492 'script', 493 'style', 494 ); 495 add_theme_support( 'html5', $html5 ); 496 $response = self::perform_active_theme_request(); 497 $result = $response->get_data(); 498 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 499 $this->assertEquals( $html5, $result[0]['theme_supports']['html5'] ); 500 } 501 502 /** 503 * @ticket 49037 504 */ 505 public function test_theme_cannot_manage_title_tag() { 506 remove_theme_support( 'title-tag' ); 507 $response = self::perform_active_theme_request(); 508 $result = $response->get_data(); 509 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 510 $this->assertArrayHasKey( 'title-tag', $result[0]['theme_supports'] ); 511 $this->assertFalse( $result[0]['theme_supports']['title-tag'] ); 512 } 513 514 /** 515 * @ticket 49037 516 */ 517 public function test_theme_can_manage_title_tag() { 518 global $_wp_theme_features; 519 $_wp_theme_features['title-tag'] = true; 520 $response = self::perform_active_theme_request(); 521 $result = $response->get_data(); 522 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 523 $this->assertTrue( $result[0]['theme_supports']['title-tag'] ); 524 } 525 526 /** 527 * @ticket 49037 528 */ 529 public function test_theme_cannot_manage_selective_refresh_for_widgets() { 530 remove_theme_support( 'customize-selective-refresh-widgets' ); 531 $response = self::perform_active_theme_request(); 532 $result = $response->get_data(); 533 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 534 $this->assertArrayHasKey( 'customize-selective-refresh-widgets', $result[0]['theme_supports'] ); 535 $this->assertFalse( $result[0]['theme_supports']['customize-selective-refresh-widgets'] ); 536 } 537 538 /** 539 * @ticket 49037 540 */ 541 public function test_theme_can_manage_selective_refresh_for_widgets() { 542 remove_theme_support( 'customize-selective-refresh-widgets' ); 543 add_theme_support( 'customize-selective-refresh-widgets' ); 544 $response = self::perform_active_theme_request(); 545 $result = $response->get_data(); 546 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 547 $this->assertTrue( $result[0]['theme_supports']['customize-selective-refresh-widgets'] ); 548 } 549 550 /** 551 * @ticket 49037 552 */ 553 public function test_theme_no_wp_block_styles() { 554 remove_theme_support( 'wp-block-styles' ); 555 $response = self::perform_active_theme_request(); 556 $result = $response->get_data(); 557 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 558 $this->assertArrayHasKey( 'wp-block-styles', $result[0]['theme_supports'] ); 559 $this->assertFalse( $result[0]['theme_supports']['wp-block-styles'] ); 560 } 561 562 /** 563 * @ticket 49037 564 */ 565 public function test_theme_wp_block_styles_optin() { 566 remove_theme_support( 'wp-block-styles' ); 567 add_theme_support( 'wp-block-styles' ); 568 $response = self::perform_active_theme_request(); 569 $result = $response->get_data(); 570 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 571 $this->assertTrue( $result[0]['theme_supports']['wp-block-styles'] ); 572 } 573 574 /** 575 * @ticket 49037 576 */ 577 public function test_theme_no_align_wide() { 578 remove_theme_support( 'align-wide' ); 579 $response = self::perform_active_theme_request(); 580 $result = $response->get_data(); 581 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 582 $this->assertArrayHasKey( 'align-wide', $result[0]['theme_supports'] ); 583 $this->assertFalse( $result[0]['theme_supports']['align-wide'] ); 584 } 585 586 /** 587 * @ticket 49037 588 */ 589 public function test_theme_align_wide_optin() { 590 remove_theme_support( 'align-wide' ); 591 add_theme_support( 'align-wide' ); 592 $response = self::perform_active_theme_request(); 593 $result = $response->get_data(); 594 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 595 $this->assertTrue( $result[0]['theme_supports']['align-wide'] ); 596 } 597 598 /** 599 * @ticket 49037 600 */ 601 public function test_theme_no_editor_styles() { 602 remove_theme_support( 'editor-styles' ); 603 $response = self::perform_active_theme_request(); 604 $result = $response->get_data(); 605 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 606 $this->assertArrayHasKey( 'editor-styles', $result[0]['theme_supports'] ); 607 $this->assertFalse( $result[0]['theme_supports']['editor-styles'] ); 608 } 609 610 /** 611 * @ticket 49037 612 */ 613 public function test_theme_editor_styles_optin() { 614 remove_theme_support( 'editor-styles' ); 615 add_theme_support( 'editor-styles' ); 616 $response = self::perform_active_theme_request(); 617 $result = $response->get_data(); 618 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 619 $this->assertTrue( $result[0]['theme_supports']['editor-styles'] ); 620 } 621 622 /** 623 * @ticket 49037 624 */ 625 public function test_theme_no_dark_editor_style() { 626 remove_theme_support( 'dark-editor-style' ); 627 $response = self::perform_active_theme_request(); 628 $result = $response->get_data(); 629 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 630 $this->assertArrayHasKey( 'dark-editor-style', $result[0]['theme_supports'] ); 631 $this->assertFalse( $result[0]['theme_supports']['dark-editor-style'] ); 632 } 633 634 /** 635 * @ticket 49037 636 */ 637 public function test_theme_dark_editor_style_optin() { 638 remove_theme_support( 'dark-editor-style' ); 639 add_theme_support( 'dark-editor-style' ); 640 $response = self::perform_active_theme_request(); 641 $result = $response->get_data(); 642 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 643 $this->assertTrue( $result[0]['theme_supports']['dark-editor-style'] ); 644 } 645 646 /** 647 * @ticket 49037 648 */ 649 public function test_theme_no_disable_custom_gradients() { 650 remove_theme_support( 'disable-custom-gradients' ); 651 $response = self::perform_active_theme_request(); 652 $result = $response->get_data(); 653 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 654 $this->assertArrayHasKey( 'disable-custom-gradients', $result[0]['theme_supports'] ); 655 $this->assertFalse( $result[0]['theme_supports']['disable-custom-gradients'] ); 656 } 657 658 /** 659 * @ticket 49037 660 */ 661 public function test_theme_disable_custom_gradients() { 662 remove_theme_support( 'disable-custom-gradients' ); 663 add_theme_support( 'disable-custom-gradients' ); 664 $response = self::perform_active_theme_request(); 665 $result = $response->get_data(); 666 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 667 $this->assertTrue( $result[0]['theme_supports']['disable-custom-gradients'] ); 668 } 669 670 /** 671 * @ticket 49037 672 */ 673 public function test_theme_supports_editor_gradient_presets_array() { 674 remove_theme_support( 'editor-gradient-presets' ); 675 $gradient = array( 676 'name' => __( 'Vivid cyan blue to vivid purple', 'themeLangDomain' ), 677 'gradient' => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)', 678 'slug' => 'vivid-cyan-blue-to-vivid-purple', 679 ); 680 add_theme_support( 'editor-gradient-presets', array( $gradient ) ); 681 $response = self::perform_active_theme_request(); 682 $result = $response->get_data(); 683 $this->assertArrayHasKey( 'theme_supports', $result[0] ); 684 $this->assertEquals( array( $gradient ), $result[0]['theme_supports']['editor-gradient-presets'] ); 196 685 } 197 686
Note: See TracChangeset
for help on using the changeset viewer.