From: Seamus Lee Date: Tue, 7 Feb 2017 23:00:58 +0000 (+1100) Subject: Fix issue where a group contact record in status of pending cannot be immedately... X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=bd9042db72bcc866415efd8f96374adce7517e2c;p=civicrm-core.git Fix issue where a group contact record in status of pending cannot be immedately permanently deleted --- diff --git a/api/v3/GroupContact.php b/api/v3/GroupContact.php index 2528c827cb..53f055e82b 100644 --- a/api/v3/GroupContact.php +++ b/api/v3/GroupContact.php @@ -158,7 +158,7 @@ function civicrm_api3_group_contact_delete($params) { } $groupContact = civicrm_api3('GroupContact', 'get', $checkParams); if ($groupContact['count'] == 0 && !empty($params['skip_undelete'])) { - $checkParams['status'] = 'removed'; + $checkParams['status'] = array('IN' => array('Removed', 'Pending')); } $groupContact2 = civicrm_api3('GroupContact', 'get', $checkParams); if ($groupContact['count'] == 0 && $groupContact2['count'] == 0) { diff --git a/tests/phpunit/api/v3/GroupContactTest.php b/tests/phpunit/api/v3/GroupContactTest.php index c2c686871c..39509f095a 100644 --- a/tests/phpunit/api/v3/GroupContactTest.php +++ b/tests/phpunit/api/v3/GroupContactTest.php @@ -258,6 +258,31 @@ class api_v3_GroupContactTest extends CiviUnitTestCase { $groupContact = $this->callAPISuccess('groupContact', 'create', $groupContactCreateParams); $groupGetContact = $this->CallAPISuccess('groupContact', 'get', $groupContactCreateParams); $this->callAPISuccess('groupContact', 'delete', array('id' => $groupGetContact['id'], 'status' => 'Removed')); + $this->callAPISuccess('groupContact', 'delete', array('id' => $groupGetContact['id'], 'skip_undelete' => TRUE)); + $this->callAPISuccess('group', 'delete', array('id' => $groupId3)); + } + + /** + * CRM-19979 test that group cotnact delete action works when contact is in status of pendin and is a permanent delete. + */ + public function testPermanentDeleteWithPending() { + $groupId3 = $this->groupCreate(array( + 'name' => 'Test Group 3', + 'domain_id' => 1, + 'title' => 'New Test Group3 Created', + 'description' => 'New Test Group3 Created', + 'is_active' => 1, + 'visibility' => 'User and User Admin Only', + )); + $groupContactCreateParams = array( + 'contact_id' => $this->_contactId, + 'group_id' => $groupId3, + 'status' => 'Pending', + ); + $groupContact = $this->callAPISuccess('groupContact', 'create', $groupContactCreateParams); + $groupGetContact = $this->CallAPISuccess('groupContact', 'get', $groupContactCreateParams); + $this->callAPISuccess('groupContact', 'delete', array('id' => $groupGetContact['id'], 'skip_undelete' => TRUE)); + $this->callAPISuccess('group', 'delete', array('id' => $groupId3)); } /**