From 93c482a4c64a90c4eab07cd9c0f891f1965ffd6f Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Mon, 5 Jan 2015 18:45:01 +1300 Subject: [PATCH] CRM-15746 add test --- tests/phpunit/api/v3/MembershipTest.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/phpunit/api/v3/MembershipTest.php b/tests/phpunit/api/v3/MembershipTest.php index 98cc9adba1..c04df37f0d 100644 --- a/tests/phpunit/api/v3/MembershipTest.php +++ b/tests/phpunit/api/v3/MembershipTest.php @@ -812,6 +812,29 @@ class api_v3_MembershipTest extends CiviUnitTestCase { $this->customGroupDelete($ids['custom_group_id']); } + /** + * per CRM-15746 check that the id can be altered in an update hook + */ + function testMembershipUpdateCreateHookCRM15746() { + $this->hookClass->setHook('civicrm_pre', array($this, 'hook_civicrm_pre_update_create_membership')); + $result = $this->callAPISuccess('membership', 'create', $this->_params); + $this->callAPISuccess('membership', 'create', array('id' => $result['id'], 'end_date' => '1 year ago')); + $this->callAPISuccessGetCount('membership', array(), 2); + $this->hookClass->reset(); + $this->callAPISuccess('membership', 'create', array('id' => $result['id'], 'end_date' => '1 year ago')); + $this->callAPISuccessGetCount('membership', array(), 2); + } + + function hook_civicrm_pre_update_create_membership($op, $objectName, $id, &$params) { + if ($objectName == 'Membership' && $op == 'edit') { + $existingMembership = $this->callAPISuccessGetSingle('membership', array('id' => $params['id'])); + unset($params['id'], $params['membership_id']); + $params['join_date'] = $params['membership_start_date'] = $params['start_date']= date('Ymd000000', strtotime($existingMembership['start_date'])); + $params = array_merge($existingMembership, $params); + $params['id'] = NULL; + } + } + /** * Test civicrm_contact_memberships_create Invalid membership data * Error expected. -- 2.25.1