Make WordPress Core

Ticket #47024: 47024.3.diff

File 47024.3.diff, 3.6 KB (added by kadamwhite, 4 years ago)

Adjust new tests to correctly test the condition being changed

  • src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php

    diff --git src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
    index 0320efaae9..376959ad2a 100644
    class WP_REST_Comments_Controller extends WP_REST_Controller { 
    16721672                        return false;
    16731673                }
    16741674
    1675                 if ( ! current_user_can( 'moderate_comments' ) ) {
    1676                         return false;
     1675                if ( current_user_can( 'moderate_comments' ) ) {
     1676                        return true;
    16771677                }
    16781678
    16791679                return current_user_can( 'edit_comment', $comment->comment_ID );
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

    diff --git tests/phpunit/tests/rest-api/rest-comments-controller.php tests/phpunit/tests/rest-api/rest-comments-controller.php
    index d1fe7aa34a..2de8e2ddcc 100644
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    1313        protected static $superadmin_id;
    1414        protected static $admin_id;
    1515        protected static $editor_id;
     16        protected static $moderator_id;
    1617        protected static $subscriber_id;
    1718        protected static $author_id;
    1819
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    2728        protected $endpoint;
    2829
    2930        public static function wpSetUpBeforeClass( $factory ) {
     31                add_role( 'comment_moderator', 'Comment Moderator', array(
     32                        'read'              => true,
     33                        'moderate_comments' => true,
     34                ) );
     35
    3036                self::$superadmin_id = $factory->user->create(
    3137                        array(
    3238                                'role'       => 'administrator',
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    4349                                'role' => 'editor',
    4450                        )
    4551                );
     52                self::$moderator_id  = $factory->user->create(
     53                        array(
     54                                'role' => 'comment_moderator',
     55                        )
     56                );
    4657                self::$subscriber_id = $factory->user->create(
    4758                        array(
    4859                                'role' => 'subscriber',
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    98109        }
    99110
    100111        public static function wpTearDownAfterClass() {
     112                remove_role( 'comment_moderator' );
     113
    101114                self::delete_user( self::$superadmin_id );
    102115                self::delete_user( self::$admin_id );
    103116                self::delete_user( self::$editor_id );
     117                self::delete_user( self::$moderator_id );
    104118                self::delete_user( self::$subscriber_id );
    105119                self::delete_user( self::$author_id );
    106120
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    24802494                $this->assertErrorResponse( 'rest_cannot_edit', $response, 401 );
    24812495        }
    24822496
     2497        /**
     2498         * @ticket 47024
     2499         */
     2500        public function test_update_comment_when_can_moderate_comments() {
     2501                wp_set_current_user( self::$moderator_id );
     2502
     2503                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     2504                $params  = array(
     2505                        'content' => 'Updated comment.',
     2506                        'date'    => '2019-10-07T23:14:25',
     2507                );
     2508                $request->add_header( 'content-type', 'application/json' );
     2509                $request->set_body( wp_json_encode( $params ) );
     2510
     2511                $response = rest_get_server()->dispatch( $request );
     2512                $this->assertEquals( 200, $response->get_status() );
     2513
     2514                $comment = $response->get_data();
     2515                $updated = get_comment( self::$approved_id );
     2516
     2517                $this->assertEquals( $params['content'], $updated->comment_content );
     2518                $this->assertEquals( self::$post_id, $comment['post'] );
     2519                $this->assertEquals( '2019-10-07T23:14:25', $comment['date'] );
     2520        }
     2521
    24832522        public function test_update_comment_private_post_invalid_permission() {
    24842523                $private_comment_id = $this->factory->comment->create(
    24852524                        array(