From d05aa35873744104022f2b9b193ea37dcd34e5a0 Mon Sep 17 00:00:00 2001 From: eileen Date: Fri, 5 Jun 2020 23:35:40 +1200 Subject: [PATCH] [REF] Add test for renewing old expired membership via form This also removes few lines that the test shows are not needed --- CRM/Member/Form/MembershipRenewal.php | 13 ----- .../CRM/Member/Form/MembershipRenewalTest.php | 48 ++++++++++++++++++- 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/CRM/Member/Form/MembershipRenewal.php b/CRM/Member/Form/MembershipRenewal.php index 6a6d41cb6c..15166fd29c 100644 --- a/CRM/Member/Form/MembershipRenewal.php +++ b/CRM/Member/Form/MembershipRenewal.php @@ -799,25 +799,12 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form { $numRenewTerms ); - $currentMembership['join_date'] = CRM_Utils_Date::customFormat($currentMembership['join_date'], $format); foreach (['start_date', 'end_date'] as $dateType) { $currentMembership[$dateType] = $dates[$dateType] ?? NULL; } $currentMembership['is_test'] = $is_test; - - $currentMembership['source'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', - $currentMembership['id'], - 'source' - ); - - if (!empty($currentMembership['id'])) { - $ids['membership'] = $currentMembership['id']; - } $memParams = $currentMembership; $memParams['membership_type_id'] = $membershipTypeID; - - //set the log start date. - $memParams['log_start_date'] = CRM_Utils_Date::customFormat($dates['log_start_date'], $format); } else { diff --git a/tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php b/tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php index 9f1bd1563d..6f5558bf54 100644 --- a/tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php +++ b/tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php @@ -650,7 +650,7 @@ class CRM_Member_Form_MembershipRenewalTest extends CiviUnitTestCase { $form->controller = new CRM_Core_Controller(); $form->_bltID = 5; $form->_mode = $mode; - $form->_id = $this->_membershipID; + $form->setEntityId($this->_membershipID); $form->preProcess(); return $form; } @@ -700,4 +700,50 @@ class CRM_Member_Form_MembershipRenewalTest extends CiviUnitTestCase { ]; } + /** + * Test renewing an expired membership. + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + */ + public function testSubmitRenewExpired() { + $form = $this->getForm(NULL); + $this->createLoggedInUser(); + $originalMembership = $this->callAPISuccessGetSingle('membership', []); + $this->callAPISuccess('Membership', 'create', [ + 'status_id' => 'Expired', + 'id' => $originalMembership['id'], + 'start_date' => '2019-03-01', + 'join_date' => '2019-03-01', + 'end_date' => '2020-03-24', + 'source' => 'sauce', + ]); + + $params = [ + 'contact_id' => $this->_individualId, + 'membership_type_id' => [23, $this->membershipTypeAnnualFixedID], + 'renewal_date' => '2020-06-10', + 'financial_type_id' => '2', + 'num_terms' => '1', + 'from_email_address' => '"Demonstrators Anonymous" ', + 'record_contribution' => '1', + 'total_amount' => '100.00', + 'receive_date' => '2020-06-05 06:05:00', + 'payment_instrument_id' => '4', + 'contribution_status_id' => '1', + 'send_receipt' => '1', + ]; + $form->testSubmit($params); + $renewedMembership = $this->callAPISuccessGetSingle('Membership', ['id' => $originalMembership['id']]); + $this->assertEquals('sauce', $renewedMembership['source']); + $this->assertEquals(date('Y-01-01'), $renewedMembership['start_date']); + $this->assertEquals(date('2019-03-01'), $renewedMembership['join_date']); + $this->assertEquals(date('Y-12-31'), $renewedMembership['end_date']); + $log = $this->callAPISuccessGetSingle('MembershipLog', ['membership_id' => $renewedMembership['id'], 'options' => ['limit' => 1, 'sort' => 'id DESC']]); + $this->assertEquals(date('Y-01-01'), $log['start_date']); + $this->assertEquals(date('Y-12-31'), $log['end_date']); + $this->assertEquals(date('Y-m-d'), $log['modified_date']); + $this->assertEquals(CRM_Core_PseudoConstant::getKey('CRM_Member_BAO_Membership', 'status_id', 'Current'), $log['status_id']); + } + } -- 2.25.1