Make WordPress Core

Changeset 37643


Ignore:
Timestamp:
06/06/2016 09:16:54 PM (10 years ago)
Author:
boonebgorges
Message:

Revert [37642].

Was mistakenly committed to the 4.4 branch.

Location:
branches/4.4/tests/phpunit/tests
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • branches/4.4/tests/phpunit/tests/term.php

    r37642 r37643  
    6767                // there are 5 posts, all Uncategorized
    6868                $this->assertEquals( 1, $count );
     69        }
     70
     71        /**
     72         * @ticket 26570
     73         */
     74        function test_set_object_terms() {
     75                $non_hier = rand_str( 10 );
     76                $hier     = rand_str( 10 );
     77
     78                // Register taxonomies
     79                register_taxonomy( $non_hier, array() );
     80                register_taxonomy( $hier, array( 'hierarchical' => true ) );
     81
     82                // Create a post.
     83                $post_id = self::$post_ids[0];
     84
     85                /*
     86                 * Set a single term (non-hierarchical) by ID.
     87                 */
     88                $tag = wp_insert_term( 'Foo', $non_hier );
     89                $this->assertFalse( has_term( $tag['term_id'], $non_hier, $post_id ) );
     90
     91                wp_set_object_terms( $post_id, $tag['term_id'], $non_hier );
     92                $this->assertTrue( has_term( $tag['term_id'], $non_hier, $post_id ) );
     93
     94                /*
     95                 * Set a single term (non-hierarchical) by slug.
     96                 */
     97                $tag = wp_insert_term( 'Bar', $non_hier );
     98                $tag = get_term( $tag['term_id'], $non_hier );
     99
     100                $this->assertFalse( has_term( $tag->slug, $non_hier, $post_id ) );
     101
     102                wp_set_object_terms( $post_id, $tag->slug, $non_hier );
     103                $this->assertTrue( has_term( $tag->slug, $non_hier, $post_id ) );
     104
     105                /*
     106                 * Set a single term (hierarchical) by ID.
     107                 */
     108                $cat = wp_insert_term( 'Baz', $hier );
     109                $this->assertFalse( has_term( $cat['term_id'], $hier, $post_id ) );
     110
     111                wp_set_object_terms( $post_id, $cat['term_id'], $hier );
     112                $this->assertTrue( has_term( $cat['term_id'], $hier, $post_id ) );
     113
     114                /*
     115                 * Set a single term (hierarchical) by slug.
     116                 */
     117                $cat = wp_insert_term( 'Qux', $hier );
     118                $cat = get_term( $cat['term_id'], $hier );
     119
     120                $this->assertFalse( has_term( $cat->slug, $hier, $post_id ) );
     121
     122                wp_set_object_terms( $post_id, $cat->slug, $hier );
     123                $this->assertTrue( has_term( $cat->slug, $hier, $post_id ) );
     124
     125                /*
     126                 * Set an array of term IDs (non-hierarchical) by ID.
     127                 */
     128                $tag1 = wp_insert_term( '_tag1', $non_hier );
     129                $this->assertFalse( has_term( $tag1['term_id'], $non_hier, $post_id ) );
     130
     131                $tag2 = wp_insert_term( '_tag2', $non_hier );
     132                $this->assertFalse( has_term( $tag2['term_id'], $non_hier, $post_id ) );
     133
     134                $tag3 = wp_insert_term( '_tag3', $non_hier );
     135                $this->assertFalse( has_term( $tag3['term_id'], $non_hier, $post_id ) );
     136
     137                wp_set_object_terms( $post_id, array( $tag1['term_id'], $tag2['term_id'], $tag3['term_id'] ), $non_hier );
     138                $this->assertTrue( has_term( array( $tag1['term_id'], $tag2['term_id'], $tag3['term_id'] ), $non_hier, $post_id ) );
     139
     140                /*
     141                 * Set an array of term slugs (hierarchical) by slug.
     142                 */
     143                $cat1 = wp_insert_term( '_cat1', $hier );
     144                $cat1 = get_term( $cat1['term_id'], $hier );
     145                $this->assertFalse( has_term( $cat1->slug, $hier, $post_id ) );
     146
     147                $cat2 = wp_insert_term( '_cat2', $hier );
     148                $cat2 = get_term( $cat2['term_id'], $hier );
     149                $this->assertFalse( has_term( $cat2->slug, $hier, $post_id ) );
     150
     151                $cat3 = wp_insert_term( '_cat3', $hier );
     152                $cat3 = get_term( $cat3['term_id'], $hier );
     153                $this->assertFalse( has_term( $cat3->slug, $hier, $post_id ) );
     154
     155                wp_set_object_terms( $post_id, array( $cat1->slug, $cat2->slug, $cat3->slug ), $hier );
     156                $this->assertTrue( has_term( array( $cat1->slug, $cat2->slug, $cat3->slug ), $hier, $post_id ) );
     157        }
     158
     159        function test_set_object_terms_by_id() {
     160                $ids = self::$post_ids;
     161
     162                $terms = array();
     163                for ($i=0; $i<3; $i++ ) {
     164                        $term = rand_str();
     165                        $result = wp_insert_term( $term, $this->taxonomy );
     166                        $this->assertInternalType( 'array', $result );
     167                        $term_id[$term] = $result['term_id'];
     168                }
     169
     170                foreach ($ids as $id) {
     171                        $tt = wp_set_object_terms( $id, array_values($term_id), $this->taxonomy );
     172                        // should return three term taxonomy ids
     173                        $this->assertEquals( 3, count($tt) );
     174                }
     175
     176                // each term should be associated with every post
     177                foreach ($term_id as $term=>$id) {
     178                        $actual = get_objects_in_term($id, $this->taxonomy);
     179                        $this->assertEquals( $ids, array_map('intval', $actual) );
     180                }
     181
     182                // each term should have a count of 5
     183                foreach (array_keys($term_id) as $term) {
     184                        $t = get_term_by('name', $term, $this->taxonomy);
     185                        $this->assertEquals( 5, $t->count );
     186                }
     187        }
     188
     189        function test_set_object_terms_by_name() {
     190                $ids = self::$post_ids;
     191
     192                $terms = array(
     193                        rand_str(),
     194                        rand_str(),
     195                        rand_str()
     196                );
     197
     198                foreach ($ids as $id) {
     199                        $tt = wp_set_object_terms( $id, $terms, $this->taxonomy );
     200                        // should return three term taxonomy ids
     201                        $this->assertEquals( 3, count($tt) );
     202                        // remember which term has which term_id
     203                        for ($i=0; $i<3; $i++) {
     204                                $term = get_term_by('name', $terms[$i], $this->taxonomy);
     205                                $term_id[$terms[$i]] = intval($term->term_id);
     206                        }
     207                }
     208
     209                // each term should be associated with every post
     210                foreach ($term_id as $term=>$id) {
     211                        $actual = get_objects_in_term($id, $this->taxonomy);
     212                        $this->assertEquals( $ids, array_map('intval', $actual) );
     213                }
     214
     215                // each term should have a count of 5
     216                foreach ($terms as $term) {
     217                        $t = get_term_by('name', $term, $this->taxonomy);
     218                        $this->assertEquals( 5, $t->count );
     219                }
     220        }
     221
     222        function test_set_object_terms_invalid() {
     223                // bogus taxonomy
     224                $result = wp_set_object_terms( self::$post_ids[0], array(rand_str()), rand_str() );
     225                $this->assertTrue( is_wp_error($result) );
     226        }
     227
     228        public function test_wp_set_object_terms_append_true() {
     229                register_taxonomy( 'wptests_tax', 'post' );
     230                $p = self::$post_ids[0];
     231                $t1 = self::factory()->term->create( array(
     232                        'taxonomy' => 'wptests_tax',
     233                ) );
     234                $t2 = self::factory()->term->create( array(
     235                        'taxonomy' => 'wptests_tax',
     236                ) );
     237
     238                $added1 = wp_set_object_terms( $p, array( $t1 ), 'wptests_tax' );
     239                $this->assertNotEmpty( $added1 );
     240                $this->assertEqualSets( array( $t1 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     241
     242                $added2 = wp_set_object_terms( $p, array( $t2 ), 'wptests_tax', true );
     243                $this->assertNotEmpty( $added2 );
     244                $this->assertEqualSets( array( $t1, $t2 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     245
     246                _unregister_taxonomy( 'wptests_tax' );
     247        }
     248
     249        public function test_wp_set_object_terms_append_false() {
     250                register_taxonomy( 'wptests_tax', 'post' );
     251                $p = self::$post_ids[0];
     252                $t1 = self::factory()->term->create( array(
     253                        'taxonomy' => 'wptests_tax',
     254                ) );
     255                $t2 = self::factory()->term->create( array(
     256                        'taxonomy' => 'wptests_tax',
     257                ) );
     258
     259                $added1 = wp_set_object_terms( $p, array( $t1 ), 'wptests_tax' );
     260                $this->assertNotEmpty( $added1 );
     261                $this->assertEqualSets( array( $t1 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     262
     263                $added2 = wp_set_object_terms( $p, array( $t2 ), 'wptests_tax', false );
     264                $this->assertNotEmpty( $added2 );
     265                $this->assertEqualSets( array( $t2 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     266
     267                _unregister_taxonomy( 'wptests_tax' );
     268        }
     269
     270        public function test_wp_set_object_terms_append_default_to_false() {
     271                register_taxonomy( 'wptests_tax', 'post' );
     272                $p = self::$post_ids[0];
     273                $t1 = self::factory()->term->create( array(
     274                        'taxonomy' => 'wptests_tax',
     275                ) );
     276                $t2 = self::factory()->term->create( array(
     277                        'taxonomy' => 'wptests_tax',
     278                ) );
     279
     280                $added1 = wp_set_object_terms( $p, array( $t1 ), 'wptests_tax' );
     281                $this->assertNotEmpty( $added1 );
     282                $this->assertEqualSets( array( $t1 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     283
     284                $added2 = wp_set_object_terms( $p, array( $t2 ), 'wptests_tax' );
     285                $this->assertNotEmpty( $added2 );
     286                $this->assertEqualSets( array( $t2 ), wp_get_object_terms( $p, 'wptests_tax', array( 'fields' => 'ids' ) ) );
     287
     288                _unregister_taxonomy( 'wptests_tax' );
     289        }
     290
     291        function test_change_object_terms_by_id() {
     292                // set some terms on an object; then change them while leaving one intact
     293
     294                $post_id = self::$post_ids[0];
     295
     296                // first set: 3 terms
     297                $terms_1 = array();
     298                for ($i=0; $i<3; $i++ ) {
     299                        $term = rand_str();
     300                        $result = wp_insert_term( $term, $this->taxonomy );
     301                        $this->assertInternalType( 'array', $result );
     302                        $terms_1[$i] = $result['term_id'];
     303                }
     304
     305                // second set: one of the original terms, plus one new term
     306                $terms_2 = array();
     307                $terms_2[0] = $terms_1[1];
     308
     309                $term = rand_str();
     310                $result = wp_insert_term( $term, $this->taxonomy );
     311                $terms_2[1] = $result['term_id'];
     312
     313
     314                // set the initial terms
     315                $tt_1 = wp_set_object_terms( $post_id, $terms_1, $this->taxonomy );
     316                $this->assertEquals( 3, count($tt_1) );
     317
     318                // make sure they're correct
     319                $terms = wp_get_object_terms($post_id, $this->taxonomy, array('fields' => 'ids', 'orderby' => 't.term_id'));
     320                $this->assertEquals( $terms_1, $terms );
     321
     322                // change the terms
     323                $tt_2 = wp_set_object_terms( $post_id, $terms_2, $this->taxonomy );
     324                $this->assertEquals( 2, count($tt_2) );
     325
     326                // make sure they're correct
     327                $terms = wp_get_object_terms($post_id, $this->taxonomy, array('fields' => 'ids', 'orderby' => 't.term_id'));
     328                $this->assertEquals( $terms_2, $terms );
     329
     330                // make sure the tt id for 'bar' matches
     331                $this->assertEquals( $tt_1[1], $tt_2[0] );
     332
     333        }
     334
     335        function test_change_object_terms_by_name() {
     336                // set some terms on an object; then change them while leaving one intact
     337
     338                $post_id = self::$post_ids[0];
     339
     340                $terms_1 = array('foo', 'bar', 'baz');
     341                $terms_2 = array('bar', 'bing');
     342
     343                // set the initial terms
     344                $tt_1 = wp_set_object_terms( $post_id, $terms_1, $this->taxonomy );
     345                $this->assertEquals( 3, count($tt_1) );
     346
     347                // make sure they're correct
     348                $terms = wp_get_object_terms($post_id, $this->taxonomy, array('fields' => 'names', 'orderby' => 't.term_id'));
     349                $this->assertEquals( $terms_1, $terms );
     350
     351                // change the terms
     352                $tt_2 = wp_set_object_terms( $post_id, $terms_2, $this->taxonomy );
     353                $this->assertEquals( 2, count($tt_2) );
     354
     355                // make sure they're correct
     356                $terms = wp_get_object_terms($post_id, $this->taxonomy, array('fields' => 'names', 'orderby' => 't.term_id'));
     357                $this->assertEquals( $terms_2, $terms );
     358
     359                // make sure the tt id for 'bar' matches
     360                $this->assertEquals( $tt_1[1], $tt_2[0] );
     361
    69362        }
    70363
Note: See TracChangeset for help on using the changeset viewer.