From 121c46166149291a676fd808ec7cbc00e955d88d Mon Sep 17 00:00:00 2001 From: "deb.monish" Date: Thu, 20 Apr 2017 16:50:55 +1200 Subject: [PATCH] CRM-20264 add test for submitting pan_truncation & card_type_id via the api --- CRM/Contribute/BAO/Contribution.php | 2 ++ tests/phpunit/api/v3/ContributionTest.php | 43 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index e527ad5d95..fe49c31bca 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3385,6 +3385,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac // also make it available as return value self::recordAlwaysAccountsReceivable($trxnParams, $params); $trxnParams['pan_truncation'] = CRM_Utils_Array::value('pan_truncation', $params); + $trxnParams['card_type_id'] = CRM_Utils_Array::value('card_type_id', $params); $return = $financialTxn = CRM_Core_BAO_FinancialTrxn::create($trxnParams); $params['entity_id'] = $financialTxn->id; if (empty($params['partial_payment_total']) && empty($params['partial_amount_pay'])) { @@ -3808,6 +3809,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $params['partial_amount_pay'] = $trxnsData['total_amount']; $trxnsData['net_amount'] = !empty($trxnsData['net_amount']) ? $trxnsData['net_amount'] : $trxnsData['total_amount']; $params['pan_truncation'] = CRM_Utils_Array::value('pan_truncation', $trxnsData); + $params['card_type_id'] = CRM_Utils_Array::value('card_type_id', $trxnsData); // record the entry $financialTrxn = CRM_Contribute_BAO_Contribution::recordFinancialAccounts($params, $trxnsData); diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index 4f6ac3f9ed..decce19157 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -3576,4 +3576,47 @@ class api_v3_ContributionTest extends CiviUnitTestCase { return $contributionPage; } + /** + * function to test card_type and pan truncation. + */ + public function testCardTypeAndPanTruncation() { + $creditCardTypeIDs = array_flip(CRM_Financial_DAO_FinancialTrxn::buildOptions('card_type_id')); + $contactId = $this->individualCreate(); + $params = array( + 'contact_id' => $contactId, + 'receive_date' => '2016-01-20', + 'total_amount' => 100, + 'financial_type_id' => 1, + 'payment_instrument' => 'Credit Card', + 'card_type_id' => $creditCardTypeIDs['Visa'], + 'pan_truncation' => 4567, + ); + $contribution = $this->callAPISuccess('contribution', 'create', $params); + $lastFinancialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC'); + $financialTrxn = $this->callAPISuccessGetSingle( + 'FinancialTrxn', + array( + 'id' => $lastFinancialTrxnId['financialTrxnId'], + 'return' => array('card_type_id', 'pan_truncation'), + ) + ); + $this->assertEquals(CRM_Utils_Array::value('card_type_id', $financialTrxn), $creditCardTypeIDs['Visa']); + $this->assertEquals(CRM_Utils_Array::value('pan_truncation', $financialTrxn), 4567); + $params = array( + 'id' => $contribution['id'], + 'pan_truncation' => 2345, + 'card_type_id' => $creditCardTypeIDs['Amex'], + ); + $contribution = $this->callAPISuccess('contribution', 'create', $params); + $financialTrxn = $this->callAPISuccessGetSingle( + 'FinancialTrxn', + array( + 'id' => $lastFinancialTrxnId['financialTrxnId'], + 'return' => array('card_type_id', 'pan_truncation'), + ) + ); + $this->assertEquals(CRM_Utils_Array::value('card_type_id', $financialTrxn), $creditCardTypeIDs['Amex']); + $this->assertEquals(CRM_Utils_Array::value('pan_truncation', $financialTrxn), 2345); + } + } -- 2.25.1