- Timestamp:
- 11/05/2019 08:41:12 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/rest-api/rest-categories-controller.php
r46586 r46657 16 16 protected static $subscriber; 17 17 18 protected static $category_ids = array(); 19 protected static $total_categories = 30; 20 protected static $per_page = 50; 21 18 22 public static function wpSetUpBeforeClass( $factory ) { 19 23 self::$administrator = $factory->user->create( … … 32 36 ) 33 37 ); 38 39 // Set up categories for pagination tests. 40 for ( $i = 0; $i < self::$total_categories - 1; $i++ ) { 41 $category_ids[] = $factory->category->create( 42 array( 43 'name' => "Category {$i}", 44 ) 45 ); 46 } 34 47 } 35 48 … … 37 50 self::delete_user( self::$administrator ); 38 51 self::delete_user( self::$subscriber ); 52 53 // Remove categories for pagination tests. 54 foreach ( self::$category_ids as $category_id ) { 55 wp_delete_term( $category_id, 'category' ); 56 } 39 57 } 40 58 … … 137 155 138 156 public function test_get_items() { 139 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 157 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 158 $request->set_param( 'per_page', self::$per_page ); 140 159 $response = rest_get_server()->dispatch( $request ); 141 160 $this->check_get_taxonomy_terms_response( $response ); … … 144 163 public function test_get_items_invalid_permission_for_context() { 145 164 wp_set_current_user( 0 ); 165 146 166 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 147 167 $request->set_param( 'context', 'edit' ); … … 154 174 $category1 = $this->factory->category->create( array( 'name' => 'Season 5' ) ); 155 175 $category2 = $this->factory->category->create( array( 'name' => 'The Be Sharps' ) ); 176 177 $total_categories = self::$total_categories + 2; 178 156 179 wp_set_object_terms( $post_id, array( $category1, $category2 ), 'category' ); 157 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 180 181 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 182 $request->set_param( 'per_page', self::$per_page ); 158 183 $request->set_param( 'hide_empty', true ); 159 184 $response = rest_get_server()->dispatch( $request ); … … 167 192 $response = rest_get_server()->dispatch( $request ); 168 193 $data = $response->get_data(); 169 $this->assertEquals( 3, count( $data ) );194 $this->assertEquals( $total_categories, count( $data ) ); 170 195 } 171 196 … … 185 210 ) 186 211 ); 187 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 212 213 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 214 $request->set_param( 'per_page', self::$per_page ); 188 215 $request->set_param( 'parent', 0 ); 189 216 $response = rest_get_server()->dispatch( $request ); … … 215 242 ) 216 243 ); 217 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 244 245 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 246 $request->set_param( 'per_page', self::$per_page ); 218 247 $request->set_param( 'parent', '0' ); 219 248 $response = rest_get_server()->dispatch( $request ); … … 255 284 public function test_get_items_include_query() { 256 285 $id1 = $this->factory->category->create(); 257 $this->factory->category->create(); 258 $id3 = $this->factory->category->create(); 259 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 260 // Orderby=>asc 261 $request->set_param( 'include', array( $id3, $id1 ) ); 286 $id2 = $this->factory->category->create(); 287 288 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 289 290 // 'orderby' => 'asc'. 291 $request->set_param( 'include', array( $id2, $id1 ) ); 262 292 $response = rest_get_server()->dispatch( $request ); 263 293 $data = $response->get_data(); 264 294 $this->assertEquals( 2, count( $data ) ); 265 295 $this->assertEquals( $id1, $data[0]['id'] ); 266 // Orderby=>include 296 297 // 'orderby' => 'include'. 267 298 $request->set_param( 'orderby', 'include' ); 268 299 $response = rest_get_server()->dispatch( $request ); 269 300 $data = $response->get_data(); 270 301 $this->assertEquals( 2, count( $data ) ); 271 $this->assertEquals( $id 3, $data[0]['id'] );302 $this->assertEquals( $id2, $data[0]['id'] ); 272 303 } 273 304 274 305 public function test_get_items_exclude_query() { 275 $id1 = $this->factory->category->create(); 276 $id2 = $this->factory->category->create(); 277 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 278 $response = rest_get_server()->dispatch( $request ); 279 $data = $response->get_data(); 280 $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) ); 281 $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) ); 306 $id1 = $this->factory->category->create(); 307 $id2 = $this->factory->category->create(); 308 309 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 310 $request->set_param( 'per_page', self::$per_page ); 311 $response = rest_get_server()->dispatch( $request ); 312 $data = $response->get_data(); 313 $ids = wp_list_pluck( $data, 'id' ); 314 $this->assertTrue( in_array( $id1, $ids, true ) ); 315 $this->assertTrue( in_array( $id2, $ids, true ) ); 316 282 317 $request->set_param( 'exclude', array( $id2 ) ); 283 318 $response = rest_get_server()->dispatch( $request ); 284 319 $data = $response->get_data(); 285 $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) ); 286 $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) ); 320 $ids = wp_list_pluck( $data, 'id' ); 321 $this->assertTrue( in_array( $id1, $ids, true ) ); 322 $this->assertFalse( in_array( $id2, $ids, true ) ); 287 323 } 288 324 … … 290 326 $this->factory->category->create( array( 'name' => 'Apple' ) ); 291 327 $this->factory->category->create( array( 'name' => 'Banana' ) ); 328 292 329 /* 293 330 * Tests: … … 305 342 $this->assertEquals( 1, count( $data ) ); 306 343 $this->assertEquals( 'Uncategorized', $data[0]['name'] ); 344 307 345 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 308 346 $request->set_param( 'orderby', 'name' ); … … 320 358 $this->factory->category->create( array( 'name' => 'Apple' ) ); 321 359 $this->factory->category->create( array( 'name' => 'Banana' ) ); 322 // defaults to orderby=name, order=asc 360 361 // Defaults to 'orderby' => 'name', 'order' => 'asc'. 323 362 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 324 363 $response = rest_get_server()->dispatch( $request ); … … 328 367 $this->assertEquals( 'Banana', $data[1]['name'] ); 329 368 $this->assertEquals( 'Cantaloupe', $data[2]['name'] ); 330 $this->assertEquals( 'Uncategorized', $data[3]['name'] ); 331 // orderby=id, with default order=asc369 370 // 'orderby' => 'id', with default 'order' => 'asc'. 332 371 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 333 372 $request->set_param( 'orderby', 'id' ); … … 335 374 $this->assertEquals( 200, $response->get_status() ); 336 375 $data = $response->get_data(); 337 $this->assertEquals( ' Uncategorized', $data[0]['name'] );338 $this->assertEquals( 'Ca ntaloupe', $data[1]['name'] );339 $this->assertEquals( ' Apple', $data[2]['name'] );340 $this->assertEquals( 'Banana', $data[3]['name'] ); 341 // orderby=id, order=desc376 $this->assertEquals( 'Category 0', $data[1]['name'] ); 377 $this->assertEquals( 'Category 1', $data[2]['name'] ); 378 $this->assertEquals( 'Category 2', $data[3]['name'] ); 379 380 // 'orderby' => 'id', 'order' => 'desc'. 342 381 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 343 382 $request->set_param( 'orderby', 'id' ); … … 487 526 $this->factory->category->create( array( 'name' => 'Apple' ) ); 488 527 $this->factory->category->create( array( 'name' => 'Banana' ) ); 528 489 529 /* 490 530 * Tests: … … 498 538 $this->assertEquals( 1, count( $data ) ); 499 539 $this->assertEquals( 'Apple', $data[0]['name'] ); 540 500 541 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 501 542 $request->set_param( 'search', 'Garbage' ); … … 509 550 $this->factory->category->create( array( 'name' => 'Apple' ) ); 510 551 $this->factory->category->create( array( 'name' => 'Banana' ) ); 552 511 553 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 512 554 $request->set_param( 'slug', 'apple' ); … … 526 568 ) 527 569 ); 570 528 571 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 529 572 $request->set_param( 'parent', $category1 ); … … 535 578 536 579 public function test_get_terms_invalid_parent_arg() { 537 $category1 = $this->factory->category->create( array( 'name' => 'Parent' ) );538 $this->factory->category->create(539 array(540 'name' => 'Child',541 'parent' => $category1,542 )543 );544 580 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 545 581 $request->set_param( 'parent', 'invalid-parent' ); … … 575 611 576 612 public function test_get_terms_pagination_headers() { 577 // Start of the index + Uncategorized default term 578 for ( $i = 0; $i < 49; $i++ ) { 579 $this->factory->category->create( 580 array( 581 'name' => "Category {$i}", 582 ) 583 ); 584 } 613 $total_categories = self::$total_categories; 614 $total_pages = (int) ceil( $total_categories / 10 ); 615 616 // Start of the index + Uncategorized default term. 585 617 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 586 618 $response = rest_get_server()->dispatch( $request ); 587 619 $headers = $response->get_headers(); 588 $this->assertEquals( 50, $headers['X-WP-Total'] );589 $this->assertEquals( 5, $headers['X-WP-TotalPages'] );620 $this->assertEquals( $total_categories, $headers['X-WP-Total'] ); 621 $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] ); 590 622 $this->assertCount( 10, $response->get_data() ); 591 623 $next_link = add_query_arg( … … 597 629 $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) ); 598 630 $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] ); 599 // 3rd page 600 $this->factory->category->create( 601 array( 602 'name' => 'Category 51', 603 ) 604 ); 631 632 // 3rd page. 633 $this->factory->category->create(); 634 $total_categories++; 635 $total_pages++; 605 636 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 606 637 $request->set_param( 'page', 3 ); 607 638 $response = rest_get_server()->dispatch( $request ); 608 639 $headers = $response->get_headers(); 609 $this->assertEquals( 51, $headers['X-WP-Total'] );610 $this->assertEquals( 6, $headers['X-WP-TotalPages'] );640 $this->assertEquals( $total_categories, $headers['X-WP-Total'] ); 641 $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] ); 611 642 $this->assertCount( 10, $response->get_data() ); 612 643 $prev_link = add_query_arg( … … 624 655 ); 625 656 $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] ); 626 // Last page 627 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 628 $request->set_param( 'page', 6 ); 657 658 // Last page. 659 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 660 $request->set_param( 'page', $total_pages ); 629 661 $response = rest_get_server()->dispatch( $request ); 630 662 $headers = $response->get_headers(); 631 $this->assertEquals( 51, $headers['X-WP-Total'] );632 $this->assertEquals( 6, $headers['X-WP-TotalPages'] );663 $this->assertEquals( $total_categories, $headers['X-WP-Total'] ); 664 $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] ); 633 665 $this->assertCount( 1, $response->get_data() ); 634 666 $prev_link = add_query_arg( 635 667 array( 636 'page' => 5,668 'page' => $total_pages - 1, 637 669 ), 638 670 rest_url( 'wp/v2/categories' ) … … 640 672 $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] ); 641 673 $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) ); 642 // Out of bounds 643 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 644 $request->set_param( 'page', 8 ); 674 675 // Out of bounds. 676 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 677 $request->set_param( 'page', 100 ); 645 678 $response = rest_get_server()->dispatch( $request ); 646 679 $headers = $response->get_headers(); 647 $this->assertEquals( 51, $headers['X-WP-Total'] );648 $this->assertEquals( 6, $headers['X-WP-TotalPages'] );680 $this->assertEquals( $total_categories, $headers['X-WP-Total'] ); 681 $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] ); 649 682 $this->assertCount( 0, $response->get_data() ); 650 683 $prev_link = add_query_arg( 651 684 array( 652 'page' => 6,685 'page' => $total_pages, 653 686 ), 654 687 rest_url( 'wp/v2/categories' ) … … 659 692 660 693 public function test_get_items_per_page_exceeds_number_of_items() { 661 // Start of the index + Uncategorized default term 662 for ( $i = 0; $i < 17; $i++ ) { 663 $this->factory->category->create( 664 array( 665 'name' => "Category {$i}", 666 ) 667 ); 668 } 694 // Start of the index + Uncategorized default term. 669 695 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 670 696 $request->set_param( 'page', 1 ); … … 672 698 $response = rest_get_server()->dispatch( $request ); 673 699 $headers = $response->get_headers(); 674 $this->assertEquals( 18, $headers['X-WP-Total'] );700 $this->assertEquals( self::$total_categories, $headers['X-WP-Total'] ); 675 701 $this->assertEquals( 1, $headers['X-WP-TotalPages'] ); 676 $this->assertCount( 18, $response->get_data() ); 702 $this->assertCount( self::$total_categories, $response->get_data() ); 703 677 704 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' ); 678 705 $request->set_param( 'page', 2 ); … … 680 707 $response = rest_get_server()->dispatch( $request ); 681 708 $headers = $response->get_headers(); 682 $this->assertEquals( 18, $headers['X-WP-Total'] );709 $this->assertEquals( self::$total_categories, $headers['X-WP-Total'] ); 683 710 $this->assertEquals( 1, $headers['X-WP-TotalPages'] ); 684 711 $this->assertCount( 0, $response->get_data() ); … … 738 765 public function test_get_item_invalid_permission_for_context() { 739 766 wp_set_current_user( 0 ); 767 740 768 $request = new WP_REST_Request( 'GET', '/wp/v2/categories/1' ); 741 769 $request->set_param( 'context', 'edit' ); … … 760 788 public function test_get_item_incorrect_taxonomy() { 761 789 register_taxonomy( 'robin', 'post' ); 762 $term1 = $this->factory->term->create(790 $term1 = $this->factory->term->create( 763 791 array( 764 792 'name' => 'Cape', … … 766 794 ) 767 795 ); 796 768 797 $request = new WP_REST_Request( 'GET', '/wp/v2/categories/' . $term1 ); 769 798 $response = rest_get_server()->dispatch( $request ); … … 773 802 public function test_create_item() { 774 803 wp_set_current_user( self::$administrator ); 804 775 805 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 776 806 $request->set_param( 'name', 'My Awesome Term' ); … … 792 822 public function test_create_item_term_already_exists() { 793 823 wp_set_current_user( self::$administrator ); 824 794 825 $existing_id = $this->factory->category->create( array( 'name' => 'Existing' ) ); 795 826 … … 808 839 public function test_create_item_invalid_taxonomy() { 809 840 wp_set_current_user( self::$administrator ); 841 810 842 $request = new WP_REST_Request( 'POST', '/wp/v2/invalid-taxonomy' ); 811 843 $request->set_param( 'name', 'Invalid Taxonomy' ); … … 816 848 public function test_create_item_incorrect_permissions() { 817 849 wp_set_current_user( self::$subscriber ); 850 818 851 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 819 852 $request->set_param( 'name', 'Incorrect permissions' ); … … 824 857 public function test_create_item_incorrect_permissions_contributor() { 825 858 wp_set_current_user( self::$contributor ); 859 826 860 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 827 861 $request->set_param( 'name', 'Incorrect permissions' ); … … 832 866 public function test_create_item_missing_arguments() { 833 867 wp_set_current_user( self::$administrator ); 868 834 869 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 835 870 $response = rest_get_server()->dispatch( $request ); … … 839 874 public function test_create_item_with_parent() { 840 875 wp_set_current_user( self::$administrator ); 841 $parent = wp_insert_term( 'test-category', 'category' ); 876 877 $parent = wp_insert_term( 'test-category', 'category' ); 878 842 879 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 843 880 $request->set_param( 'name', 'My Awesome Term' ); … … 851 888 public function test_create_item_invalid_parent() { 852 889 wp_set_current_user( self::$administrator ); 890 853 891 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); 854 892 … … 862 900 public function test_create_item_with_no_parent() { 863 901 wp_set_current_user( self::$administrator ); 864 $parent = 0; 902 903 $parent = 0; 904 865 905 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' ); 866 906 $request->set_param( 'name', 'My Awesome Term' ); … … 874 914 public function test_update_item() { 875 915 wp_set_current_user( self::$administrator ); 916 876 917 $orig_args = array( 877 918 'name' => 'Original Name', … … 879 920 'slug' => 'original-slug', 880 921 ); 881 $term = get_term_by( 'id', $this->factory->category->create( $orig_args ), 'category' ); 882 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id ); 922 923 $term = get_term_by( 'id', $this->factory->category->create( $orig_args ), 'category' ); 924 925 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id ); 883 926 $request->set_param( 'name', 'New Name' ); 884 927 $request->set_param( 'description', 'New Description' ); … … 905 948 public function test_update_item_invalid_taxonomy() { 906 949 wp_set_current_user( self::$administrator ); 950 907 951 $request = new WP_REST_Request( 'POST', '/wp/v2/invalid-taxonomy/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ); 908 952 $request->set_param( 'name', 'Invalid Taxonomy' ); … … 913 957 public function test_update_item_invalid_term() { 914 958 wp_set_current_user( self::$administrator ); 959 915 960 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ); 916 961 $request->set_param( 'name', 'Invalid Term' ); … … 921 966 public function test_update_item_incorrect_permissions() { 922 967 wp_set_current_user( self::$subscriber ); 923 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); 968 969 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); 970 924 971 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id ); 925 972 $request->set_param( 'name', 'Incorrect permissions' ); … … 930 977 public function test_update_item_parent() { 931 978 wp_set_current_user( self::$administrator ); 979 932 980 $parent = get_term_by( 'id', $this->factory->category->create(), 'category' ); 933 981 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); … … 971 1019 public function test_update_item_invalid_parent() { 972 1020 wp_set_current_user( self::$administrator ); 1021 973 1022 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); 974 1023 … … 981 1030 public function test_delete_item() { 982 1031 wp_set_current_user( self::$administrator ); 983 $term = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' ); 1032 1033 $term = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' ); 1034 984 1035 $request = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . $term->term_id ); 985 1036 $request->set_param( 'force', true ); … … 993 1044 public function test_delete_item_no_trash() { 994 1045 wp_set_current_user( self::$administrator ); 1046 995 1047 $term = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' ); 996 1048 … … 1006 1058 public function test_delete_item_invalid_taxonomy() { 1007 1059 wp_set_current_user( self::$administrator ); 1060 1008 1061 $request = new WP_REST_Request( 'DELETE', '/wp/v2/invalid-taxonomy/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ); 1009 1062 $response = rest_get_server()->dispatch( $request ); … … 1013 1066 public function test_delete_item_invalid_term() { 1014 1067 wp_set_current_user( self::$administrator ); 1068 1015 1069 $request = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ); 1016 1070 $response = rest_get_server()->dispatch( $request ); … … 1020 1074 public function test_delete_item_incorrect_permissions() { 1021 1075 wp_set_current_user( self::$subscriber ); 1076 1022 1077 $term = get_term_by( 'id', $this->factory->category->create(), 'category' ); 1023 1078 $request = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . $term->term_id );
Note: See TracChangeset
for help on using the changeset viewer.