wordpress-develop/tests/phpunit/tests/multisite/updateBlogDetails.php
Sergey Biryukov 164b22cf6a Tests: First pass at using assertSame() instead of assertEquals() in most of the unit tests.
This ensures that not only the return values match the expected results, but also that their type is the same.

Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable.

Props johnbillion, jrf, SergeyBiryukov.
See #38266.

git-svn-id: https://develop.svn.wordpress.org/trunk@48937 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-02 00:35:36 +00:00

143 lines
4.3 KiB
PHP

<?php
if ( is_multisite() ) :
/**
* @group ms-site
* @group multisite
*/
class Tests_Multisite_Update_Blog_Details extends WP_UnitTestCase {
/**
* If `update_blog_details()` is called with any kind of empty arguments, it
* should return false.
*/
function test_update_blog_details_with_empty_args() {
$result = update_blog_details( 1, array() );
$this->assertFalse( $result );
}
/**
* If the ID passed is not that of a current site, we should expect false.
*/
function test_update_blog_details_invalid_blog_id() {
$result = update_blog_details( 999, array( 'domain' => 'example.com' ) );
$this->assertFalse( $result );
}
function test_update_blog_details() {
$blog_id = self::factory()->blog->create();
$result = update_blog_details(
$blog_id,
array(
'domain' => 'example.com',
'path' => 'my_path/',
)
);
$this->assertTrue( $result );
$blog = get_site( $blog_id );
$this->assertSame( 'example.com', $blog->domain );
$this->assertSame( '/my_path/', $blog->path );
$this->assertSame( '0', $blog->spam );
}
/**
* Test each of the actions that should fire in update_blog_details() depending on
* the flag and flag value being set. Each action should fire once and should not
* fire if a flag is already set for the given flag value.
*
* @param string $flag The name of the flag being set or unset on a site.
* @param string $flag_value '0' or '1'. The value of the flag being set.
* @param string $action The hook expected to fire for the flag name and flag combination.
*
* @dataProvider data_flag_hooks
*/
public function test_update_blog_details_flag_action( $flag, $flag_value, $hook ) {
global $test_action_counter;
$test_action_counter = 0;
$blog_id = self::factory()->blog->create();
// Set an initial value of '1' for the flag when '0' is the flag value being tested.
if ( '0' === $flag_value ) {
update_blog_details( $blog_id, array( $flag => '1' ) );
}
add_action( $hook, array( $this, '_action_counter_cb' ), 10 );
update_blog_details( $blog_id, array( $flag => $flag_value ) );
$blog = get_site( $blog_id );
$this->assertSame( $flag_value, $blog->{$flag} );
// The hook attached to this flag should have fired once during update_blog_details().
$this->assertSame( 1, $test_action_counter );
// Update the site to the exact same flag value for this flag.
update_blog_details( $blog_id, array( $flag => $flag_value ) );
// The hook attached to this flag should not have fired again.
$this->assertSame( 1, $test_action_counter );
remove_action( $hook, array( $this, '_action_counter_cb' ), 10 );
}
public function data_flag_hooks() {
return array(
array( 'spam', '0', 'make_ham_blog' ),
array( 'spam', '1', 'make_spam_blog' ),
array( 'archived', '1', 'archive_blog' ),
array( 'archived', '0', 'unarchive_blog' ),
array( 'deleted', '1', 'make_delete_blog' ),
array( 'deleted', '0', 'make_undelete_blog' ),
array( 'mature', '1', 'mature_blog' ),
array( 'mature', '0', 'unmature_blog' ),
);
}
/**
* Provide a counter to determine that hooks are firing when intended.
*/
function _action_counter_cb() {
global $test_action_counter;
$test_action_counter++;
}
/**
* When the path for a site is updated with update_blog_details(), the final path
* should have a leading and trailing slash.
*
* @dataProvider data_single_directory_path
*/
public function test_update_blog_details_single_directory_path( $path, $expected ) {
update_blog_details( 1, array( 'path' => $path ) );
$site = get_site( 1 );
$this->assertSame( $expected, $site->path );
}
public function data_single_directory_path() {
return array(
array( 'my_path', '/my_path/' ),
array( 'my_path//', '/my_path/' ),
array( '//my_path', '/my_path/' ),
array( 'my_path/', '/my_path/' ),
array( '/my_path', '/my_path/' ),
array( '/my_path/', '/my_path/' ),
array( 'multiple/dirs', '/multiple/dirs/' ),
array( '/multiple/dirs', '/multiple/dirs/' ),
array( 'multiple/dirs/', '/multiple/dirs/' ),
array( '/multiple/dirs/', '/multiple/dirs/' ),
// update_blog_details() does not resolve multiple slashes in the middle of a path string.
array( 'multiple///dirs', '/multiple///dirs/' ),
);
}
}
endif;