Make WordPress Core


Ignore:
Timestamp:
11/20/2017 10:45:29 PM (9 years ago)
Author:
boonebgorges
Message:

Improve data types returned from empty hierarchical term queries.

When querying for 'count', ensure that 0 is returned. Otherwise,
ensure that it's an array.

Props xParham, birgire.
Fixes #42327.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/term/query.php

    r41880 r42209  
    472472                $this->assertSame( $expected, $found3 );
    473473        }
     474
     475        /**
     476         * The query method should return zero for field as count and parent set.
     477         *
     478         * @ticket 42327
     479         */
     480        public function test_query_should_return_zero_for_field_count_and_parent_set() {
     481                $post_id = self::factory()->post->create();
     482                register_taxonomy( 'wptests_tax', 'post' );
     483
     484                $term_id = self::factory()->term->create( array(
     485                        'taxonomy' => 'wptests_tax',
     486                ) );
     487                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     488
     489                $q = new WP_Term_Query();
     490                $args = array(
     491                        'taxonomy' => 'wptests_tax',
     492                        'parent'   => $term_id,
     493                        'fields'   => 'count',
     494                );
     495                $this->assertSame( 0, $q->query( $args ) );
     496        }
     497
     498        /**
     499         * The query method should return zero for field as count and child_of set.
     500         *
     501         * @ticket 42327
     502         */
     503        public function test_query_should_return_zero_for_field_as_count_and_child_of_set() {
     504                $post_id = self::factory()->post->create();
     505                register_taxonomy( 'wptests_tax', 'post' );
     506
     507                $term_id = self::factory()->term->create( array(
     508                        'taxonomy' => 'wptests_tax',
     509                ) );
     510                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     511
     512                $q = new WP_Term_Query();
     513                $args = array(
     514                        'taxonomy' => 'wptests_tax',
     515                        'child_of' => $term_id,
     516                        'fields'   => 'count',
     517                );
     518                $this->assertSame( 0, $q->query( $args ) );
     519        }
     520
     521        /**
     522         * The terms property should be an empty array for fields not as count and parent set.
     523         *
     524         * @ticket 42327
     525         */
     526        public function test_terms_property_should_be_empty_array_for_field_not_as_count_and_parent_set() {
     527                $post_id = self::factory()->post->create();
     528                register_taxonomy( 'wptests_tax', 'post' );
     529
     530                $term_id = self::factory()->term->create( array(
     531                        'taxonomy' => 'wptests_tax',
     532                ) );
     533                wp_set_object_terms( $post_id, array( $term_id ), 'wptests_tax' );
     534
     535                $q = new WP_Term_Query( array(
     536                        'taxonomy' => 'wptests_tax',
     537                        'parent'   => $term_id,
     538                ) );
     539                $this->assertSame( array(), $q->terms );
     540        }
    474541}
Note: See TracChangeset for help on using the changeset viewer.