Multisite: Add specific tests for `clean_blog_cache()` and `refresh_blog_details()`.

See #40201.


git-svn-id: https://develop.svn.wordpress.org/trunk@41715 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Felix Arntz 2017-10-03 18:20:37 +00:00
parent 260b9917d7
commit 2e051261f3
1 changed files with 127 additions and 0 deletions

View File

@ -1057,6 +1057,133 @@ class Tests_Multisite_Site extends WP_UnitTestCase {
public function test_is_main_site_different_network_random_site() {
$this->assertFalse( is_main_site( self::$site_ids['make.wordpress.org/foo/'], self::$network_ids['make.wordpress.org/'] ) );
}
/**
* @ticket 40201
* @dataProvider data_get_site_caches
*/
public function test_clean_blog_cache( $key, $group ) {
$site = get_site( self::$site_ids['make.wordpress.org/'] );
$replacements = array(
'%blog_id%' => $site->blog_id,
'%domain%' => $site->domain,
'%path%' => $site->path,
'%domain_path_key%' => md5( $site->domain . $site->path ),
);
$key = str_replace( array_keys( $replacements ), array_values( $replacements ), $key );
if ( 'sites' === $group ) { // This needs to be actual data for get_site() lookups.
wp_cache_set( $key, (object) $site->to_array(), $group );
} else {
wp_cache_set( $key, 'something', $group );
}
clean_blog_cache( $site );
$this->assertFalse( wp_cache_get( $key, $group ) );
}
/**
* @ticket 40201
*/
public function test_clean_blog_cache_resets_last_changed() {
$site = get_site( self::$site_ids['make.wordpress.org/'] );
wp_cache_delete( 'last_changed', 'sites' );
clean_blog_cache( $site );
$this->assertNotFalse( wp_cache_get( 'last_changed', 'sites' ) );
}
/**
* @ticket 40201
*/
public function test_clean_blog_cache_fires_action() {
$site = get_site( self::$site_ids['make.wordpress.org/'] );
$old_count = did_action( 'clean_site_cache' );
clean_blog_cache( $site );
$this->assertEquals( $old_count + 1, did_action( 'clean_site_cache' ) );
}
/**
* @ticket 40201
*/
public function test_clean_blog_cache_bails_on_suspend_cache_invalidation() {
$site = get_site( self::$site_ids['make.wordpress.org/'] );
$old_count = did_action( 'clean_site_cache' );
$suspend = wp_suspend_cache_invalidation();
clean_blog_cache( $site );
wp_suspend_cache_invalidation( $suspend );
$this->assertEquals( $old_count, did_action( 'clean_site_cache' ) );
}
/**
* @ticket 40201
* @dataProvider data_get_site_caches
*/
public function test_refresh_blog_details( $key, $group ) {
$site = get_site( self::$site_ids['make.wordpress.org/'] );
$replacements = array(
'%blog_id%' => $site->blog_id,
'%domain%' => $site->domain,
'%path%' => $site->path,
'%domain_path_key%' => md5( $site->domain . $site->path ),
);
$key = str_replace( array_keys( $replacements ), array_values( $replacements ), $key );
if ( 'sites' === $group ) { // This needs to be actual data for get_site() lookups.
wp_cache_set( $key, (object) $site->to_array(), $group );
} else {
wp_cache_set( $key, 'something', $group );
}
refresh_blog_details( $site->blog_id );
$this->assertFalse( wp_cache_get( $key, $group ) );
}
/**
* @ticket 40201
*/
public function test_refresh_blog_details_works_with_deleted_site() {
$site_id = 12345;
wp_cache_set( $site_id, 'something', 'site-details' );
refresh_blog_details( $site_id );
$this->assertFalse( wp_cache_get( $site_id, 'site-details' ) );
}
/**
* @ticket 40201
*/
public function test_refresh_blog_details_uses_current_site_as_default() {
$site_id = get_current_blog_id();
wp_cache_set( $site_id, 'something', 'site-details' );
refresh_blog_details();
$this->assertFalse( wp_cache_get( $site_id, 'site-details' ) );
}
public function data_get_site_caches() {
return array(
array( '%blog_id%', 'sites' ),
array( '%blog_id%', 'site-details' ),
array( '%blog_id%', 'blog-details' ),
array( '%blog_id%' . 'short' , 'blog-details' ),
array( '%domain_path_key%', 'blog-lookup' ),
array( '%domain_path_key%', 'blog-id-cache' ),
array( 'current_blog_%domain%', 'site-options' ),
array( 'current_blog_%domain%%path%', 'site-options' ),
);
}
}
endif;