| 544 | // This is a test to show how it currently works, it's for an example only. |
| 545 | public function test_get_items_type_arg() { |
| 546 | // Authorized admin user. |
| 547 | wp_set_current_user( self::$admin_id ); |
| 548 | $comment_type = 'foo'; |
| 549 | $comment_type_2 = 'bar'; |
| 550 | $args = array( |
| 551 | 'comment_approved' => 1, |
| 552 | 'comment_post_ID' => self::$post_id, |
| 553 | 'user_id' => self::$author_id, |
| 554 | 'comment_type' => $comment_type, |
| 555 | ); |
| 556 | |
| 557 | // Make comments with comment type 'foo'. |
| 558 | $this->factory->comment->create_post_comments( self::$post_id, 5, $args ); |
| 559 | // Make comments with comment type 'bar'. |
| 560 | $args['comment_type'] = $comment_type_2; |
| 561 | $this->factory->comment->create_post_comments( self::$post_id, 9, $args ); |
| 562 | |
| 563 | // Make one more comment with comment type 'comment'. |
| 564 | unset( $args['comment_type'] ); |
| 565 | $this->factory->comment->create( $args ); // This is the comment comment type and brings the total approved comment type comments to two. |
| 566 | |
| 567 | $request = new WP_REST_Request( 'GET', '/wp/v2/comments' ); |
| 568 | |
| 569 | // Admin user and no type quereied gets the two comments of comment type 'comment' (the default). |
| 570 | $response = rest_get_server()->dispatch( $request ); |
| 571 | $this->assertEquals( 200, $response->get_status() ); |
| 572 | $comments = $response->get_data(); |
| 573 | $headers = $response->get_headers(); |
| 574 | $this->assertCount( 2, $comments ); // This is the one approved comment. |
| 575 | |
| 576 | // Admin user comment type 'foo' gets those 5 comments. |
| 577 | $request->set_param( 'type', $comment_type ); |
| 578 | $response = rest_get_server()->dispatch( $request ); |
| 579 | $this->assertEquals( 200, $response->get_status() ); |
| 580 | $comments = $response->get_data(); |
| 581 | $this->assertCount( 5, $comments ); |
| 582 | $foo_type_ids = wp_list_pluck( $comments, 'id' ); // So we can iterate through them later :) . |
| 583 | |
| 584 | // Admin user comment type 'bar' gets the 9 comments. |
| 585 | $request->set_param( 'type', $comment_type_2 ); |
| 586 | $response = rest_get_server()->dispatch( $request ); |
| 587 | $this->assertEquals( 200, $response->get_status() ); |
| 588 | $comments = $response->get_data(); |
| 589 | $this->assertCount( 9, $comments ); |
| 590 | |
| 591 | // Unset the current user. |
| 592 | wp_set_current_user( 0 ); |
| 593 | |
| 594 | // This should get the comments of comment type 'comment'. |
| 595 | $request->set_param( 'type', 'comment' ); |
| 596 | $response = rest_get_server()->dispatch( $request ); |
| 597 | $this->assertEquals( 200, $response->get_status() ); |
| 598 | $comments = $response->get_data(); |
| 599 | $this->assertCount( 2, $comments ); |
| 600 | |
| 601 | // This should throw an error when it tries to get comments of comment type 'foo'. |
| 602 | $request->set_param( 'type', $comment_type ); |
| 603 | $response = rest_get_server()->dispatch( $request ); |
| 604 | $comments = $response->get_data(); |
| 605 | $this->assertErrorResponse( 'rest_forbidden_param', $response, 401 ); |
| 606 | |
| 607 | // But the unauthenticated user can see them at their individual endpoints. |
| 608 | foreach ( $foo_type_ids as $foo_type_id ) { |
| 609 | $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', $foo_type_id ) ); |
| 610 | $response = rest_get_server()->dispatch( $request ); |
| 611 | $this->assertEquals( 200, $response->get_status() ); |
| 612 | } |
| 613 | |
| 614 | } |