CRM-18277 : add test & fix for the contact.source field.
authorMathieu Lutfy <mathieu@bidon.ca>
Thu, 31 Mar 2016 03:26:17 +0000 (23:26 -0400)
committereileen <emcnaughton@wikimedia.org>
Tue, 17 May 2016 13:00:16 +0000 (01:00 +1200)
CRM/Contribute/Form/AbstractEditPayment.php
tests/phpunit/CRM/Contribute/Form/ContributionTest.php

index 36c221f39d0a2a53b56214d8ae07086eb461a0b9..e006218a3ec1f9cfbd40484a23274ece4087f592 100644 (file)
@@ -699,6 +699,12 @@ LEFT JOIN  civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co
 
     if ($hasBillingField) {
       $addressParams = array_merge($this->_params, $addressParams);
+      // CRM-18277 don't let this get passed in because we don't want contribution source to override contact source.
+      // Ideally we wouldn't just randomly merge everything into addressParams but just pass in a relevant array.
+      // Note this source field is covered by a unit test.
+      if (isset($addressParams['source'])) {
+        unset($addressParams['source']);
+      }
       //here we are setting up the billing contact - if different from the member they are already created
       // but they will get billing details assigned
       CRM_Contact_BAO_Contact::createProfileContact($addressParams, $fields,
index b05e88a349d7ddbac734dfa173d6b6e4f008fc23..2f89b30ea013158d0c6b1ef7a631157874774b1a 100644 (file)
@@ -222,7 +222,7 @@ class CRM_Contribute_Form_ContributionTest extends CiviUnitTestCase {
         'receipt_date_time' => '',
         'payment_processor_id' => $paymentProcessorID,
         'currency' => 'USD',
-        'source' => '',
+        'source' => 'bob sled race',
       ), CRM_Core_Action::ADD);
     }
     catch (Civi\Payment\Exception\PaymentProcessorException $e) {
@@ -233,6 +233,8 @@ class CRM_Contribute_Form_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'contribution_status_id' => 'Pending',
     ), 1);
+    $contact = $this->callAPISuccessGetSingle('Contact', array('id' => $this->_individualId));
+    $this->assertEmpty($contact['source']);
   }
 
   /**