From 2ac10e8771864193a1629f27d6a8686a6a81eb98 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Tue, 10 Dec 2019 10:10:24 +1100 Subject: [PATCH] [NFC] Add in unit test for dev/core#1460 --- .../CRMTraits/Custom/CustomDataTrait.php | 6 ++-- tests/phpunit/api/v3/ContributionTest.php | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/CRMTraits/Custom/CustomDataTrait.php b/tests/phpunit/CRMTraits/Custom/CustomDataTrait.php index 25a3ac6081..6830c8a517 100644 --- a/tests/phpunit/CRMTraits/Custom/CustomDataTrait.php +++ b/tests/phpunit/CRMTraits/Custom/CustomDataTrait.php @@ -116,8 +116,10 @@ trait CRMTraits_Custom_CustomDataTrait { $customField = $this->createTextCustomField(['custom_group_id' => $customGroupID]); $ids['text'] = $customField['id']; - $customField = $this->createSelectCustomField(['custom_group_id' => $customGroupID]); - $ids['select_string'] = $customField['id']; + if ((!empty($this->entity) && $this->entity !== 'Contribution') || empty($this->entity)) { + $customField = $this->createSelectCustomField(['custom_group_id' => $customGroupID]); + $ids['select_string'] = $customField['id']; + } $customField = $this->createDateCustomField(['custom_group_id' => $customGroupID]); $ids['select_date'] = $customField['id']; diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index c2a60c169e..0f58088aa3 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -19,6 +19,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase { use CRMTraits_Profile_ProfileTrait; + use CRMTraits_Custom_CustomDataTrait; protected $_individualId; protected $_contribution; @@ -97,6 +98,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase { 'min_amount' => 10, 'max_amount' => 1000, ]; + $this->entity = $this->_entity; } /** @@ -4393,4 +4395,30 @@ class api_v3_ContributionTest extends CiviUnitTestCase { $this->assertNotContains('US Dollar', $result['values']); } + public function testSetCustomDataInCreateAndHook() { + $this->createCustomGroupWithFieldsOfAllTypes(); + $this->hookClass->setHook('civicrm_post', [ + $this, + 'civicrmPostContributionCustom', + ]); + $params = $this->_params; + $params['custom_' . $this->ids['CustomField']['text']] = 'Some Text'; + $contribution = $this->callAPISuccess('Contribution', 'create', $params); + $getContribution = $this->callAPISuccess('Contribution', 'get', [ + 'id' => $contribution['id'], + 'return' => ['id', 'custom_' . $this->ids['CustomField']['text'], 'custom_' . $this->ids['CustomField']['int']], + ]); + $this->assertEquals(5, $getContribution['values'][$contribution['id']]['custom_' . $this->ids['CustomField']['int']]); + $this->assertEquals('Some Text', $getContribution['values'][$contribution['id']]['custom_' . $this->ids['CustomField']['text']]); + } + + public function civicrmPostContributionCustom($op, $objectName, $objectId, &$objectRef) { + if ($objectName === 'Contribution' && $op === 'create') { + $this->callAPISuccess('Contribution', 'create', [ + 'id' => $objectId, + 'custom_' . $this->ids['CustomField']['int'] => 5, + ]); + } + } + } -- 2.25.1