From e4efe5fac92389a7a24075b1bb928c796dcbdb96 Mon Sep 17 00:00:00 2001 From: Jeremy Felt Date: Mon, 18 Apr 2016 01:37:47 +0000 Subject: [PATCH] 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 --- tests/phpunit/tests/multisite/bootstrap.php | 209 +++++++++----------- 1 file changed, 95 insertions(+), 114 deletions(-) diff --git a/tests/phpunit/tests/multisite/bootstrap.php b/tests/phpunit/tests/multisite/bootstrap.php index c2fabbf2b2..a0ca086796 100644 --- a/tests/phpunit/tests/multisite/bootstrap.php +++ b/tests/phpunit/tests/multisite/bootstrap.php @@ -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, '/' );