From f725b680b07151b75eb71ef92980328c0d95ae26 Mon Sep 17 00:00:00 2001
From: Travis Weston <tweston@bangordailynews.com>
Date: Wed, 20 May 2015 21:06:47 -0400
Subject: [PATCH 1/2] Add more methods, and every capability found in the codex

---
 tests/phpunit/tests/user/capabilities.php | 135 +++++++++++++++++++++++++-----
 1 file changed, 115 insertions(+), 20 deletions(-)

diff --git a/tests/phpunit/tests/user/capabilities.php b/tests/phpunit/tests/user/capabilities.php
index 6a1044b..39396dc 100644
--- a/tests/phpunit/tests/user/capabilities.php
+++ b/tests/phpunit/tests/user/capabilities.php
@@ -38,9 +38,94 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		return $meta_value;
 	}
 
+	function _administratorRoles( $user, $has = true ) {
+	
+		$method = ( $has === true ) ? 'assertTrue' : 'assertFalse';
+
+		$this->$method( $user->has_cap('activate_plugins') );
+		$this->$method( $user->has_cap('create_users') );
+		$this->$method( $user->has_cap('delete_plugins') );
+		$this->$method( $user->has_cap('delete_themes') );
+		$this->$method( $user->has_cap('delete_users') );
+		$this->$method( $user->has_cap('edit_files') );
+		$this->$method( $user->has_cap('edit_plugins') );
+		$this->$method( $user->has_cap('edit_theme_options') );
+		$this->$method( $user->has_cap('edit_themes') );
+		$this->$method( $user->has_cap('edit_users') );
+		$this->$method( $user->has_cap('export') );
+		$this->$method( $user->has_cap('import') );
+		$this->$method( $user->has_cap('install_plugins') );
+		$this->$method( $user->has_cap('install_themes') );
+		$this->$method( $user->has_cap('list_users') );
+		$this->$method( $user->has_cap('manage_options') );
+		$this->$method( $user->has_cap('promote_users') );
+		$this->$method( $user->has_cap('remove_users') );
+		$this->$method( $user->has_cap('switch_themes') );
+		$this->$method( $user->has_cap('update_core') );
+		$this->$method( $user->has_cap('update_plugins') );
+		$this->$method( $user->has_cap('update_themes') );
+		$this->$method( $user->has_cap('edit_dashboard') );
+
+	}
+	
+	function _editorRoles( $user, $has = true ) {
+
+		$method = ( $has === true ) ? 'assertTrue' : 'assertFalse';
+
+		$this->$method($user->has_cap('moderate_comments'));
+		$this->$method($user->has_cap('manage_categories'));
+		$this->$method($user->has_cap('manage_links'));
+		$this->$method($user->has_cap('edit_others_posts'));
+		$this->$method($user->has_cap('edit_pages'));
+		$this->$method($user->has_cap('edit_others_pages'));
+		$this->$method($user->has_cap('edit_published_pages'));
+		$this->$method($user->has_cap('publish_pages'));
+		$this->$method($user->has_cap('delete_pages'));
+		$this->$method($user->has_cap('delete_others_posts'));
+		$this->$method($user->has_cap('delete_published_pages'));
+		$this->$method($user->has_cap('delete_others_posts'));
+		$this->$method($user->has_cap('delete_private_posts'));
+		$this->$method($user->has_cap('edit_private_posts'));
+		$this->$method($user->has_cap('read_private_posts'));
+		$this->$method($user->has_cap('delete_private_pages'));
+		$this->$method($user->has_cap('edit_private_pages'));
+		$this->$method($user->has_cap('read_private_pages'));
+		$this->$method($user->has_cap('unfiltered_html'));
+
+	}
+
+	function _authorRoles( $user, $has = true ) {
+		
+		$method = ( $has === true ) ? 'assertTrue' : 'assertFalse';
+
+		$this->$method($user->has_cap('edit_published_posts'));
+		$this->$method($user->has_cap('upload_files'));
+		$this->$method($user->has_cap('publish_posts'));
+		$this->$method($user->has_cap('delete_published_posts'));
+
+	}
+
+	function _contributorRoles( $user, $has = true ) {
+
+		$method = ( $has === true ) ? 'assertTrue' : 'assertFalse';
+
+		$this->$method($user->has_cap('edit_posts'));
+		$this->$method($user->has_cap('delete_posts'));	
+
+	}
+
+	function _subscriberRoles( $user, $has = true ) {
+
+		$method = ( $has === true ) ? 'assertTrue' : 'assertFalse';
+
+		$this->$method($user->has_cap('read'));
+
+	}
+
 	// test the default roles
 
 	function test_user_administrator() {
+
 		$id = $this->factory->user->create( array( 'role' => 'administrator' ) );
 		$user = new WP_User($id);
 		$this->assertTrue($user->exists(), "Problem getting user $id");
@@ -49,10 +134,13 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		$this->assertEquals(array('administrator'), $user->roles);
 
 		// check a few of the main capabilities
-		$this->assertTrue($user->has_cap('switch_themes'));
-		$this->assertTrue($user->has_cap('list_users'));
-		$this->assertTrue($user->has_cap('manage_options'));
 		$this->assertTrue($user->has_cap('level_10'));
+		$this->_administratorRoles( $user, true );
+		$this->_editorRoles( $user, true );
+		$this->_authorRoles( $user, true );
+		$this->_contributorRoles( $user, true );
+		$this->_subscriberRoles( $user, true );
+
 	}
 
 	function test_user_editor() {
@@ -64,14 +152,14 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		$this->assertEquals(array('editor'), $user->roles);
 
 		// check a few of the main capabilities
-		$this->assertTrue($user->has_cap('moderate_comments'));
-		$this->assertTrue($user->has_cap('manage_categories'));
-		$this->assertTrue($user->has_cap('upload_files'));
 		$this->assertTrue($user->has_cap('level_7'));
+		$this->_editorRoles( $user, true );
+		$this->_authorRoles( $user, true );
+		$this->_contributorRoles( $user, true );
+		$this->_subscriberRoles( $user, true );
 
 		// and a few capabilities this user doesn't have
-		$this->assertFalse($user->has_cap('switch_themes'));
-		$this->assertFalse($user->has_cap('edit_users'));
+		$this->_administratorRoles( $user, false );
 		$this->assertFalse($user->has_cap('level_8'));
 	}
 
@@ -84,15 +172,16 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		$this->assertEquals(array('author'), $user->roles);
 
 		// check a few of the main capabilities
-		$this->assertTrue($user->has_cap('edit_posts'));
-		$this->assertTrue($user->has_cap('edit_published_posts'));
-		$this->assertTrue($user->has_cap('upload_files'));
 		$this->assertTrue($user->has_cap('level_2'));
+		$this->_authorRoles( $user, true );
+		$this->_contributorRoles( $user, true );
+		$this->_subscriberRoles( $user, true );
 
 		// and a few capabilities this user doesn't have
-		$this->assertFalse($user->has_cap('moderate_comments'));
-		$this->assertFalse($user->has_cap('manage_categories'));
 		$this->assertFalse($user->has_cap('level_3'));
+		$this->_administratorRoles( $user, false );
+		$this->_editorRoles( $user, false );
+
 	}
 
 	function test_user_contributor() {
@@ -104,18 +193,21 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		$this->assertEquals(array('contributor'), $user->roles);
 
 		// check a few of the main capabilities
-		$this->assertTrue($user->has_cap('edit_posts'));
-		$this->assertTrue($user->has_cap('read'));
+		$this->_contributorRoles( $user, true );
+		$this->_subscriberRoles( $user, true );
 		$this->assertTrue($user->has_cap('level_1'));
 		$this->assertTrue($user->has_cap('level_0'));
 
 		// and a few capabilities this user doesn't have
-		$this->assertFalse($user->has_cap('upload_files'));
-		$this->assertFalse($user->has_cap('edit_published_posts'));
 		$this->assertFalse($user->has_cap('level_2'));
+		$this->_administratorRoles( $user, false );
+		$this->_editorRoles( $user, false );
+		$this->_authorRoles( $user, false );
+
 	}
 
 	function test_user_subscriber() {
+
 		$id = $this->factory->user->create( array( 'role' => 'subscriber' ) );
 		$user = new WP_User($id);
 		$this->assertTrue($user->exists(), "Problem getting user $id");
@@ -124,13 +216,16 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 		$this->assertEquals(array('subscriber'), $user->roles);
 
 		// check a few of the main capabilities
-		$this->assertTrue($user->has_cap('read'));
+		$this->_subscriberRoles( $user, true );
 		$this->assertTrue($user->has_cap('level_0'));
 
 		// and a few capabilities this user doesn't have
-		$this->assertFalse($user->has_cap('upload_files'));
-		$this->assertFalse($user->has_cap('edit_posts'));
 		$this->assertFalse($user->has_cap('level_1'));
+		$this->_administratorRoles( $user, false );
+		$this->_editorRoles( $user, false );
+		$this->_authorRoles( $user, false );
+		$this->_contributorRoles( $user, false );
+
 	}
 
 	// a role that doesn't exist
-- 
2.1.4


From f224327ff1a29d0e5c8a93edef5d79619b29f2ea Mon Sep 17 00:00:00 2001
From: Travis Weston <tweston@bangordailynews.com>
Date: Wed, 20 May 2015 22:30:37 -0400
Subject: [PATCH 2/2] Properly test manage_links in all it's forms

---
 tests/phpunit/tests/user/capabilities.php | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/tests/phpunit/tests/user/capabilities.php b/tests/phpunit/tests/user/capabilities.php
index 39396dc..0358d3f 100644
--- a/tests/phpunit/tests/user/capabilities.php
+++ b/tests/phpunit/tests/user/capabilities.php
@@ -74,7 +74,19 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
 
 		$this->$method($user->has_cap('moderate_comments'));
 		$this->$method($user->has_cap('manage_categories'));
-		$this->$method($user->has_cap('manage_links'));
+		
+		if( $has === true ) {
+			
+			update_option('link_manager_enabled', true);
+			$this->assertTrue( get_option('link_manager_enabled') );
+			$this->assertTrue( $user->has_cap( 'manage_links' ) );
+			
+			update_option('link_manager_enabled', false);
+			$this->assertFalse( get_option('link_manager_enabled') );
+			
+		}
+
+		$this->assertFalse( $user->has_cap( 'manage_links' ) );
 		$this->$method($user->has_cap('edit_others_posts'));
 		$this->$method($user->has_cap('edit_pages'));
 		$this->$method($user->has_cap('edit_others_pages'));
-- 
2.1.4

