WordPress.org

Make WordPress Core

Ticket #39140: 39140.2.patch

File 39140.2.patch, 2.3 KB (added by Toro_Unit, 10 months ago)

Unit Test. (Fixed)

  • tests/phpunit/tests/query/taxQuery.php

     
    434434        }
    435435
    436436        /**
     437         * @ticket 39140
     438         */
     439        public function test_tax_query_single_query_multiple_hierarchical_terms_operator_and() {
     440                $europe = self::factory()->term->create(
     441                        array(
     442                                'taxonomy' => 'category',
     443                                'name'     => 'Europe',
     444                        )
     445                );
     446                $spain = self::factory()->term->create(
     447                        array(
     448                                'taxonomy' => 'category',
     449                                'name'     => 'Spain',
     450                                'parent'   => $europe,
     451                        )
     452                );
     453                $south_america = self::factory()->term->create(
     454                        array(
     455                                'taxonomy' => 'category',
     456                                'name'     => 'South America',
     457                        )
     458                );
     459                $argentina = self::factory()->term->create(
     460                        array(
     461                                'taxonomy' => 'category',
     462                                'name'     => 'Argentina',
     463                                'parent'   => $south_america,
     464                        )
     465                );
     466                $post_a = self::factory()->post->create( array( 'post_category' => array( $argentina ) ) );
     467                $post_b = self::factory()->post->create( array( 'post_category' => array( $spain ) ) );
     468                $post_c = self::factory()->post->create( array( 'post_category' => array( $argentina, $spain ) ) );
     469                $post_d = self::factory()->post->create( array( 'post_category' => array( $europe, $south_america ) ) );
     470
     471                $posts = get_posts(
     472                        array(
     473                                'fields'                 => 'ids',
     474                                'update_post_meta_cache' => false,
     475                                'update_post_term_cache' => false,
     476                                'tax_query'              => array(
     477                                        array(
     478                                                'taxonomy' => 'category',
     479                                                'field'    => 'id',
     480                                                'terms'    => array( $argentina, $spain ),
     481                                                'operator' => 'AND'
     482                                        ),
     483                                ),
     484                        )
     485                );
     486
     487                $this->assertEquals( 1, count( $posts ) );
     488
     489                $posts = get_posts(
     490                        array(
     491                                'fields'                 => 'ids',
     492                                'update_post_meta_cache' => false,
     493                                'update_post_term_cache' => false,
     494                                'tax_query'              => array(
     495                                        array(
     496                                                'taxonomy' => 'category',
     497                                                'field'    => 'id',
     498                                                'terms'    => array( $europe, $south_america ),
     499                                                'operator' => 'AND'
     500                                        ),
     501                                ),
     502                        )
     503                );
     504
     505                $this->assertEquals( 2, count( $posts ) );
     506
     507        }
     508
     509        /**
    437510         * @ticket 29181
    438511         */
    439512        public function test_tax_query_operator_not_exists() {