WordPress.org

Make WordPress Core

Ticket #43636: clean_up_unit_test.diff

File clean_up_unit_test.diff, 3.0 KB (added by mattkeys, 16 months ago)

Same as the last patch but with cleaner unit test code

  • src/wp-includes/class-wp-query.php

    diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php
    index f8ead26246..bd74746a2b 100644
    a b class WP_Query { 
    18551855                        case 'id=>parent':
    18561856                                $fields = "{$wpdb->posts}.ID, {$wpdb->posts}.post_parent";
    18571857                                break;
     1858                        case 'id=>author_id':
     1859                                $fields = "{$wpdb->posts}.ID, {$wpdb->posts}.post_author";
     1860                                break;
     1861                        case 'id=>title':
     1862                                $fields = "{$wpdb->posts}.ID, {$wpdb->posts}.post_title";
     1863                                break;
    18581864                        default:
    18591865                                $fields = "{$wpdb->posts}.*";
    18601866                }
    class WP_Query { 
    29072913                        return $r;
    29082914                }
    29092915
     2916                if ( 'id=>author_id' == $q['fields'] ) {
     2917                        if ( null === $this->posts ) {
     2918                                $this->posts = $wpdb->get_results( $this->request );
     2919                        }
     2920
     2921                        $this->post_count = count( $this->posts );
     2922                        $this->set_found_posts( $q, $limits );
     2923
     2924                        $r = array();
     2925                        foreach ( $this->posts as $key => $post ) {
     2926                                $this->posts[ $key ]->ID = (int) $post->ID;
     2927                                $this->posts[ $key ]->post_author = (int) $post->post_author;
     2928
     2929                                $r[ (int) $post->ID ] = (int) $post->post_author;
     2930                        }
     2931
     2932                        return $r;
     2933                }
     2934
     2935                if ( 'id=>title' == $q['fields'] ) {
     2936                        if ( null === $this->posts ) {
     2937                                $this->posts = $wpdb->get_results( $this->request );
     2938                        }
     2939
     2940                        $this->post_count = count( $this->posts );
     2941                        $this->set_found_posts( $q, $limits );
     2942
     2943                        $r = array();
     2944                        foreach ( $this->posts as $key => $post ) {
     2945                                $this->posts[ $key ]->ID = (int) $post->ID;
     2946                                $this->posts[ $key ]->post_title = sanitize_text_field( $post->post_title );
     2947
     2948                                $r[ (int) $post->ID ] = sanitize_text_field( $post->post_title );
     2949                        }
     2950
     2951                        return $r;
     2952                }
     2953
    29102954                if ( null === $this->posts ) {
    29112955                        $split_the_query = ( $old_request == $this->request && "{$wpdb->posts}.*" == $fields && ! empty( $limits ) && $q['posts_per_page'] < 500 );
    29122956
  • tests/phpunit/tests/query.php

    diff --git a/tests/phpunit/tests/query.php b/tests/phpunit/tests/query.php
    index 32f3603537..4390dd10b7 100644
    a b class Tests_Query extends WP_UnitTestCase { 
    685685                $this->assertSame( 'tax1', get_query_var( 'taxonomy' ) );
    686686                $this->assertSame( 'term1', get_query_var( 'term' ) );
    687687        }
     688
     689        /**
     690         * @ticket 43636
     691         */
     692        public function test_fields_author_ids_contains_only_post_ids_and_author_ids() {
     693                $user_id = $this->factory->user->create( array( 'role' => 'editor' ) );
     694                $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
     695
     696                $q = get_posts( array( 'fields' => 'id=>author_id' ) );
     697
     698                $this->assertEquals( $q[ $post_id ], $user_id );
     699        }
     700
     701        /**
     702         * @ticket 43636
     703         */
     704        public function test_fields_titles_contains_only_post_ids_and_titles() {
     705                $post_title     = 'Test fields titles contains only post ids and titles';
     706                $post_id        = $this->factory->post->create( array( 'post_title' => $post_title ) );
     707
     708                $q = get_posts( array( 'fields' => 'id=>title' ) );
     709
     710                $this->assertEquals( $q[ $post_id ], $post_title );
     711        }
     712
    688713}