WordPress.org

Make WordPress Core

Ticket #38700: 38700.5.diff

File 38700.5.diff, 5.7 KB (added by jnylen0, 3 years ago)

Handle $wpdb->update returning false

  • 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 2b7057c..3f079c7 100644
    a b class WP_REST_Comments_Controller extends WP_REST_Controller { 
    624624                        return $prepared_args;
    625625                }
    626626
     627                if ( ! empty( $prepared_args['comment_post_ID'] ) ) {
     628                        $post = get_post( $prepared_args['comment_post_ID'] );
     629                        if ( empty( $post ) ) {
     630                                return new WP_Error( 'rest_comment_invalid_post_id', __( 'Invalid comment post id.' ), array( 'status' => 404 ) );
     631                        }
     632                }
     633
    627634                if ( empty( $prepared_args ) && isset( $request['status'] ) ) {
    628635                        // Only the comment status is being changed.
    629636                        $change = $this->handle_status_param( $request['status'], $comment );
    class WP_REST_Comments_Controller extends WP_REST_Controller { 
    646653
    647654                        $updated = wp_update_comment( wp_slash( (array) $prepared_args ) );
    648655
    649                         if ( 0 === $updated ) {
     656                        if ( false === $updated ) {
    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 e225cbc..4571f88 100644
    a b class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    16181618                $this->assertEquals( '2014-11-07T10:14:25', $comment['date'] );
    16191619        }
    16201620
     1621        public function test_update_item_no_change() {
     1622                wp_set_current_user( self::$admin_id );
     1623                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     1624                $response = $this->server->dispatch( $request );
     1625                $this->assertEquals( 200, $response->get_status() );
     1626        }
     1627
    16211628        public function test_update_comment_status() {
    16221629                wp_set_current_user( self::$admin_id );
    16231630
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    17691776                $this->assertErrorResponse( 'rest_comment_invalid_id', $response, 404 );
    17701777        }
    17711778
     1779        public function test_update_comment_invalid_post_id() {
     1780                wp_set_current_user( self::$admin_id );
     1781
     1782                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     1783                $request->set_param( 'post', REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
     1784                $request->set_param( 'content', 'avoid rest_comment_content_required error' );
     1785
     1786                $response = $this->server->dispatch( $request );
     1787                $this->assertErrorResponse( 'rest_comment_invalid_post_id', $response, 404 );
     1788        }
     1789
    17721790        public function test_update_comment_invalid_permission() {
    17731791                wp_set_current_user( 0 );
    17741792
  • 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 57d5deb..342deae 100644
    a b class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    15651565                $this->assertEquals( $params['excerpt'], $post->post_excerpt );
    15661566        }
    15671567
     1568        public function test_update_item_no_change() {
     1569                wp_set_current_user( self::$editor_id );
     1570                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
     1571                $response = $this->server->dispatch( $request );
     1572                $this->check_update_post_response( $response );
     1573        }
     1574
    15681575        public function test_rest_update_post() {
    15691576                wp_set_current_user( self::$editor_id );
    15701577
  • 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 08a1597..020d377 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' ) );