tests/phpunit - Declare `@group headless`
[civicrm-core.git] / tests / phpunit / CRM / Group / Page / AjaxTest.php
index 2b3989a313ce82c010cc13141ea677dde2657981..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,9 +85,27 @@ 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,7 +117,7 @@ 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('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
@@ -117,7 +138,7 @@ 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('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
@@ -129,7 +150,7 @@ 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('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']);
@@ -141,7 +162,7 @@ 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('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
@@ -154,7 +175,7 @@ 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('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']);
@@ -166,7 +187,7 @@ 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('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
@@ -177,7 +198,7 @@ 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('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']);
@@ -256,6 +277,7 @@ 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');
@@ -273,6 +295,7 @@ 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');
@@ -283,6 +306,7 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   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');
@@ -293,6 +317,7 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
     $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');
@@ -311,6 +336,7 @@ 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');
@@ -320,6 +346,7 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
   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');
@@ -332,7 +359,7 @@ 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');
@@ -345,7 +372,7 @@ 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');
@@ -369,7 +396,7 @@ 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');
@@ -392,7 +419,7 @@ 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');
@@ -405,7 +432,7 @@ 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');
@@ -418,7 +445,7 @@ 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');