Changeset 47563
- Timestamp:
- 04/09/2020 10:52:45 PM (5 years ago)
- Location:
- branches/5.4
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.4
-
branches/5.4/src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php
r47391 r47563 452 452 } 453 453 454 if ( ! in_array( $field_name, $requested_fields, true) ) {454 if ( ! rest_is_field_included( $field_name, $requested_fields ) ) { 455 455 continue; 456 456 } -
branches/5.4/tests/phpunit/tests/rest-api.php
r47224 r47563 555 555 'd' => array( 556 556 '5' => 5, 557 ), 558 ), 559 $response->get_data() 560 ); 561 } 562 563 /** 564 * Ensure inclusion of deeply nested fields may be controlled with request['_fields']. 565 * 566 * @ticket 49648 567 */ 568 public function test_rest_filter_response_fields_deeply_nested_field_filter() { 569 $response = new WP_REST_Response(); 570 571 $response->set_data( 572 array( 573 'field' => array( 574 'a' => array( 575 'i' => 'value i', 576 'ii' => 'value ii', 577 ), 578 'b' => array( 579 'iii' => 'value iii', 580 'iv' => 'value iv', 581 ), 582 ), 583 ) 584 ); 585 $request = array( 586 '_fields' => 'field.a.i,field.b.iv', 587 ); 588 589 $response = rest_filter_response_fields( $response, null, $request ); 590 $this->assertEquals( 591 array( 592 'field' => array( 593 'a' => array( 594 'i' => 'value i', 595 ), 596 'b' => array( 597 'iv' => 'value iv', 598 ), 557 599 ), 558 600 ), -
branches/5.4/tests/phpunit/tests/rest-api/rest-controller.php
r47328 r47563 43 43 ) 44 44 ); 45 } 46 47 public function tearDown() { 48 parent::tearDown(); 49 50 global $wp_rest_additional_fields; 51 $wp_rest_additional_fields = array(); 45 52 } 46 53 … … 417 424 $this->assertTrue( $listener->get_call_count( $method ) > $first_call_count ); 418 425 } 426 427 /** 428 * @dataProvider data_filter_nested_registered_rest_fields 429 * @ticket 49648 430 */ 431 public function test_filter_nested_registered_rest_fields( $filter, $expected ) { 432 $controller = new WP_REST_Test_Controller(); 433 434 register_rest_field( 435 'type', 436 'field', 437 array( 438 'schema' => array( 439 'type' => 'object', 440 'description' => 'A complex object', 441 'context' => array( 'view', 'edit' ), 442 'properties' => array( 443 'a' => array( 444 'i' => 'string', 445 'ii' => 'string', 446 ), 447 'b' => array( 448 'iii' => 'string', 449 'iv' => 'string', 450 ), 451 ), 452 ), 453 'get_callback' => array( $this, 'register_nested_rest_field_get_callback' ), 454 ) 455 ); 456 457 $request = new WP_REST_Request( 'GET', '/wp/v2/testroute' ); 458 $request->set_param( '_fields', $filter ); 459 460 $response = $controller->prepare_item_for_response( array(), $request ); 461 $response = rest_filter_response_fields( $response, rest_get_server(), $request ); 462 463 $this->assertEquals( $expected, $response->get_data() ); 464 } 465 466 public function register_nested_rest_field_get_callback() { 467 return array( 468 'a' => array( 469 'i' => 'value i', 470 'ii' => 'value ii', 471 ), 472 'b' => array( 473 'iii' => 'value iii', 474 'iv' => 'value iv', 475 ), 476 ); 477 } 478 479 public function data_filter_nested_registered_rest_fields() { 480 return array( 481 array( 482 'field', 483 array( 484 'field' => array( 485 'a' => array( 486 'i' => 'value i', 487 'ii' => 'value ii', 488 ), 489 'b' => array( 490 'iii' => 'value iii', 491 'iv' => 'value iv', 492 ), 493 ), 494 ), 495 ), 496 array( 497 'field.a', 498 array( 499 'field' => array( 500 'a' => array( 501 'i' => 'value i', 502 'ii' => 'value ii', 503 ), 504 ), 505 ), 506 ), 507 array( 508 'field.b', 509 array( 510 'field' => array( 511 'b' => array( 512 'iii' => 'value iii', 513 'iv' => 'value iv', 514 ), 515 ), 516 ), 517 ), 518 array( 519 'field.a.i,field.b.iv', 520 array( 521 'field' => array( 522 'a' => array( 523 'i' => 'value i', 524 ), 525 'b' => array( 526 'iv' => 'value iv', 527 ), 528 ), 529 ), 530 ), 531 array( 532 'field.a,field.b.iii', 533 array( 534 'field' => array( 535 'a' => array( 536 'i' => 'value i', 537 'ii' => 'value ii', 538 ), 539 'b' => array( 540 'iii' => 'value iii', 541 ), 542 ), 543 ), 544 ), 545 ); 546 } 419 547 }
Note: See TracChangeset
for help on using the changeset viewer.