Tests: Share test fixtures in multisite bootstrap tests

* Remove unnecessary `setUp` and `tearDown` methods.
* Create networks and sites in `wpSetupBeforeClass` to share throughout.
* Destroy networks and sites in `wpTearDownAfterClass` to unpollute.

See #36566, #34941.


git-svn-id: https://develop.svn.wordpress.org/trunk@37234 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jeremy Felt 2016-04-18 01:37:47 +00:00
parent 89877c5941
commit e4efe5fac9
1 changed files with 95 additions and 114 deletions

View File

@ -9,29 +9,13 @@ if ( is_multisite() ) :
* @group multisite
*/
class Tests_Multisite_Bootstrap extends WP_UnitTestCase {
protected $suppress = false;
protected static $network_ids;
protected static $site_ids;
function setUp() {
global $wpdb;
parent::setUp();
$this->suppress = $wpdb->suppress_errors();
}
function tearDown() {
global $wpdb;
$wpdb->suppress_errors( $this->suppress );
parent::tearDown();
}
/**
* @ticket 27003
*/
function test_get_network_by_path() {
global $wpdb;
$ids = array(
public static function wpSetUpBeforeClass( $factory ) {
self::$network_ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ),
'wordpress.org/one/' => array( 'domain' => 'wordpress.org', 'path' => '/one/' ),
'wordpress.net/' => array( 'domain' => 'wordpress.net', 'path' => '/' ),
'www.wordpress.net/' => array( 'domain' => 'www.wordpress.net', 'path' => '/' ),
@ -39,35 +23,71 @@ class Tests_Multisite_Bootstrap extends WP_UnitTestCase {
'wordpress.net/three/' => array( 'domain' => 'wordpress.net', 'path' => '/three/' ),
);
foreach ( $ids as &$id ) {
$id = self::factory()->network->create( $id );
foreach ( self::$network_ids as &$id ) {
$id = $factory->network->create( $id );
}
unset( $id );
$this->assertEquals( $ids['www.wordpress.net/'],
self::$site_ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/', 'site_id' => self::$network_ids['wordpress.org/'] ),
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/', 'site_id' => self::$network_ids['wordpress.org/'] ),
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/', 'site_id' => self::$network_ids['wordpress.org/'] ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/', 'site_id' => self::$network_ids['make.wordpress.org/'] ),
'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/', 'site_id' => self::$network_ids['make.wordpress.org/'] ),
'www.w.org/' => array( 'domain' => 'www.w.org', 'path' => '/' ),
'www.w.org/foo/' => array( 'domain' => 'www.w.org', 'path' => '/foo/' ),
'www.w.org/foo/bar/' => array( 'domain' => 'www.w.org', 'path' => '/foo/bar/' ),
);
foreach ( self::$site_ids as &$id ) {
$id = $factory->blog->create( $id );
}
unset( $id );
}
public static function wpTearDownAfterClass() {
global $wpdb;
foreach( self::$site_ids as $id ) {
wpmu_delete_blog( $id, true );
}
foreach( self::$network_ids as $id ) {
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->sitemeta} WHERE site_id = %d", $id ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->site} WHERE id= %d", $id ) );
}
wp_update_network_site_counts();
}
/**
* @ticket 27003
*/
function test_get_network_by_path() {
$this->assertEquals( self::$network_ids['www.wordpress.net/'],
get_network_by_path( 'www.wordpress.net', '/notapath/' )->id );
$this->assertEquals( $ids['www.wordpress.net/two/'],
$this->assertEquals( self::$network_ids['www.wordpress.net/two/'],
get_network_by_path( 'www.wordpress.net', '/two/' )->id );
// This should find /one/ despite the www.
$this->assertEquals( $ids['wordpress.org/one/'],
$this->assertEquals( self::$network_ids['wordpress.org/one/'],
get_network_by_path( 'www.wordpress.org', '/one/' )->id );
// This should not find /one/ because the domains don't match.
$this->assertEquals( $ids['wordpress.org/'],
$this->assertEquals( self::$network_ids['wordpress.org/'],
get_network_by_path( 'site1.wordpress.org', '/one/' )->id );
$this->assertEquals( $ids['wordpress.net/three/'],
$this->assertEquals( self::$network_ids['wordpress.net/three/'],
get_network_by_path( 'wordpress.net', '/three/' )->id );
$this->assertEquals( $ids['wordpress.net/'],
$this->assertEquals( self::$network_ids['wordpress.net/'],
get_network_by_path( 'wordpress.net', '/notapath/' )->id );
$this->assertEquals( $ids['wordpress.net/'],
$this->assertEquals( self::$network_ids['wordpress.net/'],
get_network_by_path( 'site1.wordpress.net', '/notapath/' )->id );
$this->assertEquals( $ids['wordpress.net/'],
$this->assertEquals( self::$network_ids['wordpress.net/'],
get_network_by_path( 'site1.wordpress.net', '/three/' )->id );
}
@ -76,74 +96,58 @@ class Tests_Multisite_Bootstrap extends WP_UnitTestCase {
* @ticket 27927
*/
function test_get_site_by_path() {
$ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/' ),
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/' ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ),
'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/' ),
'www.w.org/' => array( 'domain' => 'www.w.org', 'path' => '/' ),
'www.w.org/foo/' => array( 'domain' => 'www.w.org', 'path' => '/foo/' ),
'www.w.org/foo/bar/' => array( 'domain' => 'www.w.org', 'path' => '/foo/bar/' ),
);
foreach ( $ids as &$id ) {
$id = self::factory()->blog->create( $id );
}
unset( $id );
$this->assertEquals( $ids['wordpress.org/'],
$this->assertEquals( self::$site_ids['wordpress.org/'],
get_site_by_path( 'wordpress.org', '/notapath/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/'],
$this->assertEquals( self::$site_ids['wordpress.org/'],
get_site_by_path( 'www.wordpress.org', '/notapath/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'www.wordpress.org', '/foo/bar/baz/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 3 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'www.wordpress.org', '/foo/bar/baz/', 3 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 2 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/bar/'],
get_site_by_path( 'www.wordpress.org', '/foo/bar/baz/', 2 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 1 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/'],
$this->assertEquals( self::$site_ids['wordpress.org/foo/'],
get_site_by_path( 'www.wordpress.org', '/foo/bar/baz/', 1 )->blog_id );
$this->assertEquals( $ids['wordpress.org/'],
$this->assertEquals( self::$site_ids['wordpress.org/'],
get_site_by_path( 'wordpress.org', '/', 0 )->blog_id );
$this->assertEquals( $ids['wordpress.org/'],
$this->assertEquals( self::$site_ids['wordpress.org/'],
get_site_by_path( 'www.wordpress.org', '/', 0 )->blog_id );
$this->assertEquals( $ids['make.wordpress.org/foo/'],
$this->assertEquals( self::$site_ids['make.wordpress.org/foo/'],
get_site_by_path( 'make.wordpress.org', '/foo/bar/baz/qux/', 4 )->blog_id );
$this->assertEquals( $ids['make.wordpress.org/foo/'],
$this->assertEquals( self::$site_ids['make.wordpress.org/foo/'],
get_site_by_path( 'www.make.wordpress.org', '/foo/bar/baz/qux/', 4 )->blog_id );
$this->assertEquals( $ids['www.w.org/'],
$this->assertEquals( self::$site_ids['www.w.org/'],
get_site_by_path( 'www.w.org', '/', 0 )->blog_id );
$this->assertEquals( $ids['www.w.org/'],
$this->assertEquals( self::$site_ids['www.w.org/'],
get_site_by_path( 'www.w.org', '/notapath/' )->blog_id );
$this->assertEquals( $ids['www.w.org/foo/bar/'],
$this->assertEquals( self::$site_ids['www.w.org/foo/bar/'],
get_site_by_path( 'www.w.org', '/foo/bar/baz/' )->blog_id );
$this->assertEquals( $ids['www.w.org/foo/'],
$this->assertEquals( self::$site_ids['www.w.org/foo/'],
get_site_by_path( 'www.w.org', '/foo/bar/baz/', 1 )->blog_id );
// A site installed with www will not be found by the root domain.
@ -163,72 +167,49 @@ class Tests_Multisite_Bootstrap extends WP_UnitTestCase {
function test_multisite_bootstrap() {
global $current_blog;
$network_ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ),
);
foreach ( $network_ids as &$id ) {
$id = self::factory()->network->create( $id );
}
unset( $id );
$ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/', 'site_id' => $network_ids['wordpress.org/'] ),
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['wordpress.org/'] ),
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/', 'site_id' => $network_ids['wordpress.org/'] ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/', 'site_id' => $network_ids['make.wordpress.org/'] ),
'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['make.wordpress.org/'] ),
);
foreach ( $ids as &$id ) {
$id = self::factory()->blog->create( $id );
}
unset( $id );
$this->_setup_host_request( 'wordpress.org', '/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/2014/04/23/hello-world/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/sample-page/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/?p=1' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/wp-admin/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/FOO/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/2014/04/23/hello-world/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/sample-page/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/?p=1' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/wp-admin/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['wordpress.org/'], $current_blog->site_id );
// @todo not currently passing.
//$this->_setup_host_request( 'wordpress.org', '/foo/bar/' );
@ -236,12 +217,12 @@ class Tests_Multisite_Bootstrap extends WP_UnitTestCase {
//$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'make.wordpress.org', '/' );
$this->assertEquals( $ids['make.wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['make.wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['make.wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'make.wordpress.org', '/foo/' );
$this->assertEquals( $ids['make.wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
$this->assertEquals( self::$site_ids['make.wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( self::$network_ids['make.wordpress.org/'], $current_blog->site_id );
// Request the original tests domain and path to unpollute the stack.
$this->_setup_host_request( WP_TESTS_DOMAIN, '/' );