[NFC] Add in unit test for dev/core#1460
authorSeamus Lee <seamuslee001@gmail.com>
Mon, 9 Dec 2019 23:10:24 +0000 (10:10 +1100)
committerSeamus Lee <seamuslee001@gmail.com>
Tue, 10 Dec 2019 01:01:58 +0000 (12:01 +1100)
tests/phpunit/CRMTraits/Custom/CustomDataTrait.php
tests/phpunit/api/v3/ContributionTest.php

index 25a3ac6081a40e0d525132deac98c1f32fcd367f..6830c8a517dce6e6757187d697a8fe9dde35ceaf 100644 (file)
@@ -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'];
index c2a60c169ed0c7e17b96a14de379716b5de0aede..0f58088aa3c8b660b4d1e00da66aefe762ed0b88 100644 (file)
@@ -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,
+      ]);
+    }
+  }
+
 }