tests/phpunit - Declare `@group headless`
[civicrm-core.git] / tests / phpunit / CRM / Group / Page / AjaxTest.php
index 30f2976a899f9149014e4fbf8c926c523f6c7724..2a17b699fec3f6dd9b3c2f15d2c8d4464543068d 100644 (file)
@@ -1,8 +1,8 @@
 <?php
-require_once 'CiviTest/CiviUnitTestCase.php';
 
 /**
  * Class CRM_Group_Page_AjaxTest
+ * @group headless
  */
 class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   /**
@@ -13,10 +13,13 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   protected $_permissionedGroup;
   /**
    * AS disabled group the contact has permission to.
-   * @var unknown
+   * @var int
    */
   protected $_permissionedDisabledGroup;
 
+  /**
+   * @var CRM_Utils_Hook_UnitTests
+   */
   public $hookClass;
 
   protected $_params = array();
@@ -60,7 +63,7 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    * @param $permission
    */
   public function setPermissionAndRequest($permission) {
-    CRM_Core_Config::singleton()->userPermissionClass->permissions = array($permission);
+    CRM_Core_Config::singleton()->userPermissionClass->permissions = (array) $permission;
     CRM_Contact_BAO_Group::getPermissionClause(TRUE);
     global $_REQUEST;
     $_REQUEST = $this->_params;
@@ -71,7 +74,7 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    * @param $hook
    */
   public function setHookAndRequest($permission, $hook) {
-    CRM_Core_Config::singleton()->userPermissionClass->permissions = array($permission);
+    CRM_Core_Config::singleton()->userPermissionClass->permissions = (array) $permission;
     $this->hookClass->setHook('civicrm_aclGroup', array($this, $hook));
     CRM_Contact_BAO_Group::getPermissionClause(TRUE);
     global $_REQUEST;
@@ -82,11 +85,29 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    * Retrieve groups as 'view all contacts'
    */
   public function testGroupListViewAllContacts() {
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
+    list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
+    $this->assertEquals(2, $total);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']);
+  }
+
+  /**
+   * Check Group Edit w/o 'edit groups' permission.
+   */
+  public function testGroupEditWithAndWithoutPermission() {
     $this->setPermissionAndRequest('view all contacts');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, $total);
     $this->assertEquals('pick-me-active', $groups[2]['group_name']);
     $this->assertEquals('not-me-active', $groups[4]['group_name']);
+
+    // as per changes made in PR-6822
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
+    list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
+    $this->assertEquals(2, $total);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']);
   }
 
   /**
@@ -96,11 +117,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListViewAllContactsFoundTitle() {
     $this->_params['title'] = 'p';
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, $total);
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -117,11 +138,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    * Retrieve groups as 'edit all contacts'
    */
   public function testGroupListEditAllContacts() {
-    $this->setPermissionAndRequest('edit all contacts');
+    $this->setPermissionAndRequest(array('edit all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, $total);
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('not-me-active', $groups[4]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']);
   }
 
   /**
@@ -129,11 +150,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListViewAllContactsEnabled() {
     $this->_params['status'] = 1;
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, $total);
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('not-me-active', $groups[4]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']);
   }
 
   /**
@@ -141,11 +162,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListViewAllContactsDisabled() {
     $this->_params['status'] = 2;
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, $total);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
-    $this->assertEquals('not-me-disabled', $groups[3]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']);
   }
 
   /**
@@ -154,10 +175,10 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   public function testGroupListViewAllContactsDisabledNotFoundTitle() {
     $this->_params['status'] = 2;
     $this->_params['title'] = 'n';
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, $total);
-    $this->assertEquals('not-me-disabled', $groups[3]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']);
   }
 
   /**
@@ -166,10 +187,10 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   public function testGroupListViewAllContactsDisabledFoundTitle() {
     $this->_params['status'] = 2;
     $this->_params['title'] = 'p';
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, $total);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -177,13 +198,13 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListViewAllContactsAll() {
     $this->_params['status'] = 3;
-    $this->setPermissionAndRequest('view all contacts');
+    $this->setPermissionAndRequest(array('view all contacts', 'edit groups'));
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(4, $total);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
-    $this->assertEquals('not-me-disabled', $groups[3]['group_name']);
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('not-me-active', $groups[4]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']);
   }
 
 
@@ -256,10 +277,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
 
   public function testTraditionalACL() {
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
   }
 
   public function testTraditionalACLNotFoundTitle() {
@@ -273,30 +295,33 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   public function testTraditionalACLFoundTitle() {
     $this->_params['title'] = 'p';
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(2, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   public function testTraditionalACLDisabled() {
     $this->_params['status'] = 2;
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   public function testTraditionalACLDisabledFoundTitle() {
     $this->_params['status'] = 2;
     $this->_params['title'] = 'p';
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   public function testTraditionalACLDisabledNotFoundTitle() {
@@ -311,20 +336,22 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   public function testTraditionalACLEnabled() {
     $this->_params['status'] = 1;
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
   }
 
   public function testTraditionalACLAll() {
     $this->_params['status'] = 3;
     $this->setupACL();
+    $this->setPermissionAndRequest('edit groups');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(2, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -332,11 +359,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListAclGroupHookDisabled() {
     $this->_params['status'] = 2;
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -345,11 +372,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   public function testGroupListAclGroupHookDisabledFound() {
     $this->_params['status'] = 2;
     $this->_params['title'] = 'p';
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -369,11 +396,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    * ACL Group hook.
    */
   public function testGroupListAclGroupHook() {
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
   }
 
   /**
@@ -392,12 +419,12 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListAclGroupHookTitleFound() {
     $this->_params['title'] = 'p';
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(2, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -405,12 +432,12 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListAclGroupHookAll() {
     $this->_params['status'] = 3;
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(2, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
-    $this->assertEquals('pick-me-disabled', $groups[1]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
   }
 
   /**
@@ -418,11 +445,11 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
    */
   public function testGroupListAclGroupHookEnabled() {
     $this->_params['status'] = 1;
-    $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup');
+    $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup');
     list($groups, $total) = CRM_Group_Page_AJAX::getGroupList();
     $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default');
     $this->assertEquals(1, $total, 'Total needs to be set correctly');
-    $this->assertEquals('pick-me-active', $groups[2]['group_name']);
+    $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
   }
 
   /**