| @@ 422-481 (lines=60) @@ | ||
| 419 | $this->assertErrorResponse('rest_no_route', $response, 404); |
|
| 420 | } |
|
| 421 | ||
| 422 | public function test_get_terms_pagination_headers() |
|
| 423 | { |
|
| 424 | // Start of the index |
|
| 425 | for ( $i = 0; $i < 50; $i++ ) { |
|
| 426 | $this->factory->tag->create( |
|
| 427 | array( |
|
| 428 | 'name' => "Tag {$i}", |
|
| 429 | ) |
|
| 430 | ); |
|
| 431 | } |
|
| 432 | $request = new WP_REST_Request('GET', '/wp/v2/tags'); |
|
| 433 | $response = $this->server->dispatch($request); |
|
| 434 | $headers = $response->get_headers(); |
|
| 435 | $this->assertEquals(50, $headers['X-WP-Total']); |
|
| 436 | $this->assertEquals(5, $headers['X-WP-TotalPages']); |
|
| 437 | $next_link = add_query_arg( |
|
| 438 | array( |
|
| 439 | 'page' => 2, |
|
| 440 | ), rest_url('wp/v2/tags') |
|
| 441 | ); |
|
| 442 | $this->assertFalse(stripos($headers['Link'], 'rel="prev"')); |
|
| 443 | $this->assertContains('<' . $next_link . '>; rel="next"', $headers['Link']); |
|
| 444 | // 3rd page |
|
| 445 | $this->factory->tag->create( |
|
| 446 | array( |
|
| 447 | 'name' => 'Tag 51', |
|
| 448 | ) |
|
| 449 | ); |
|
| 450 | $request = new WP_REST_Request('GET', '/wp/v2/tags'); |
|
| 451 | $request->set_param('page', 3); |
|
| 452 | $response = $this->server->dispatch($request); |
|
| 453 | $headers = $response->get_headers(); |
|
| 454 | $this->assertEquals(51, $headers['X-WP-Total']); |
|
| 455 | $this->assertEquals(6, $headers['X-WP-TotalPages']); |
|
| 456 | $prev_link = add_query_arg( |
|
| 457 | array( |
|
| 458 | 'page' => 2, |
|
| 459 | ), rest_url('wp/v2/tags') |
|
| 460 | ); |
|
| 461 | $this->assertContains('<' . $prev_link . '>; rel="prev"', $headers['Link']); |
|
| 462 | $next_link = add_query_arg( |
|
| 463 | array( |
|
| 464 | 'page' => 4, |
|
| 465 | ), rest_url('wp/v2/tags') |
|
| 466 | ); |
|
| 467 | $this->assertContains('<' . $next_link . '>; rel="next"', $headers['Link']); |
|
| 468 | // Last page |
|
| 469 | $request = new WP_REST_Request('GET', '/wp/v2/tags'); |
|
| 470 | $request->set_param('page', 6); |
|
| 471 | $response = $this->server->dispatch($request); |
|
| 472 | $headers = $response->get_headers(); |
|
| 473 | $this->assertEquals(51, $headers['X-WP-Total']); |
|
| 474 | $this->assertEquals(6, $headers['X-WP-TotalPages']); |
|
| 475 | $prev_link = add_query_arg( |
|
| 476 | array( |
|
| 477 | 'page' => 5, |
|
| 478 | ), rest_url('wp/v2/tags') |
|
| 479 | ); |
|
| 480 | $this->assertContains('<' . $prev_link . '>; rel="prev"', $headers['Link']); |
|
| 481 | $this->assertFalse(stripos($headers['Link'], 'rel="next"')); |
|
| 482 | // Out of bounds |
|
| 483 | $request = new WP_REST_Request('GET', '/wp/v2/tags'); |
|
| 484 | $request->set_param('page', 8); |
|
| @@ 192-252 (lines=61) @@ | ||
| 189 | /** |
|
| 190 | * @group test |
|
| 191 | */ |
|
| 192 | public function test_get_items_pagination_headers() |
|
| 193 | { |
|
| 194 | wp_set_current_user(self::$user); |
|
| 195 | // Start of the index, including the three existing users |
|
| 196 | for ( $i = 0; $i < 47; $i++ ) { |
|
| 197 | $this->factory->user->create( |
|
| 198 | array( |
|
| 199 | 'name' => "User {$i}", |
|
| 200 | ) |
|
| 201 | ); |
|
| 202 | } |
|
| 203 | $request = new WP_REST_Request('GET', '/wp/v2/users'); |
|
| 204 | $response = $this->server->dispatch($request); |
|
| 205 | $headers = $response->get_headers(); |
|
| 206 | $this->assertEquals(51, $headers['X-WP-Total']); |
|
| 207 | $this->assertEquals(6, $headers['X-WP-TotalPages']); |
|
| 208 | $next_link = add_query_arg( |
|
| 209 | array( |
|
| 210 | 'page' => 2, |
|
| 211 | ), rest_url('wp/v2/users') |
|
| 212 | ); |
|
| 213 | $this->assertFalse(stripos($headers['Link'], 'rel="prev"')); |
|
| 214 | $this->assertContains('<' . $next_link . '>; rel="next"', $headers['Link']); |
|
| 215 | // 3rd page |
|
| 216 | $this->factory->user->create( |
|
| 217 | array( |
|
| 218 | 'name' => 'User 51', |
|
| 219 | ) |
|
| 220 | ); |
|
| 221 | $request = new WP_REST_Request('GET', '/wp/v2/users'); |
|
| 222 | $request->set_param('page', 3); |
|
| 223 | $response = $this->server->dispatch($request); |
|
| 224 | $headers = $response->get_headers(); |
|
| 225 | $this->assertEquals(52, $headers['X-WP-Total']); |
|
| 226 | $this->assertEquals(6, $headers['X-WP-TotalPages']); |
|
| 227 | $prev_link = add_query_arg( |
|
| 228 | array( |
|
| 229 | 'page' => 2, |
|
| 230 | ), rest_url('wp/v2/users') |
|
| 231 | ); |
|
| 232 | $this->assertContains('<' . $prev_link . '>; rel="prev"', $headers['Link']); |
|
| 233 | $next_link = add_query_arg( |
|
| 234 | array( |
|
| 235 | 'page' => 4, |
|
| 236 | ), rest_url('wp/v2/users') |
|
| 237 | ); |
|
| 238 | $this->assertContains('<' . $next_link . '>; rel="next"', $headers['Link']); |
|
| 239 | // Last page |
|
| 240 | $request = new WP_REST_Request('GET', '/wp/v2/users'); |
|
| 241 | $request->set_param('page', 6); |
|
| 242 | $response = $this->server->dispatch($request); |
|
| 243 | $headers = $response->get_headers(); |
|
| 244 | $this->assertEquals(52, $headers['X-WP-Total']); |
|
| 245 | $this->assertEquals(6, $headers['X-WP-TotalPages']); |
|
| 246 | $prev_link = add_query_arg( |
|
| 247 | array( |
|
| 248 | 'page' => 5, |
|
| 249 | ), rest_url('wp/v2/users') |
|
| 250 | ); |
|
| 251 | $this->assertContains('<' . $prev_link . '>; rel="prev"', $headers['Link']); |
|
| 252 | $this->assertFalse(stripos($headers['Link'], 'rel="next"')); |
|
| 253 | // Out of bounds |
|
| 254 | $request = new WP_REST_Request('GET', '/wp/v2/users'); |
|
| 255 | $request->set_param('page', 8); |
|