wordpress-develop/tests/phpunit/tests/user/wpDeleteUser.php
Gary Pendergast 8f95800d52 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.



git-svn-id: https://develop.svn.wordpress.org/trunk@42343 602fd350-edb4-49c9-b593-d223f7449a82
2017-11-30 23:09:33 +00:00

155 lines
4.5 KiB
PHP

<?php
/**
* @group user
*/
class Tests_User_WpDeleteUser extends WP_UnitTestCase {
/**
* Test that usermeta cache is cleared after user deletion.
*
* @ticket 19500
*/
function test_get_blogs_of_user() {
// Logged out users don't have blogs.
$this->assertEquals( array(), get_blogs_of_user( 0 ) );
$user_id = self::factory()->user->create( array( 'role' => 'subscriber' ) );
$blogs = get_blogs_of_user( $user_id );
$this->assertEquals( array( 1 ), array_keys( $blogs ) );
// Non-existent users don't have blogs.
self::delete_user( $user_id );
$user = new WP_User( $user_id );
$this->assertFalse( $user->exists(), 'WP_User->exists' );
$this->assertEquals( array(), get_blogs_of_user( $user_id ) );
}
/**
* Test that usermeta cache is cleared after user deletion.
*
* @ticket 19500
*/
function test_is_user_member_of_blog() {
$old_current = get_current_user_id();
$user_id = self::factory()->user->create( array( 'role' => 'subscriber' ) );
wp_set_current_user( $user_id );
$this->assertTrue( is_user_member_of_blog() );
$this->assertTrue( is_user_member_of_blog( 0, 0 ) );
$this->assertTrue( is_user_member_of_blog( 0, get_current_blog_id() ) );
$this->assertTrue( is_user_member_of_blog( $user_id ) );
$this->assertTrue( is_user_member_of_blog( $user_id, get_current_blog_id() ) );
// Will only remove the user from the current site in multisite; this is desired
// and will achieve the desired effect with is_user_member_of_blog().
wp_delete_user( $user_id );
$this->assertFalse( is_user_member_of_blog( $user_id ) );
$this->assertFalse( is_user_member_of_blog( $user_id, get_current_blog_id() ) );
wp_set_current_user( $old_current );
}
function test_delete_user() {
$user_id = self::factory()->user->create( array( 'role' => 'author' ) );
$user = new WP_User( $user_id );
$post = array(
'post_author' => $user_id,
'post_status' => 'publish',
'post_content' => 'Post content',
'post_title' => 'Post Title',
'post_type' => 'post',
);
// insert a post and make sure the ID is ok
$post_id = wp_insert_post( $post );
$this->assertTrue( is_numeric( $post_id ) );
$this->assertTrue( $post_id > 0 );
$post = get_post( $post_id );
$this->assertEquals( $post_id, $post->ID );
$post = array(
'post_author' => $user_id,
'post_status' => 'publish',
'post_content' => 'Post content',
'post_title' => 'Post Title',
'post_type' => 'nav_menu_item',
);
// insert a post and make sure the ID is ok
$nav_id = wp_insert_post( $post );
$this->assertTrue( is_numeric( $nav_id ) );
$this->assertTrue( $nav_id > 0 );
$post = get_post( $nav_id );
$this->assertEquals( $nav_id, $post->ID );
wp_delete_user( $user_id );
$user = new WP_User( $user_id );
if ( is_multisite() ) {
$this->assertTrue( $user->exists() );
} else {
$this->assertFalse( $user->exists() );
}
$this->assertNotNull( get_post( $post_id ) );
$this->assertEquals( 'trash', get_post( $post_id )->post_status );
// nav_menu_item is delete_with_user = false so the nav post should remain published.
$this->assertNotNull( get_post( $nav_id ) );
$this->assertEquals( 'publish', get_post( $nav_id )->post_status );
wp_delete_post( $nav_id, true );
$this->assertNull( get_post( $nav_id ) );
wp_delete_post( $post_id, true );
$this->assertNull( get_post( $post_id ) );
}
/**
* @ticket 20447
*/
function test_wp_delete_user_reassignment_clears_post_caches() {
$user_id = self::factory()->user->create();
$reassign = self::factory()->user->create();
$post_id = self::factory()->post->create( array( 'post_author' => $user_id ) );
get_post( $post_id ); // Ensure this post is in the cache.
wp_delete_user( $user_id, $reassign );
$post = get_post( $post_id );
$this->assertEquals( $reassign, $post->post_author );
}
/**
* @group ms-excluded
*/
public function test_numeric_string_user_id() {
$u = self::factory()->user->create();
$u_string = (string) $u;
$this->assertTrue( wp_delete_user( $u_string ) );
$this->assertFalse( get_user_by( 'id', $u ) );
}
/**
* @ticket 33800
*/
public function test_should_return_false_for_non_numeric_string_user_id() {
$this->assertFalse( wp_delete_user( 'abcde' ) );
}
/**
* @ticket 33800
* @group ms-excluded
*/
public function test_should_return_false_for_object_user_id() {
$u_obj = self::factory()->user->create_and_get();
$this->assertFalse( wp_delete_user( $u_obj ) );
$this->assertEquals( $u_obj->ID, username_exists( $u_obj->user_login ) );
}
}