+ /**
+ * Create a Contribution Page with is_email_receipt = TRUE.
+ *
+ * @param array $params
+ * Params to overwrite with.
+ *
+ * @return array|int
+ */
+ protected function createReceiptableContributionPage($params = array()) {
+ $contributionPage = $this->callAPISuccess('ContributionPage', 'create', array_merge(array(
+ 'receipt_from_name' => 'Mickey Mouse',
+ 'receipt_from_email' => 'mickey@mouse.com',
+ 'title' => "Test Contribution Page",
+ 'financial_type_id' => 1,
+ 'currency' => 'CAD',
+ 'is_monetary' => TRUE,
+ 'is_email_receipt' => TRUE,
+ ), $params));
+ 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);
+ }
+