- Timestamp:
- 10/11/2018 07:15:22 AM (8 years ago)
- Location:
- branches/4.9
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
tests/phpunit/tests/rest-api/rest-revisions-controller.php (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/4.9
- Property svn:mergeinfo changed
/trunk reverse-merged: 43584-43586,43647
- Property svn:mergeinfo changed
-
branches/4.9/tests/phpunit/tests/rest-api/rest-revisions-controller.php
r43648 r43715 7 7 */ 8 8 9 /**10 * @group restapi11 */9 /** 10 * @group restapi 11 */ 12 12 class WP_Test_REST_Revisions_Controller extends WP_Test_REST_Controller_Testcase { 13 13 protected static $post_id; … … 31 31 wp_update_post( array( 'post_content' => 'This content is better.', 'ID' => self::$post_id ) ); 32 32 wp_update_post( array( 'post_content' => 'This content is marvelous.', 'ID' => self::$post_id ) ); 33 wp_update_post(34 array(35 'post_content' => 'This content is fantastic.',36 'ID' => self::$post_id,37 )38 );39 33 wp_set_current_user( 0 ); 40 34 } … … 52 46 parent::setUp(); 53 47 54 $revisions = wp_get_post_revisions( self::$post_id ); 55 $this->total_revisions = count( $revisions ); 56 $this->revisions = $revisions; 57 $this->revision_1 = array_pop( $revisions ); 58 $this->revision_id1 = $this->revision_1->ID; 59 $this->revision_2 = array_pop( $revisions ); 60 $this->revision_id2 = $this->revision_2->ID; 61 $this->revision_3 = array_pop( $revisions ); 62 $this->revision_id3 = $this->revision_3->ID; 48 $revisions = wp_get_post_revisions( self::$post_id ); 49 $this->revision_1 = array_pop( $revisions ); 50 $this->revision_id1 = $this->revision_1->ID; 51 $this->revision_2 = array_pop( $revisions ); 52 $this->revision_id2 = $this->revision_2->ID; 63 53 } 64 54 … … 92 82 $data = $response->get_data(); 93 83 $this->assertEquals( 200, $response->get_status() ); 94 $this->assertCount( $this->total_revisions, $data );84 $this->assertCount( 2, $data ); 95 85 96 86 // Reverse chron 97 $this->assertEquals( $this->revision_id3, $data[0]['id'] ); 98 $this->check_get_revision_response( $data[0], $this->revision_3 ); 99 100 $this->assertEquals( $this->revision_id2, $data[1]['id'] ); 101 $this->check_get_revision_response( $data[1], $this->revision_2 ); 102 103 $this->assertEquals( $this->revision_id1, $data[2]['id'] ); 104 $this->check_get_revision_response( $data[2], $this->revision_1 ); 87 $this->assertEquals( $this->revision_id2, $data[0]['id'] ); 88 $this->check_get_revision_response( $data[0], $this->revision_2 ); 89 90 $this->assertEquals( $this->revision_id1, $data[1]['id'] ); 91 $this->check_get_revision_response( $data[1], $this->revision_1 ); 105 92 } 106 93 … … 375 362 } 376 363 377 /**378 * Test the pagination header of the first page.379 *380 * @ticket 40510381 */382 public function test_get_items_pagination_header_of_the_first_page() {383 wp_set_current_user( self::$editor_id );384 385 $rest_route = '/wp/v2/posts/' . self::$post_id . '/revisions';386 $per_page = 2;387 $total_pages = (int) ceil( $this->total_revisions / $per_page );388 $page = 1; // First page.389 390 $request = new WP_REST_Request( 'GET', $rest_route );391 $request->set_query_params(392 array(393 'per_page' => $per_page,394 'page' => $page,395 )396 );397 $response = rest_get_server()->dispatch( $request );398 $headers = $response->get_headers();399 $this->assertSame( $this->total_revisions, $headers['X-WP-Total'] );400 $this->assertSame( $total_pages, $headers['X-WP-TotalPages'] );401 $next_link = add_query_arg(402 array(403 'per_page' => $per_page,404 'page' => $page + 1,405 ),406 rest_url( $rest_route )407 );408 $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );409 $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );410 }411 412 /**413 * Test the pagination header of the last page.414 *415 * @ticket 40510416 */417 public function test_get_items_pagination_header_of_the_last_page() {418 wp_set_current_user( self::$editor_id );419 420 $rest_route = '/wp/v2/posts/' . self::$post_id . '/revisions';421 $per_page = 2;422 $total_pages = (int) ceil( $this->total_revisions / $per_page );423 $page = 2; // Last page.424 425 $request = new WP_REST_Request( 'GET', $rest_route );426 $request->set_query_params(427 array(428 'per_page' => $per_page,429 'page' => $page,430 )431 );432 $response = rest_get_server()->dispatch( $request );433 $headers = $response->get_headers();434 $this->assertSame( $this->total_revisions, $headers['X-WP-Total'] );435 $this->assertSame( $total_pages, $headers['X-WP-TotalPages'] );436 $prev_link = add_query_arg(437 array(438 'per_page' => $per_page,439 'page' => $page - 1,440 ),441 rest_url( $rest_route )442 );443 $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );444 }445 446 /**447 * Test that invalid 'per_page' query should error.448 *449 * @ticket 40510450 */451 public function test_get_items_invalid_per_page_should_error() {452 wp_set_current_user( self::$editor_id );453 454 $per_page = -1; // Invalid number.455 $expected_error = 'rest_invalid_param';456 $expected_status = 400;457 458 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );459 $request->set_param( 'per_page', $per_page );460 $response = rest_get_server()->dispatch( $request );461 $this->assertErrorResponse( $expected_error, $response, $expected_status );462 }463 464 /**465 * Test that out of bounds 'page' query should error.466 *467 * @ticket 40510468 */469 public function test_get_items_out_of_bounds_page_should_error() {470 wp_set_current_user( self::$editor_id );471 472 $per_page = 2;473 $total_pages = (int) ceil( $this->total_revisions / $per_page );474 $page = $total_pages + 1; // Out of bound page.475 $expected_error = 'rest_revision_invalid_page_number';476 $expected_status = 400;477 478 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );479 $request->set_query_params(480 array(481 'per_page' => $per_page,482 'page' => $page,483 )484 );485 $response = rest_get_server()->dispatch( $request );486 $this->assertErrorResponse( $expected_error, $response, $expected_status );487 }488 489 /**490 * Test that impossibly high 'page' query should error.491 *492 * @ticket 40510493 */494 public function test_get_items_invalid_max_pages_should_error() {495 wp_set_current_user( self::$editor_id );496 497 $per_page = 2;498 $page = REST_TESTS_IMPOSSIBLY_HIGH_NUMBER; // Invalid number.499 $expected_error = 'rest_revision_invalid_page_number';500 $expected_status = 400;501 502 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );503 $request->set_query_params(504 array(505 'per_page' => $per_page,506 'page' => $page,507 )508 );509 $response = rest_get_server()->dispatch( $request );510 $this->assertErrorResponse( $expected_error, $response, $expected_status );511 }512 513 /**514 * Test the search query.515 *516 * @ticket 40510517 */518 public function test_get_items_search_query() {519 wp_set_current_user( self::$editor_id );520 521 $search_string = 'better';522 $expected_count = 1;523 $expected_content = 'This content is better.';524 525 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );526 $request->set_param( 'search', $search_string );527 $response = rest_get_server()->dispatch( $request );528 $data = $response->get_data();529 $this->assertCount( $expected_count, $data );530 $this->assertContains( $expected_content, $data[0]['content']['rendered'] );531 }532 533 /**534 * Test that the default query should fetch all revisions.535 *536 * @ticket 40510537 */538 public function test_get_items_default_query_should_fetch_all_revisons() {539 wp_set_current_user( self::$editor_id );540 541 $expected_count = $this->total_revisions;542 543 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );544 $response = rest_get_server()->dispatch( $request );545 $this->assertCount( $expected_count, $response->get_data() );546 }547 548 /**549 * Test that 'offset' query shouldn't work without 'per_page' (fallback -1).550 *551 * @ticket 40510552 */553 public function test_get_items_offset_should_not_work_without_per_page() {554 wp_set_current_user( self::$editor_id );555 556 $offset = 1;557 $expected_count = $this->total_revisions;558 559 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );560 $request->set_param( 'offset', $offset );561 $response = rest_get_server()->dispatch( $request );562 $this->assertCount( $expected_count, $response->get_data() );563 }564 565 /**566 * Test that 'offset' query should work with 'per_page'.567 *568 * @ticket 40510569 */570 public function test_get_items_offset_should_work_with_per_page() {571 wp_set_current_user( self::$editor_id );572 573 $per_page = 2;574 $offset = 1;575 $expected_count = 2;576 577 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );578 $request->set_query_params(579 array(580 'offset' => $offset,581 'per_page' => $per_page,582 )583 );584 $response = rest_get_server()->dispatch( $request );585 $this->assertCount( $expected_count, $response->get_data() );586 }587 588 /**589 * Test that 'offset' query should take priority over 'page'.590 *591 * @ticket 40510592 */593 public function test_get_items_offset_should_take_priority_over_page() {594 wp_set_current_user( self::$editor_id );595 596 $per_page = 2;597 $offset = 1;598 $page = 1;599 $expected_count = 2;600 601 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );602 $request->set_query_params(603 array(604 'offset' => $offset,605 'per_page' => $per_page,606 'page' => $page,607 )608 );609 $response = rest_get_server()->dispatch( $request );610 $this->assertCount( $expected_count, $response->get_data() );611 }612 613 /**614 * Test that 'offset' query, as the total revisions count, should return empty data.615 *616 * @ticket 40510617 */618 public function test_get_items_total_revisions_offset_should_return_empty_data() {619 wp_set_current_user( self::$editor_id );620 621 $per_page = 2;622 $offset = $this->total_revisions;623 $expected_error = 'rest_revision_invalid_offset_number';624 $expected_status = 400;625 626 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );627 $request->set_query_params(628 array(629 'offset' => $offset,630 'per_page' => $per_page,631 )632 );633 $response = rest_get_server()->dispatch( $request );634 $this->assertErrorResponse( $expected_error, $response, $expected_status );635 }636 637 /**638 * Test that out of bound 'offset' query should error.639 *640 * @ticket 40510641 */642 public function test_get_items_out_of_bound_offset_should_error() {643 wp_set_current_user( self::$editor_id );644 645 $per_page = 2;646 $offset = $this->total_revisions + 1;647 $expected_error = 'rest_revision_invalid_offset_number';648 $expected_status = 400;649 650 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );651 $request->set_query_params(652 array(653 'offset' => $offset,654 'per_page' => $per_page,655 )656 );657 $response = rest_get_server()->dispatch( $request );658 $this->assertErrorResponse( $expected_error, $response, $expected_status );659 }660 661 /**662 * Test that impossible high number for 'offset' query should error.663 *664 * @ticket 40510665 */666 public function test_get_items_impossible_high_number_offset_should_error() {667 wp_set_current_user( self::$editor_id );668 669 $per_page = 2;670 $offset = REST_TESTS_IMPOSSIBLY_HIGH_NUMBER;671 $expected_error = 'rest_revision_invalid_offset_number';672 $expected_status = 400;673 674 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );675 $request->set_query_params(676 array(677 'offset' => $offset,678 'per_page' => $per_page,679 )680 );681 $response = rest_get_server()->dispatch( $request );682 $this->assertErrorResponse( $expected_error, $response, $expected_status );683 }684 685 /**686 * Test that invalid 'offset' query should error.687 *688 * @ticket 40510689 */690 public function test_get_items_invalid_offset_should_error() {691 wp_set_current_user( self::$editor_id );692 693 $per_page = 2;694 $offset = 'moreplease';695 $expected_error = 'rest_invalid_param';696 $expected_status = 400;697 698 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );699 $request->set_query_params(700 array(701 'offset' => $offset,702 'per_page' => $per_page,703 )704 );705 $response = rest_get_server()->dispatch( $request );706 $this->assertErrorResponse( $expected_error, $response, $expected_status );707 }708 709 /**710 * Test that out of bounds 'page' query should not error when offset is provided,711 * because it takes precedence.712 *713 * @ticket 40510714 */715 public function test_get_items_out_of_bounds_page_should_not_error_if_offset() {716 wp_set_current_user( self::$editor_id );717 718 $per_page = 2;719 $total_pages = (int) ceil( $this->total_revisions / $per_page );720 $page = $total_pages + 1; // Out of bound page.721 $expected_count = 2;722 723 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . self::$post_id . '/revisions' );724 $request->set_query_params(725 array(726 'offset' => 1,727 'per_page' => $per_page,728 'page' => $page,729 )730 );731 $response = rest_get_server()->dispatch( $request );732 $this->assertCount( $expected_count, $response->get_data() );733 }734 364 }
Note: See TracChangeset
for help on using the changeset viewer.