wordpress-develop/tests/phpunit/tests/term/isObjectInTerm.php
Sergey Biryukov 1f0fe126a0 Coding Standards: Rename $post_ID variable to $post_id in various files.
The `$post_ID` variable is [546f59c678/WordPress/Sniffs/NamingConventions/ValidVariableNameSniff.php (L54) technically allowed in WPCS], as there is a global of the same name that needs to remain for backward compatibility. However, this name is mostly a remnant of legacy code, and switching to `$post_id` where appropriate brings more consistency with the rest of core.

Additionally, this commit resolves a few WPCS warnings in core:
{{{
Variable "$post_IDs" is not in valid snake_case format
}}}

This affects:
* Function parameters in:
 * `add_meta()`
 * `post_preview()`
 * `WP_Embed::delete_oembed_caches()`
 * `WP_Embed::cache_oembed()`
 * `wp_get_post_cats()`
 * `wp_set_post_cats()`
 * `wp_unique_post_slug()`
 * `wp_set_post_categories()`
 * `wp_check_post_hierarchy_for_loops()`
 * `wp_add_trashed_suffix_to_post_name_for_trashed_posts()`
 * `wp_filter_wp_template_unique_post_slug()`
 * `wp_xmlrpc_server::add_enclosure_if_new()`
 * `wp_xmlrpc_server::attach_uploads()`
 * `wp_xmlrpc_server::mt_getTrackbackPings()`
* Internal variables in:
 * `wp_ajax_inline_save()`
 * `wp_ajax_set_post_thumbnail()`
 * `wp_ajax_get_post_thumbnail_html()`
 * `edit_post()`
 * `bulk_edit_posts()`
 * `wp_write_post()`
 * `WP_Embed::shortcode()`
 * `wp_insert_post()`
 * `wp_xmlrpc_server::_insert_post()`
 * `wp_xmlrpc_server::blogger_getPost()`
 * `wp_xmlrpc_server::blogger_newPost()`
 * `wp_xmlrpc_server::blogger_editPost()`
 * `wp_xmlrpc_server::blogger_deletePost()`
 * `wp_xmlrpc_server::mw_getPost()`
 * `wp_xmlrpc_server::mw_newPost()`
 * `wp_xmlrpc_server::mw_editPost()`
 * `wp_xmlrpc_server::mt_getPostCategories()`
 * `wp_xmlrpc_server::mt_setPostCategories()`
 * `wp_xmlrpc_server::mt_publishPost()`
 * `wp_xmlrpc_server::pingback_ping()`
* Hook parameters in:
 * `oembed_ttl`
 * `embed_oembed_html`
 * `wp_insert_post_parent`
 * `add_trashed_suffix_to_trashed_posts`
 * `pre_post_update`
 * `edit_attachment`
 * `attachment_updated`
 * `add_attachment`
 * `edit_post_{$post->post_type}`
 * `edit_post`
 * `post_updated`
 * `save_post_{$post->post_type}`
 * `save_post`
 * `wp_insert_post`
 * `pre_wp_unique_post_slug`
 * `wp_unique_post_slug`
 * `xmlrpc_call_success_blogger_newPost`
 * `xmlrpc_call_success_blogger_editPost`
 * `xmlrpc_call_success_blogger_deletePost`
 * `xmlrpc_call_success_mw_newPost`
 * `xmlrpc_call_success_mw_editPost`

Note: The name change only affects variable names and DocBlocks.

The change does not affect the `$post_ID` global still used in a few places.

Follow-up to [51399], [52958], [53723], [53729], [55190], [55308], [55334].

Props mahekkalola, tanjimtc71, SergeyBiryukov.
Fixes #57692.

git-svn-id: https://develop.svn.wordpress.org/trunk@55365 602fd350-edb4-49c9-b593-d223f7449a82
2023-02-19 15:03:50 +00:00

187 lines
5.7 KiB
PHP

<?php
/**
* @group taxonomy
*/
class Tests_IsObjectInTerm extends WP_UnitTestCase {
public function test_terms_are_ints() {
register_taxonomy( 'wptests_tax', 'post' );
$t1 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$t2 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$posts = self::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 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$t2 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$posts = self::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 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'name' => 'Foo',
)
);
$t2 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'name' => 'Bar',
)
);
$posts = self::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 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'slug' => 'foo',
)
);
$t2 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'slug' => 'bar',
)
);
$posts = self::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 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'slug' => 'foo',
)
);
$t2 = self::factory()->term->create(
array(
'taxonomy' => 'wptests_tax',
'slug' => 'bar',
)
);
$posts = self::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' );
}
/**
* @ticket 29467
*/
public function test_should_not_return_true_if_term_name_begins_with_existing_term_id() {
register_taxonomy( 'wptests_tax', 'post' );
$t = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$post_id = self::factory()->post->create();
wp_set_object_terms( $post_id, $t, 'wptests_tax' );
$int_tax_name = $t . '_term_name';
$this->assertFalse( is_object_in_term( $post_id, 'wptests_tax', $int_tax_name ) );
// Verify it works properly when the post is actually in the term.
wp_set_object_terms( $post_id, array( $int_tax_name ), 'wptests_tax' );
$this->assertTrue( is_object_in_term( $post_id, 'wptests_tax', $int_tax_name ) );
}
/**
* @ticket 32044
*/
public function test_should_populate_and_hit_relationships_cache() {
global $wpdb;
register_taxonomy( 'wptests_tax', 'post' );
$terms = self::factory()->term->create_many( 2, array( 'taxonomy' => 'wptests_tax' ) );
$o = 12345;
wp_set_object_terms( $o, $terms[0], 'wptests_tax' );
$num_queries = $wpdb->num_queries;
$this->assertTrue( is_object_in_term( $o, 'wptests_tax', $terms[0] ) );
$num_queries = $num_queries + 2;
$this->assertSame( $num_queries, $wpdb->num_queries );
$this->assertFalse( is_object_in_term( $o, 'wptests_tax', $terms[1] ) );
$this->assertSame( $num_queries, $wpdb->num_queries );
}
/**
* @ticket 32044
*/
public function test_should_not_be_fooled_by_a_stale_relationship_cache() {
global $wpdb;
register_taxonomy( 'wptests_tax', 'post' );
$terms = self::factory()->term->create_many( 2, array( 'taxonomy' => 'wptests_tax' ) );
$o = 12345;
wp_set_object_terms( $o, $terms[0], 'wptests_tax' );
$num_queries = $wpdb->num_queries;
$this->assertTrue( is_object_in_term( $o, 'wptests_tax', $terms[0] ) );
$num_queries = $num_queries + 2;
$this->assertSame( $num_queries, $wpdb->num_queries );
wp_set_object_terms( $o, $terms[1], 'wptests_tax' );
$num_queries = $wpdb->num_queries;
$this->assertTrue( is_object_in_term( $o, 'wptests_tax', $terms[1] ) );
$num_queries = $num_queries + 2;
$this->assertSame( $num_queries, $wpdb->num_queries );
}
/**
* @ticket 37721
*/
public function test_invalid_taxonomy_should_return_wp_error_object() {
$this->assertWPError( is_object_in_term( 12345, 'foo', 'bar' ) );
}
}