Skip to content

Commit

Permalink
Merge pull request #17564 from eileenmcnaughton/renewd
Browse files Browse the repository at this point in the history
[REF] Add test for renewing old expired membership via form
  • Loading branch information
seamuslee001 authored Jun 14, 2020
2 parents 15e6d53 + d05aa35 commit bf9a04e
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 14 deletions.
13 changes: 0 additions & 13 deletions CRM/Member/Form/MembershipRenewal.php
Original file line number Diff line number Diff line change
Expand Up @@ -798,25 +798,12 @@ public function processMembership($contactID, $membershipTypeID, $is_test, $chan
$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 {

Expand Down
48 changes: 47 additions & 1 deletion tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,7 @@ protected function getForm($mode = 'test') {
$form->controller = new CRM_Core_Controller();
$form->_bltID = 5;
$form->_mode = $mode;
$form->_id = $this->_membershipID;
$form->setEntityId($this->_membershipID);
$form->preProcess();
return $form;
}
Expand Down Expand Up @@ -700,4 +700,50 @@ protected function getBaseSubmitParams() {
];
}

/**
* 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" <info@example.org>',
'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']);
}

}

0 comments on commit bf9a04e

Please sign in to comment.