$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'];
class api_v3_ContributionTest extends CiviUnitTestCase {
use CRMTraits_Profile_ProfileTrait;
+ use CRMTraits_Custom_CustomDataTrait;
protected $_individualId;
protected $_contribution;
'min_amount' => 10,
'max_amount' => 1000,
];
+ $this->entity = $this->_entity;
}
/**
$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,
+ ]);
+ }
+ }
+
}