From ed78103875b19389fa78f88577487f25be03eb87 Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Fri, 6 Sep 2019 17:38:23 +0530 Subject: [PATCH] Unit test for #15094 fix --- CRM/Contribute/Form/Contribution/Confirm.php | 4 ++ .../CRM/Contribute/Form/ContributionTest.php | 59 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 95fddb2ce9..15dc241a9f 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1977,6 +1977,10 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } } + if (!empty($params['useForMember'])) { + $form->set('useForMember', 1); + $form->_useForMember = 1; + } $priceFields = $priceFields[$priceSetID]['fields']; $lineItems = []; CRM_Price_BAO_PriceSet::processAmount($priceFields, $paramsProcessedForForm, $lineItems, 'civicrm_contribution', $priceSetID); diff --git a/tests/phpunit/CRM/Contribute/Form/ContributionTest.php b/tests/phpunit/CRM/Contribute/Form/ContributionTest.php index 44c958ec06..d9ba98acce 100644 --- a/tests/phpunit/CRM/Contribute/Form/ContributionTest.php +++ b/tests/phpunit/CRM/Contribute/Form/ContributionTest.php @@ -1623,4 +1623,63 @@ Price Field - Price Field 1 1 $ 100.00 $ 100.00 $this->assertEquals("Hello", $membership2["custom_{$membershipCustomField['id']}"]); } + /** + * Test non-membership donation on a contribution page + * using membership priceset. + */ + public function testDonationOnMembershipPagePriceset() { + $contactID = $this->individualCreate(); + $this->createPriceSetWithPage(); + $form = new CRM_Contribute_Form_Contribution_Confirm(); + $form->controller = new CRM_Core_Controller(); + $form->_params = [ + 'id' => $this->_ids['contribution_page'], + "qfKey" => "donotcare", + "priceSetId" => $this->_ids['price_set'], + 'price_set_id' => $this->_ids['price_set'], + "price_" . $this->_ids['price_field'][0] => $this->_ids['price_field_value']['cont'], + "invoiceID" => "9a6f7b49358dc31c3604e463b225c5be", + "email" => "admin@example.com", + "currencyID" => "USD", + 'description' => "Membership Contribution", + 'contact_id' => $contactID, + 'select_contact_id' => $contactID, + 'useForMember' => 1, + 'skipLineItem' => 0, + 'email-5' => 'test@test.com', + 'amount' => 10, + 'tax_amount' => NULL, + 'is_pay_later' => 1, + 'is_quick_config' => 1, + ]; + $form->submit($form->_params); + + $contribution = $this->callAPISuccessGetSingle('Contribution', [ + 'contact_id' => $contactID, + ]); + //Check no membership is created. + $this->callAPIFailure('Membership', 'getsingle', [ + 'contact_id' => $contactID, + ]); + $this->contributionDelete($contribution['id']); + + //Choose Membership Priceset + $form->_params["price_{$this->_ids['price_field'][0]}"] = $this->_ids['price_field_value'][0]; + $form->_params["amount"] = 20; + $form->submit($form->_params); + + $contribution = $this->callAPISuccessGetSingle('Contribution', [ + 'contact_id' => $contactID, + ]); + //Check membership is created for the contact. + $membership = $this->callAPISuccessGetSingle('Membership', [ + 'contact_id' => $contactID, + ]); + $membershipPayment = $this->callAPISuccessGetSingle('MembershipPayment', [ + 'contribution_id' => $contribution['id'], + ]); + $this->assertEquals($membershipPayment['membership_id'], $membership['id']); + $this->membershipDelete($membership['id']); + } + } -- 2.25.1