From cf5f7a421d80362e7c8fbb5999557394ce67cd88 Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Wed, 9 Aug 2017 16:40:08 +0530 Subject: [PATCH] CRM-21015 - Fix recurring contribution creation if not checked on main page --- CRM/Contribute/Form/Contribution/Confirm.php | 2 +- tests/phpunit/api/v3/ContributionPageTest.php | 45 +++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index e5bfaf06bc..a2d95bdc9b 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1443,7 +1443,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $isTest = CRM_Utils_Array::value('is_test', $membershipParams, FALSE); $errors = $paymentResults = array(); $form->_values['isMembership'] = TRUE; - $isRecurForFirstTransaction = CRM_Utils_Array::value('is_recur', $form->_values, CRM_Utils_Array::value('is_recur', $membershipParams)); + $isRecurForFirstTransaction = CRM_Utils_Array::value('is_recur', $form->_params, CRM_Utils_Array::value('is_recur', $membershipParams)); $totalAmount = $membershipParams['amount']; diff --git a/tests/phpunit/api/v3/ContributionPageTest.php b/tests/phpunit/api/v3/ContributionPageTest.php index 1e059b076b..e03b4bad40 100644 --- a/tests/phpunit/api/v3/ContributionPageTest.php +++ b/tests/phpunit/api/v3/ContributionPageTest.php @@ -1202,14 +1202,48 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { $this->assertEquals(2, $recurringContribution['contribution_status_id']); } + /** + * Test non-recur contribution with membership payment + */ + public function testSubmitMembershipIsSeparatePaymentNotRecur() { + //Create recur contribution page. + $this->setUpMembershipContributionPage(TRUE, TRUE); + $dummyPP = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor); + $dummyPP->setDoDirectPaymentResult(array('payment_status_id' => 1, 'trxn_id' => 'create_first_success')); + + //Sumbit payment with recur disabled. + $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', + 'email' => 'billy@goat.gruff', + 'selectMembership' => $this->_ids['membership_type'], + 'payment_processor_id' => 1, + 'credit_card_number' => '4111111111111111', + 'credit_card_type' => 'Visa', + 'credit_card_exp_date' => array('M' => 9, 'Y' => 2040), + 'cvv2' => 123, + ); + + //Assert if recur contribution is created. + $this->callAPISuccess('contribution_page', 'submit', $submitParams); + $recur = $this->callAPISuccess('contribution_recur', 'get', array()); + $this->assertEmpty($recur['count']); + } + + /** * Set up membership contribution page. * @param bool $isSeparatePayment + * @param bool $isRecur */ - public function setUpMembershipContributionPage($isSeparatePayment = FALSE) { + public function setUpMembershipContributionPage($isSeparatePayment = FALSE, $isRecur = FALSE) { $this->setUpMembershipBlockPriceSet(); $this->setupPaymentProcessor(); - $this->setUpContributionPage(); + $this->setUpContributionPage($isRecur); $this->callAPISuccess('membership_block', 'create', array( 'entity_id' => $this->_ids['contribution_page'], @@ -1334,8 +1368,13 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { /** * Help function to set up contribution page with some defaults. + * @param bool $isRecur */ - public function setUpContributionPage() { + public function setUpContributionPage($isRecur = FALSE) { + if ($isRecur) { + $this->params['is_recur'] = 1; + $this->params['recur_frequency_unit'] = 'month'; + } $contributionPageResult = $this->callAPISuccess($this->_entity, 'create', $this->params); if (empty($this->_ids['price_set'])) { $priceSet = $this->callAPISuccess('price_set', 'create', $this->_priceSetParams); -- 2.25.1