WordPress.org

Make WordPress Core

Ticket #38700: 38700.2.diff

File 38700.2.diff, 4.9 KB (added by jnylen0, 3 years ago)

Cleaner patch using did_action( 'edit_comment' )

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

    diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
    index e6f7920..4065cdd 100644
    a b class WP_REST_Comments_Controller extends WP_REST_Controller { 
    644644                                return new WP_Error( $error_code, __( 'Comment field exceeds maximum length allowed.' ), array( 'status' => 400 ) );
    645645                        }
    646646
     647                        // wp_update_comment() can return 0 if a real error occurs (this should be an API error)
     648                        // or if no DB rows were updated (this should not be an API error).
     649
     650                        /** This action is documented in wp-includes/comment.php */
     651                        $edit_comment_count = did_action( 'edit_comment' );
    647652                        $updated = wp_update_comment( $prepared_args );
     653                        /** This action is documented in wp-includes/comment.php */
     654                        $edit_comment_count = did_action( 'edit_comment' ) - $edit_comment_count;
    648655
    649                         if ( 0 === $updated ) {
     656                        if ( 0 === $updated && 0 === $edit_comment_count ) {
    650657                                return new WP_Error( 'rest_comment_failed_edit', __( 'Updating comment failed.' ), array( 'status' => 500 ) );
    651658                        }
    652659
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-comments-controller.php b/tests/phpunit/tests/rest-api/rest-comments-controller.php
    index a8526c8..23d6e49 100644
    a b class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    15861586                $this->assertEquals( '2014-11-07T10:14:25', $comment['date'] );
    15871587        }
    15881588
     1589        public function test_update_item_no_change() {
     1590                wp_set_current_user( self::$admin_id );
     1591                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     1592                $response = $this->server->dispatch( $request );
     1593                $this->assertEquals( 200, $response->get_status() );
     1594        }
     1595
    15891596        public function test_update_comment_status() {
    15901597                wp_set_current_user( self::$admin_id );
    15911598
  • tests/phpunit/tests/rest-api/rest-posts-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-posts-controller.php b/tests/phpunit/tests/rest-api/rest-posts-controller.php
    index cdd5ec0..8a0948f 100644
    a b class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    15561556                $this->assertEquals( $params['excerpt'], $post->post_excerpt );
    15571557        }
    15581558
     1559        public function test_update_item_no_change() {
     1560                wp_set_current_user( self::$editor_id );
     1561                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
     1562                $response = $this->server->dispatch( $request );
     1563                $this->check_update_post_response( $response );
     1564        }
     1565
    15591566        public function test_rest_update_post() {
    15601567                wp_set_current_user( self::$editor_id );
    15611568
  • tests/phpunit/tests/rest-api/rest-tags-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-tags-controller.php b/tests/phpunit/tests/rest-api/rest-tags-controller.php
    index df2c030..702f6f8 100644
    a b class WP_Test_REST_Tags_Controller extends WP_Test_REST_Controller_Testcase { 
    542542                $this->assertEquals( 'new-slug', $data['slug'] );
    543543        }
    544544
     545        public function test_update_item_no_change() {
     546                wp_set_current_user( self::$administrator );
     547                $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
     548                $request = new WP_REST_Request( 'PUT', '/wp/v2/tags/' . $term->term_id );
     549                $response = $this->server->dispatch( $request );
     550                $this->assertEquals( 200, $response->get_status() );
     551        }
     552
    545553        public function test_update_item_invalid_term() {
    546554                wp_set_current_user( self::$administrator );
    547555                $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
  • tests/phpunit/tests/rest-api/rest-users-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-users-controller.php b/tests/phpunit/tests/rest-api/rest-users-controller.php
    index 09e11a6..6108a7b 100644
    a b class WP_Test_REST_Users_Controller extends WP_Test_REST_Controller_Testcase { 
    840840                $this->assertEquals( $pw_before, $user->user_pass );
    841841        }
    842842
     843        public function test_update_item_no_change() {
     844                $this->allow_user_to_manage_multisite();
     845                wp_set_current_user( self::$user );
     846                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) );
     847                $response = $this->server->dispatch( $request );
     848                $this->assertEquals( 200, $response->get_status() );
     849        }
     850
    843851        public function test_update_item_existing_email() {
    844852                $user1 = $this->factory->user->create( array( 'user_login' => 'test_json_user', 'user_email' => 'testjson@example.com' ) );
    845853                $user2 = $this->factory->user->create( array( 'user_login' => 'test_json_user2', 'user_email' => 'testjson2@example.com' ) );