mirror of
https://github.com/buddypress/buddypress.git
synced 2026-07-21 20:54:17 +08:00
See #7984. git-svn-id: https://buddypress.svn.wordpress.org/trunk@12247 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
338 lines
8.3 KiB
PHP
338 lines
8.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group blogs
|
|
* @group cache
|
|
*/
|
|
class BP_Tests_Blogs_Cache extends BP_UnitTestCase {
|
|
/**
|
|
* @group bp_blogs_update_meta_cache
|
|
*/
|
|
public function test_bp_blogs_update_meta_cache() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
if ( function_exists( 'wp_initialize_site' ) ) {
|
|
$this->setExpectedDeprecated( 'wpmu_new_blog' );
|
|
}
|
|
|
|
$b1 = self::factory()->blog->create();
|
|
$b2 = self::factory()->blog->create();
|
|
|
|
bp_blogs_add_blogmeta( $b1, 'foo', 'bar' );
|
|
bp_blogs_add_blogmeta( $b1, 'foo2', 'bar2' );
|
|
bp_blogs_add_blogmeta( $b2, 'foo', 'bar' );
|
|
|
|
// Need this info
|
|
$b1_name = bp_blogs_get_blogmeta( $b1, 'name' );
|
|
$b1_description = bp_blogs_get_blogmeta( $b1, 'description' );
|
|
$b1_last_activity = bp_blogs_get_blogmeta( $b1, 'last_activity' );
|
|
|
|
$b2_name = bp_blogs_get_blogmeta( $b2, 'name' );
|
|
$b2_description = bp_blogs_get_blogmeta( $b2, 'description' );
|
|
$b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
|
|
|
|
// Clear caches (due to _get_)
|
|
wp_cache_delete( $b1, 'bp_blog_meta' );
|
|
wp_cache_delete( $b2, 'bp_blog_meta' );
|
|
|
|
// Caches should be empty
|
|
$this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
$this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
|
|
|
|
bp_blogs_update_meta_cache( array( $b1, $b2 ) );
|
|
|
|
$b1_expected = array(
|
|
'name' => array(
|
|
$b1_name,
|
|
),
|
|
'description' => array(
|
|
$b1_description,
|
|
),
|
|
'last_activity' => array(
|
|
$b1_last_activity,
|
|
),
|
|
'foo' => array(
|
|
'bar',
|
|
),
|
|
'foo2' => array(
|
|
'bar2',
|
|
),
|
|
);
|
|
|
|
$b2_expected = array(
|
|
'name' => array(
|
|
$b2_name,
|
|
),
|
|
'description' => array(
|
|
$b2_description,
|
|
),
|
|
'last_activity' => array(
|
|
$b2_last_activity,
|
|
),
|
|
'foo' => array(
|
|
'bar',
|
|
),
|
|
);
|
|
|
|
// The cache may contain more than just this, so loop through
|
|
// and check only relevant keys
|
|
$b1_found = wp_cache_get( $b1, 'bp_blog_meta' );
|
|
foreach ( $b1_expected as $k => $v ) {
|
|
$this->assertSame( $v, $b1_found[ $k ] );
|
|
}
|
|
|
|
$b2_found = wp_cache_get( $b2, 'bp_blog_meta' );
|
|
foreach ( $b2_expected as $k => $v ) {
|
|
$this->assertSame( $v, $b2_found[ $k ] );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @group bp_blogs_update_meta_cache
|
|
* @group bp_has_blogs
|
|
*/
|
|
public function test_bp_blogs_update_meta_cache_bp_has_blogs() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
if ( function_exists( 'wp_initialize_site' ) ) {
|
|
$this->setExpectedDeprecated( 'wpmu_new_blog' );
|
|
}
|
|
|
|
$u = self::factory()->user->create();
|
|
|
|
// Switch user so we have access to non-public blogs
|
|
$old_user = get_current_user_id();
|
|
$this->set_current_user( $u );
|
|
|
|
$b1 = self::factory()->blog->create();
|
|
$b2 = self::factory()->blog->create();
|
|
|
|
bp_blogs_record_blog( $b1, $u, true );
|
|
bp_blogs_record_blog( $b2, $u, true );
|
|
|
|
bp_blogs_add_blogmeta( $b1, 'foo', 'bar' );
|
|
bp_blogs_add_blogmeta( $b1, 'foo2', 'bar2' );
|
|
bp_blogs_add_blogmeta( $b2, 'foo', 'bar' );
|
|
|
|
// Need this info
|
|
$b1_name = bp_blogs_get_blogmeta( $b1, 'name' );
|
|
$b1_description = bp_blogs_get_blogmeta( $b1, 'description' );
|
|
$b1_last_activity = bp_blogs_get_blogmeta( $b1, 'last_activity' );
|
|
|
|
$b2_name = bp_blogs_get_blogmeta( $b2, 'name' );
|
|
$b2_description = bp_blogs_get_blogmeta( $b2, 'description' );
|
|
$b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
|
|
|
|
// Clear caches (due to _get_)
|
|
wp_cache_delete( $b1, 'bp_blog_meta' );
|
|
wp_cache_delete( $b2, 'bp_blog_meta' );
|
|
|
|
// Caches should be empty
|
|
$this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
$this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
|
|
|
|
bp_has_blogs( array(
|
|
'user_id' => $u,
|
|
) );
|
|
|
|
$b1_expected = array(
|
|
'name' => array(
|
|
$b1_name,
|
|
),
|
|
'description' => array(
|
|
$b1_description,
|
|
),
|
|
'last_activity' => array(
|
|
$b1_last_activity,
|
|
),
|
|
'foo' => array(
|
|
'bar',
|
|
),
|
|
'foo2' => array(
|
|
'bar2',
|
|
),
|
|
);
|
|
|
|
$b2_expected = array(
|
|
'name' => array(
|
|
$b2_name,
|
|
),
|
|
'description' => array(
|
|
$b2_description,
|
|
),
|
|
'last_activity' => array(
|
|
$b2_last_activity,
|
|
),
|
|
'foo' => array(
|
|
'bar',
|
|
),
|
|
);
|
|
|
|
// The cache may contain more than just this, so loop through
|
|
// and check only relevant keys
|
|
$b1_found = wp_cache_get( $b1, 'bp_blog_meta' );
|
|
foreach ( $b1_expected as $k => $v ) {
|
|
$this->assertSame( $v, $b1_found[ $k ] );
|
|
}
|
|
|
|
$b2_found = wp_cache_get( $b2, 'bp_blog_meta' );
|
|
foreach ( $b2_expected as $k => $v ) {
|
|
$this->assertSame( $v, $b2_found[ $k ] );
|
|
}
|
|
|
|
$this->set_current_user( $old_user );
|
|
}
|
|
|
|
/**
|
|
* @group bp_blogs_update_meta_cache
|
|
* @group bp_has_blogs
|
|
*/
|
|
public function test_bp_blogs_update_meta_cache_bp_has_blogs_false() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
if ( function_exists( 'wp_initialize_site' ) ) {
|
|
$this->setExpectedDeprecated( 'wpmu_new_blog' );
|
|
}
|
|
|
|
$u = self::factory()->user->create();
|
|
|
|
// Switch user so we have access to non-public blogs
|
|
$old_user = get_current_user_id();
|
|
$this->set_current_user( $u );
|
|
|
|
$b1 = self::factory()->blog->create();
|
|
$b2 = self::factory()->blog->create();
|
|
|
|
bp_blogs_record_blog( $b1, $u, true );
|
|
bp_blogs_record_blog( $b2, $u, true );
|
|
|
|
bp_blogs_add_blogmeta( $b1, 'foo', 'bar' );
|
|
bp_blogs_add_blogmeta( $b1, 'foo2', 'bar2' );
|
|
bp_blogs_add_blogmeta( $b2, 'foo', 'bar' );
|
|
|
|
// Need this info
|
|
$b1_name = bp_blogs_get_blogmeta( $b1, 'name' );
|
|
$b1_description = bp_blogs_get_blogmeta( $b1, 'description' );
|
|
$b1_last_activity = bp_blogs_get_blogmeta( $b1, 'last_activity' );
|
|
|
|
$b2_name = bp_blogs_get_blogmeta( $b2, 'name' );
|
|
$b2_description = bp_blogs_get_blogmeta( $b2, 'description' );
|
|
$b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
|
|
|
|
// Clear caches (due to _get_)
|
|
wp_cache_delete( $b1, 'bp_blog_meta' );
|
|
wp_cache_delete( $b2, 'bp_blog_meta' );
|
|
|
|
// Caches should be empty
|
|
$this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
$this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
|
|
|
|
bp_has_blogs( array(
|
|
'update_meta_cache' => false,
|
|
) );
|
|
|
|
// Caches should be empty
|
|
$this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
$this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
|
|
|
|
$this->set_current_user( $old_user );
|
|
}
|
|
|
|
/**
|
|
* @group bp_blogs_total_blogs
|
|
* @group counts
|
|
*/
|
|
public function test_bp_blogs_total_count_should_respect_cached_value_of_0() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
global $wpdb;
|
|
|
|
// prime cache
|
|
// no blogs are created by default, so count is zero
|
|
bp_blogs_total_blogs();
|
|
$first_query_count = $wpdb->num_queries;
|
|
|
|
// run function again
|
|
bp_blogs_total_blogs();
|
|
|
|
// check if function references cache or hits the DB by comparing query count
|
|
$this->assertEquals( $first_query_count, $wpdb->num_queries );
|
|
}
|
|
|
|
/**
|
|
* @group bp_blogs_total_blogs
|
|
*/
|
|
public function test_bp_blogs_total_blogs_count_after_delete_blog() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
if ( function_exists( 'wp_initialize_site' ) ) {
|
|
$this->setExpectedDeprecated( 'wpmu_new_blog' );
|
|
$this->setExpectedDeprecated( 'delete_blog' );
|
|
}
|
|
|
|
$u = self::factory()->user->create();
|
|
|
|
// need to make sure we set the 'public' flag due to how BP_Blogs_Blogs:get_all() works
|
|
$b1 = self::factory()->blog->create( array(
|
|
'meta' => array(
|
|
'public' => 1
|
|
)
|
|
) );
|
|
$b2 = self::factory()->blog->create( array(
|
|
'meta' => array(
|
|
'public' => 1
|
|
)
|
|
) );
|
|
|
|
bp_blogs_record_blog( $b1, $u );
|
|
bp_blogs_record_blog( $b2, $u );
|
|
|
|
// prime total blog count
|
|
bp_blogs_total_blogs();
|
|
|
|
// delete a blog
|
|
wpmu_delete_blog( $b2 );
|
|
|
|
$this->assertEquals( 1, bp_blogs_total_blogs() );
|
|
}
|
|
|
|
/**
|
|
* @group update_blog_details
|
|
*/
|
|
public function test_update_blog_details_should_purge_blogmeta_cache() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped();
|
|
}
|
|
|
|
if ( function_exists( 'wp_initialize_site' ) ) {
|
|
$this->setExpectedDeprecated( 'wpmu_new_blog' );
|
|
}
|
|
|
|
$u = self::factory()->user->create();
|
|
|
|
$b1 = self::factory()->blog->create();
|
|
bp_blogs_record_blog( $b1, $u, true );
|
|
|
|
// prime cache
|
|
bp_blogs_get_blogmeta( $b1, 'url' );
|
|
$this->assertNotEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
|
|
// updating blog details should purge cache
|
|
update_blog_details( $b1, array(
|
|
'domain' => 'awesome.com'
|
|
) );
|
|
|
|
// assert cache is purged
|
|
$this->assertEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) );
|
|
}
|
|
}
|