From fc8da37358531e2c44d892902a0fabbfb98ec1ed Mon Sep 17 00:00:00 2001 From: Boone Gorges Date: Mon, 3 Nov 2014 14:24:17 +0000 Subject: [PATCH] Add some unit tests for `is_object_in_term()`. These tests check a number of the ways that different kinds of values for `$terms` (integers that match term_id, strings that match term_id or name or slug) are handled. See #29467. git-svn-id: https://develop.svn.wordpress.org/trunk@30204 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/term/isObjectInTerm.php | 84 +++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 tests/phpunit/tests/term/isObjectInTerm.php diff --git a/tests/phpunit/tests/term/isObjectInTerm.php b/tests/phpunit/tests/term/isObjectInTerm.php new file mode 100644 index 0000000000..26513ea3ea --- /dev/null +++ b/tests/phpunit/tests/term/isObjectInTerm.php @@ -0,0 +1,84 @@ +factory->term->create( array( 'taxonomy' => 'wptests_tax' ) ); + $t2 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax' ) ); + + $posts = $this->factory->post->create_many( 2 ); + wp_set_object_terms( $posts[0], array( $t1 ), 'wptests_tax' ); + + $this->assertTrue( is_object_in_term( $posts[0], 'wptests_tax', array( $t1, $t2 ) ) ); + $this->assertFalse( is_object_in_term( $posts[1], 'wptests_tax', array( $t1, $t2 ) ) ); + + _unregister_taxonomy( 'wptests_tax', 'post' ); + } + + public function test_terms_are_strings_and_match_term_id() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t1 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax' ) ); + $t2 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax' ) ); + + $posts = $this->factory->post->create_many( 2 ); + wp_set_object_terms( $posts[0], array( $t1 ), 'wptests_tax' ); + + $t1_str = (string) $t1; + $t2_str = (string) $t2; + + $this->assertTrue( is_object_in_term( $posts[0], 'wptests_tax', array( $t1_str, $t2_str ) ) ); + $this->assertFalse( is_object_in_term( $posts[1], 'wptests_tax', array( $t1_str, $t2_str ) ) ); + + _unregister_taxonomy( 'wptests_tax', 'post' ); + } + + public function test_terms_are_strings_and_match_term_name() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t1 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'name' => 'Foo' ) ); + $t2 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'name' => 'Bar') ); + + $posts = $this->factory->post->create_many( 2 ); + wp_set_object_terms( $posts[0], array( $t1 ), 'wptests_tax' ); + + $this->assertTrue( is_object_in_term( $posts[0], 'wptests_tax', array( 'Foo', 'Bar' ) ) ); + $this->assertFalse( is_object_in_term( $posts[1], 'wptests_tax', array( 'Foo', 'Bar' ) ) ); + + _unregister_taxonomy( 'wptests_tax', 'post' ); + } + + public function test_terms_are_strings_and_match_term_slug() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t1 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'slug' => 'foo' ) ); + $t2 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'slug' => 'bar') ); + + $posts = $this->factory->post->create_many( 2 ); + wp_set_object_terms( $posts[0], array( $t1 ), 'wptests_tax' ); + + $this->assertTrue( is_object_in_term( $posts[0], 'wptests_tax', array( 'foo', 'bar' ) ) ); + $this->assertFalse( is_object_in_term( $posts[1], 'wptests_tax', array( 'foo', 'bar' ) ) ); + + _unregister_taxonomy( 'wptests_tax', 'post' ); + } + + public function test_terms_contain_strings_and_ints_and_match_term_id_as_int() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t1 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'slug' => 'foo' ) ); + $t2 = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax', 'slug' => 'bar') ); + + $posts = $this->factory->post->create_many( 2 ); + wp_set_object_terms( $posts[0], array( $t1 ), 'wptests_tax' ); + + $this->assertTrue( is_object_in_term( $posts[0], 'wptests_tax', array( $t1, 'bar' ) ) ); + $this->assertFalse( is_object_in_term( $posts[1], 'wptests_tax', array( $t1, 'bar' ) ) ); + + _unregister_taxonomy( 'wptests_tax', 'post' ); + } +}