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
This commit is contained in:
parent
e7bbb482d6
commit
91859d2098
187
tests/phpunit/tests/multisite/wpMSSitesListTable.php
Normal file
187
tests/phpunit/tests/multisite/wpMSSitesListTable.php
Normal file
@ -0,0 +1,187 @@
|
||||
<?php
|
||||
|
||||
if ( is_multisite() ) :
|
||||
|
||||
/**
|
||||
* @group admin
|
||||
* @group network-admin
|
||||
*/
|
||||
class Tests_WP_MS_Sites_List_Table extends WP_UnitTestCase {
|
||||
protected static $site_ids;
|
||||
|
||||
/**
|
||||
* @var WP_MS_Sites_List_Table
|
||||
*/
|
||||
var $table = false;
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
$this->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;
|
Loading…
x
Reference in New Issue
Block a user