From c69fdfbb41dc54207982ce8eae0720796e89cb69 Mon Sep 17 00:00:00 2001 From: Eileen Date: Wed, 27 Nov 2013 12:25:28 +1300 Subject: [PATCH] Fix Group Organization BAO not to error if the unique pairing up group_id & organization_id is passed in without the id --- CRM/Contact/BAO/GroupOrganization.php | 3 +++ api/v3/examples/GroupOrganizationCreate.php | 2 +- api/v3/examples/GroupOrganizationDelete.php | 2 +- api/v3/examples/GroupOrganizationGet.php | 2 +- tests/phpunit/api/v3/GroupOrganizationTest.php | 11 +++++++++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CRM/Contact/BAO/GroupOrganization.php b/CRM/Contact/BAO/GroupOrganization.php index 294def893f..b10bd0d772 100644 --- a/CRM/Contact/BAO/GroupOrganization.php +++ b/CRM/Contact/BAO/GroupOrganization.php @@ -59,6 +59,9 @@ class CRM_Contact_BAO_GroupOrganization extends CRM_Contact_DAO_GroupOrganizatio } $groupOrganization = new CRM_Contact_DAO_GroupOrganization(); $groupOrganization->copyValues($formatedValues); + // we have ensured we have group_id & organization_id so we can do a find knowing that + // this can only find a matching record + $groupOrganization->find(TRUE); $groupOrganization->save(); return $groupOrganization; } diff --git a/api/v3/examples/GroupOrganizationCreate.php b/api/v3/examples/GroupOrganizationCreate.php index a90fe3f51b..7192ba7ad1 100644 --- a/api/v3/examples/GroupOrganizationCreate.php +++ b/api/v3/examples/GroupOrganizationCreate.php @@ -64,4 +64,4 @@ function group_organization_create_expectedresult(){ * * API Standards documentation: * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ \ No newline at end of file +*/ diff --git a/api/v3/examples/GroupOrganizationDelete.php b/api/v3/examples/GroupOrganizationDelete.php index bda6975173..4599299afc 100644 --- a/api/v3/examples/GroupOrganizationDelete.php +++ b/api/v3/examples/GroupOrganizationDelete.php @@ -58,4 +58,4 @@ function group_organization_delete_expectedresult(){ * * API Standards documentation: * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ \ No newline at end of file +*/ diff --git a/api/v3/examples/GroupOrganizationGet.php b/api/v3/examples/GroupOrganizationGet.php index aab63bb6f8..5a09a709fc 100644 --- a/api/v3/examples/GroupOrganizationGet.php +++ b/api/v3/examples/GroupOrganizationGet.php @@ -58,4 +58,4 @@ function group_organization_get_expectedresult(){ * * API Standards documentation: * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ \ No newline at end of file +*/ diff --git a/tests/phpunit/api/v3/GroupOrganizationTest.php b/tests/phpunit/api/v3/GroupOrganizationTest.php index 78bf4c24c7..89cbce9a75 100644 --- a/tests/phpunit/api/v3/GroupOrganizationTest.php +++ b/tests/phpunit/api/v3/GroupOrganizationTest.php @@ -155,6 +155,17 @@ class api_v3_GroupOrganizationTest extends CiviUnitTestCase { $result = $this->callAPIAndDocument('group_organization', 'create', $params, __FUNCTION__, __FILE__); } + /** + * CRM-13841 - Load Group Org before save + */ + public function testGroupOrganizationCreateTwice() { + $params = array( + 'organization_id' => $this->_orgID, + 'group_id' => $this->_groupID, ); + $result = $this->callAPISuccess('group_organization', 'create', $params); + $result2 = $this->callAPISuccess('group_organization', 'create', $params); + $this->assertEquals($result['values'], $result2['values']); + } /** * check with empty params array */ -- 2.25.1