WordPress.org

Make WordPress Core

Ticket #15806: 15806.diff

File 15806.diff, 2.3 KB (added by boonebgorges, 4 years ago)
  • tests/phpunit/tests/term/query.php

    diff --git tests/phpunit/tests/term/query.php tests/phpunit/tests/term/query.php
    index 2445741..4d1eba5 100644
    class Tests_Term_Query extends WP_UnitTestCase { 
    165165
    166166                $this->assertNotEmpty( $q2->terms );
    167167        }
     168
     169        /**
     170         * @ticket 15806
     171         */
     172        public function test_hide_empty_should_exclude_terms_with_only_draft_posts() {
     173                register_post_type( 'wptests_pt' );
     174                register_taxonomy( 'wptests_tax_1', 'wptests_pt' );
     175                $t = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax_1' ) );
     176                $p = self::factory()->post->create( array( 'post_type' => 'wptests_pt', 'post_status' => 'draft' ) );
     177                wp_set_object_terms( $p, $t, 'wptests_tax_1' );
     178
     179                $q = new WP_Term_Query( array(
     180                        'hide_empty' => true,
     181                        'taxonomy' => 'wptests_tax_1',
     182                ) );
     183
     184                $this->assertEmpty( $q->terms );
     185        }
     186
     187        /**
     188         * @ticket 15806
     189         */
     190        public function test_hide_empty_should_exclude_terms_with_posts_that_have_been_unpublished() {
     191                register_post_type( 'wptests_pt' );
     192                register_taxonomy( 'wptests_tax_1', 'wptests_pt' );
     193                $t = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax_1' ) );
     194                $p = self::factory()->post->create( array( 'post_type' => 'wptests_pt', 'post_status' => 'publish' ) );
     195                wp_set_object_terms( $p, $t, 'wptests_tax_1' );
     196
     197                wp_update_post( array(
     198                        'ID' => $p,
     199                        'post_status' => 'draft',
     200                ) );
     201
     202                $q = new WP_Term_Query( array(
     203                        'hide_empty' => true,
     204                        'taxonomy' => 'wptests_tax_1',
     205                ) );
     206
     207                $this->assertEmpty( $q->terms );
     208        }
     209
     210        /**
     211         * @ticket 15806
     212         */
     213        public function test_hide_empty_should_exclude_terms_with_posts_that_have_been_trash() {
     214                register_post_type( 'wptests_pt' );
     215                register_taxonomy( 'wptests_tax_1', 'wptests_pt' );
     216                $t = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax_1' ) );
     217                $p = self::factory()->post->create( array( 'post_type' => 'wptests_pt', 'post_status' => 'publish' ) );
     218                wp_set_object_terms( $p, $t, 'wptests_tax_1' );
     219
     220                $q = new WP_Term_Query( array(
     221                        'hide_empty' => true,
     222                        'taxonomy' => 'wptests_tax_1',
     223                ) );
     224
     225                $this->assertSame( array( $t ), wp_list_pluck( $q->terms, 'term_id' ) );
     226
     227                wp_trash_post( $p );
     228
     229                $terms = get_terms( array(
     230                        'hide_empty' => true,
     231                        'taxonomy' => 'wptests_tax_1',
     232                ) );
     233
     234                $this->assertEmpty( $terms );
     235        }
    168236}