From 91859d209822f654dd3881b722bdeaf95acf7b1e Mon Sep 17 00:00:00 2001 From: Jeremy Felt Date: Fri, 3 Jun 2016 14:38:01 +0000 Subject: [PATCH] Multisite: Add initial tests for `WP_MS_Sites_List_Table` Different tests are used for subdomain and subdirectory installs as domain and path are searched differently for each. Only trailing wildcard searches are tested because leading wildcards are not yet supported. See #36675. git-svn-id: https://develop.svn.wordpress.org/trunk@37633 602fd350-edb4-49c9-b593-d223f7449a82 --- .../tests/multisite/wpMSSitesListTable.php | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 tests/phpunit/tests/multisite/wpMSSitesListTable.php diff --git a/tests/phpunit/tests/multisite/wpMSSitesListTable.php b/tests/phpunit/tests/multisite/wpMSSitesListTable.php new file mode 100644 index 0000000000..ddbb8c038f --- /dev/null +++ b/tests/phpunit/tests/multisite/wpMSSitesListTable.php @@ -0,0 +1,187 @@ +table = _get_list_table( 'WP_MS_Sites_List_Table' ); + } + + public static function wpSetUpBeforeClass( $factory ) { + self::$site_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/' ), + 'wordpress.org/afoo/' => array( 'domain' => 'wordpress.org', 'path' => '/afoo/' ), + '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/' ), + 'test.example.org/' => array( 'domain' => 'test.example.org', 'path' => '/' ), + 'test2.example.org/' => array( 'domain' => 'test2.example.org', 'path' => '/' ), + 'test3.example.org/zig/' => array( 'domain' => 'test3.example.org', 'path' => '/zig/' ), + 'atest.example.org/' => array( 'domain' => 'atest.example.org', 'path' => '/' ), + ); + + foreach ( self::$site_ids as &$id ) { + $id = $factory->blog->create( $id ); + } + unset( $id ); + } + + public static function wpTearDownAfterClass() { + foreach ( self::$site_ids as $site_id ) { + wpmu_delete_blog( $site_id, true ); + } + } + + public function test_ms_sites_list_table_default_items() { + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + $this->assertEqualSets( array( 1 ) + self::$site_ids, $items ); + } + + public function test_ms_sites_list_table_subdirectory_path_search_items() { + if ( is_subdomain_install() ) { + $this->markTestSkipped( 'Path search is not available for subdomain configurations.' ); + } + + $_REQUEST['s'] = 'foo'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $expected = array( + self::$site_ids['wordpress.org/foo/'], + self::$site_ids['make.wordpress.org/foo/'], + self::$site_ids['www.w.org/foo/'], + ); + + $this->assertEqualSets( $expected, $items ); + } + + public function test_ms_sites_list_table_subdirectory_multiple_path_search_items() { + if ( is_subdomain_install() ) { + $this->markTestSkipped( 'Path search is not available for subdomain configurations.' ); + } + + $_REQUEST['s'] = 'foo/bar'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $expected = array( + self::$site_ids['wordpress.org/foo/bar/'], + self::$site_ids['www.w.org/foo/bar/'], + ); + + $this->assertEqualSets( $expected, $items ); + } + + public function test_ms_sites_list_table_invalid_path_search_items() { + $_REQUEST['s'] = 'foobar'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $this->assertEmpty( $items ); + } + + public function test_ms_sites_list_table_subdomain_domain_search_items() { + if ( ! is_subdomain_install() ) { + $this->markTestSkipped( 'Domain search is not available for subdirectory configurations.' ); + } + + $_REQUEST['s'] = 'test'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $expected = array( + self::$site_ids['test.example.org/'], + ); + + $this->assertEqualSets( $expected, $items ); + } + + public function test_ms_sites_list_table_subdomain_domain_search_items_with_trailing_wildcard() { + if ( ! is_subdomain_install() ) { + $this->markTestSkipped( 'Domain search is not available for subdirectory configurations.' ); + } + + $_REQUEST['s'] = 'test*'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $expected = array( + self::$site_ids['test.example.org/'], + self::$site_ids['test2.example.org/'], + self::$site_ids['test3.example.org/zig/'], + ); + + $this->assertEqualSets( $expected, $items ); + } + + public function test_ms_sites_list_table_subdirectory_path_search_items_with_trailing_wildcard() { + if ( is_subdomain_install() ) { + $this->markTestSkipped( 'Path search is not available for subdomain configurations.' ); + } + + $_REQUEST['s'] = 'fo*'; + + $this->table->prepare_items(); + + $items = wp_list_pluck( $this->table->items, 'blog_id' ); + $items = array_map( 'intval', $items ); + + unset( $_REQUEST['s'] ); + + $expected = array( + self::$site_ids['wordpress.org/foo/'], + self::$site_ids['wordpress.org/foo/bar/'], + self::$site_ids['make.wordpress.org/foo/'], + self::$site_ids['www.w.org/foo/'], + self::$site_ids['www.w.org/foo/bar/'], + ); + + $this->assertEqualSets( $expected, $items ); + } +} +endif;