mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
See #34495 git-svn-id: https://develop.svn.wordpress.org/trunk@35707 602fd350-edb4-49c9-b593-d223f7449a82
190 lines
4.2 KiB
PHP
190 lines
4.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group user
|
|
*/
|
|
class Tests_User_CountUsers extends WP_UnitTestCase {
|
|
|
|
/**
|
|
* @ticket 22993
|
|
*
|
|
* @dataProvider data_count_users_strategies
|
|
*/
|
|
public function test_count_users_is_accurate( $strategy ) {
|
|
|
|
if ( is_multisite() ) {
|
|
$this->markTestSkipped( 'Test does not run on multisite' );
|
|
}
|
|
|
|
// Setup users
|
|
$admin = self::factory()->user->create( array(
|
|
'role' => 'administrator',
|
|
) );
|
|
$editor = self::factory()->user->create( array(
|
|
'role' => 'editor',
|
|
) );
|
|
$author = self::factory()->user->create( array(
|
|
'role' => 'author',
|
|
) );
|
|
$contributor = self::factory()->user->create( array(
|
|
'role' => 'contributor',
|
|
) );
|
|
$subscriber = self::factory()->user->create( array(
|
|
'role' => 'subscriber',
|
|
) );
|
|
$none = self::factory()->user->create( array(
|
|
'role' => '',
|
|
) );
|
|
$nobody = self::factory()->user->create( array(
|
|
'role' => '',
|
|
) );
|
|
|
|
// Test user counts
|
|
$count = count_users( $strategy );
|
|
|
|
$this->assertEquals( 8, $count['total_users'] );
|
|
$this->assertEquals( array(
|
|
'administrator' => 2,
|
|
'editor' => 1,
|
|
'author' => 1,
|
|
'contributor' => 1,
|
|
'subscriber' => 1,
|
|
'none' => 2,
|
|
), $count['avail_roles'] );
|
|
|
|
}
|
|
|
|
/**
|
|
* @ticket 22993
|
|
* @group multisite
|
|
*
|
|
* @dataProvider data_count_users_strategies
|
|
*/
|
|
public function test_count_users_multisite_is_accurate( $strategy ) {
|
|
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped( 'Test requires multisite' );
|
|
}
|
|
|
|
// Setup users
|
|
$admin = self::factory()->user->create( array(
|
|
'role' => 'administrator',
|
|
) );
|
|
$editor = self::factory()->user->create( array(
|
|
'role' => 'editor',
|
|
) );
|
|
$author = self::factory()->user->create( array(
|
|
'role' => 'author',
|
|
) );
|
|
$contributor = self::factory()->user->create( array(
|
|
'role' => 'contributor',
|
|
) );
|
|
$subscriber = self::factory()->user->create( array(
|
|
'role' => 'subscriber',
|
|
) );
|
|
$none = self::factory()->user->create( array(
|
|
'role' => '',
|
|
) );
|
|
$nobody = self::factory()->user->create( array(
|
|
'role' => '',
|
|
) );
|
|
|
|
// Setup blogs
|
|
$blog_1 = (int) self::factory()->blog->create( array(
|
|
'user_id' => $editor,
|
|
) );
|
|
$blog_2 = (int) self::factory()->blog->create( array(
|
|
'user_id' => $author,
|
|
) );
|
|
|
|
// Add users to blogs
|
|
add_user_to_blog( $blog_1, $subscriber, 'editor' );
|
|
add_user_to_blog( $blog_2, $none, 'contributor' );
|
|
|
|
// Test users counts on root site
|
|
$count = count_users( $strategy );
|
|
|
|
$this->assertEquals( 8, $count['total_users'] );
|
|
$this->assertEquals( array(
|
|
'administrator' => 2,
|
|
'editor' => 1,
|
|
'author' => 1,
|
|
'contributor' => 1,
|
|
'subscriber' => 1,
|
|
'none' => 0,
|
|
), $count['avail_roles'] );
|
|
|
|
// Test users counts on blog 1
|
|
switch_to_blog( $blog_1 );
|
|
$count = count_users( $strategy );
|
|
restore_current_blog();
|
|
|
|
$this->assertEquals( 2, $count['total_users'] );
|
|
$this->assertEquals( array(
|
|
'administrator' => 1,
|
|
'editor' => 1,
|
|
'none' => 0,
|
|
), $count['avail_roles'] );
|
|
|
|
// Test users counts on blog 2
|
|
switch_to_blog( $blog_2 );
|
|
$count = count_users( $strategy );
|
|
restore_current_blog();
|
|
|
|
$this->assertEquals( 2, $count['total_users'] );
|
|
$this->assertEquals( array(
|
|
'administrator' => 1,
|
|
'contributor' => 1,
|
|
'none' => 0,
|
|
), $count['avail_roles'] );
|
|
|
|
}
|
|
|
|
/**
|
|
* @ticket 34495
|
|
*
|
|
* @dataProvider data_count_users_strategies
|
|
*/
|
|
public function test_count_users_is_accurate_with_multiple_roles( $strategy ) {
|
|
|
|
// Setup users
|
|
$admin = self::factory()->user->create( array(
|
|
'role' => 'administrator',
|
|
) );
|
|
$editor = self::factory()->user->create( array(
|
|
'role' => 'editor',
|
|
) );
|
|
|
|
get_userdata( $editor )->add_role( 'author' );
|
|
|
|
$this->assertEquals( array(
|
|
'editor',
|
|
'author'
|
|
), get_userdata( $editor )->roles );
|
|
|
|
// Test user counts
|
|
$count = count_users( $strategy );
|
|
|
|
$this->assertEquals( 3, $count['total_users'] );
|
|
$this->assertEquals( array(
|
|
'administrator' => 2,
|
|
'editor' => 1,
|
|
'author' => 1,
|
|
'none' => 0,
|
|
), $count['avail_roles'] );
|
|
|
|
}
|
|
|
|
function data_count_users_strategies() {
|
|
return array(
|
|
array(
|
|
'time',
|
|
),
|
|
array(
|
|
'memory',
|
|
),
|
|
);
|
|
}
|
|
|
|
}
|