From 8ca611b741c0a80b432e8070fe10cfe130c131f9 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Wed, 3 Sep 2014 22:09:41 +1200 Subject: [PATCH] CRM-15207 add additional payment processor test --- CRM/Contribute/Form/Contribution/Confirm.php | 14 ++++++++-- tests/phpunit/api/v3/ContributionPageTest.php | 27 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 14a98fe1b8..8728e808af 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1832,13 +1832,15 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $paramsProcessedForForm = $form->_params = self::getFormParams($params['id'], $params); $form->_amount = $params['amount']; - $priceSetID = $form->_params['priceSetId'] = $paramsProcessedForForm['price_set_id']; $priceFields = CRM_Price_BAO_PriceSet::getSetDetail($priceSetID); $priceSetFields = reset($priceFields); $form->_values['fee'] = $priceSetFields['fields']; $form->_priceSetId = $priceSetID; $form->setFormAmountFields($priceSetID); + if (!empty($params['payment_processor'])) { + $form->_paymentProcessor = civicrm_api3('payment_processor', 'getsingle', array('id' => $params['payment_processor'])); + } $priceFields = $priceFields[$priceSetID]['fields']; CRM_Price_BAO_PriceSet::processAmount($priceFields, $paramsProcessedForForm, $lineItems, 'civicrm_contribution'); $form->_lineItem = array($priceSetID => $lineItems); @@ -1855,7 +1857,15 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr */ static function getFormParams($id, array $params) { if(!isset($params['is_pay_later'])) { - $params['is_pay_later'] = civicrm_api3('contribution_page', 'getvalue', array('id' => $id, 'return' => 'is_pay_later')); + if (!empty($params['payment_processor'])) { + $params['is_pay_later'] = 0; + } + else { + $params['is_pay_later'] = civicrm_api3('contribution_page', 'getvalue', array( + 'id' => $id, + 'return' => 'is_pay_later' + )); + } } if(empty($params['price_set_id'])) { $params['price_set_id'] = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $params['id']); diff --git a/tests/phpunit/api/v3/ContributionPageTest.php b/tests/phpunit/api/v3/ContributionPageTest.php index d97c02ad4b..03969056aa 100644 --- a/tests/phpunit/api/v3/ContributionPageTest.php +++ b/tests/phpunit/api/v3/ContributionPageTest.php @@ -217,7 +217,34 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { $this->assertEquals($membership['contact_id'], $contributions['values'][$membershipPayment['contribution_id']]['contact_id']); } + /** + * Test submit with a membership block in place + */ + public function testSubmitMembershipBlockIsSeparatePaymentPaymentProcessor() { + $this->setUpMembershipContributionPage(TRUE); + $submitParams = array( + 'price_' . $this->_ids['price_field'][0] => reset($this->_ids['price_field_value']), + 'id' => (int) $this->_ids['contribution_page'], + 'amount' => 10, + 'billing_first_name' => 'Billy', + 'billing_middle_name' => 'Goat', + 'billing_last_name' => 'Gruff', + 'selectMembership' => $this->_ids['membership_type'], + 'payment_processor' => 1, + 'credit_card_number' => '4111111111111111', + 'credit_card_type' => 'Visa', + 'credit_card_exp_date' => array('M' => 9, 'Y' => 2040 ), + 'cvv2' => 123, + ); + $this->callAPIAndDocument('contribution_page', 'submit', $submitParams, __FUNCTION__, __FILE__, 'submit contribution page', NULL, 'Submit'); + $contributions = $this->callAPISuccess('contribution', 'get', array('contribution_page_id' => $this->_ids['contribution_page'], 'contribution_status_id' => 1)); + $this->assertCount(2, $contributions['values']); + $membershipPayment = $this->callAPISuccess('membership_payment', 'getsingle', array()); + $this->assertTrue(in_array($membershipPayment['contribution_id'], array_keys($contributions['values']))); + $membership = $this->callAPISuccessGetSingle('membership', array('id' => $membershipPayment['membership_id'])); + $this->assertEquals($membership['contact_id'], $contributions['values'][$membershipPayment['contribution_id']]['contact_id']); + } /** * set up membership contribution page * @param bool $isSeparatePayment -- 2.25.1