Changeset 53498
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
r53482 r53498 389 389 $total_posts = $posts_query->found_posts; 390 390 391 if ( $total_posts < 1 ) {391 if ( $total_posts < 1 && $page > 1 ) { 392 392 // Out-of-bounds, run the query again without LIMIT for total count. 393 393 unset( $query_args['paged'] ); -
trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php
r52389 r53498 30 30 private $test_file2; 31 31 32 /** 33 * @var array The recorded posts query clauses. 34 */ 35 protected $posts_clauses; 36 32 37 public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) { 33 38 self::$superadmin_id = $factory->user->create( … … 86 91 $this->test_file2 = get_temp_dir() . 'codeispoetry.png'; 87 92 copy( $orig_file2, $this->test_file2 ); 93 94 add_filter( 'rest_pre_dispatch', array( $this, 'wpSetUpBeforeRequest' ), 10, 3 ); 95 add_filter( 'posts_clauses', array( $this, 'save_posts_clauses' ), 10, 2 ); 96 } 97 98 public function wpSetUpBeforeRequest( $result ) { 99 $this->posts_clauses = array(); 100 return $result; 101 } 102 103 public function save_posts_clauses( $clauses ) { 104 $this->posts_clauses[] = $clauses; 105 return $clauses; 88 106 } 89 107 … … 618 636 $this->assertCount( 1, $data ); 619 637 $this->assertSame( $id2, $data[0]['id'] ); 638 } 639 640 /** 641 * @ticket 55677 642 */ 643 public function test_get_items_avoid_duplicated_count_query_if_no_items() { 644 $request = new WP_REST_Request( 'GET', '/wp/v2/media' ); 645 $request->set_param( 'media_type', 'video' ); 646 647 $response = rest_get_server()->dispatch( $request ); 648 649 $this->assertCount( 1, $this->posts_clauses ); 650 651 $headers = $response->get_headers(); 652 653 $this->assertSame( 0, $headers['X-WP-Total'] ); 654 $this->assertSame( 0, $headers['X-WP-TotalPages'] ); 655 } 656 657 /** 658 * @ticket 55677 659 */ 660 public function test_get_items_with_empty_page_runs_count_query_after() { 661 $this->factory->attachment->create_object( 662 $this->test_file, 663 0, 664 array( 665 'post_date' => '2022-06-12T00:00:00Z', 666 'post_mime_type' => 'image/jpeg', 667 'post_excerpt' => 'A sample caption', 668 ) 669 ); 670 671 $request = new WP_REST_Request( 'GET', '/wp/v2/media' ); 672 $request->set_param( 'media_type', 'image' ); 673 $request->set_param( 'page', 2 ); 674 675 $response = rest_get_server()->dispatch( $request ); 676 677 $this->assertCount( 2, $this->posts_clauses ); 678 679 $this->assertErrorResponse( 'rest_post_invalid_page_number', $response, 400 ); 620 680 } 621 681 -
trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php
r52389 r53498 1386 1386 $this->assertCount( 0, $response->get_data() ); 1387 1387 1388 // FIXME Since this request returns zero posts, the query is executed twice. 1389 $this->assertCount( 2, $this->posts_clauses ); 1388 $this->assertCount( 1, $this->posts_clauses ); 1390 1389 $this->posts_clauses = array_slice( $this->posts_clauses, 0, 1 ); 1391 1390 … … 1418 1417 $this->assertCount( 0, $response->get_data() ); 1419 1418 1420 // FIXME Since this request returns zero posts, the query is executed twice. 1421 $this->assertCount( 2, $this->posts_clauses ); 1419 $this->assertCount( 1, $this->posts_clauses ); 1422 1420 $this->posts_clauses = array_slice( $this->posts_clauses, 0, 1 ); 1423 1421 … … 1437 1435 $this->assertCount( 0, $response->get_data() ); 1438 1436 1439 // FIXME Since this request returns zero posts, the query is executed twice. 1440 $this->assertCount( 2, $this->posts_clauses ); 1437 $this->assertCount( 1, $this->posts_clauses ); 1441 1438 $this->posts_clauses = array_slice( $this->posts_clauses, 0, 1 ); 1442 1439
Note: See TracChangeset
for help on using the changeset viewer.