[REF] Add test for renewing old expired membership via form
authoreileen <emcnaughton@wikimedia.org>
Fri, 5 Jun 2020 11:35:40 +0000 (23:35 +1200)
committereileen <emcnaughton@wikimedia.org>
Tue, 9 Jun 2020 19:56:48 +0000 (07:56 +1200)
This also removes few lines that the test shows are not needed

CRM/Member/Form/MembershipRenewal.php
tests/phpunit/CRM/Member/Form/MembershipRenewalTest.php

index 6a6d41cb6cf2fcbd156083182591c498a1e923dc..15166fd29c0d15f3f322b9e4b0cb83f83030d753 100644 (file)
@@ -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 {
 
index 9f1bd1563d7338f30ffda98605fc8a91e9293eeb..6f5558bf54664bda4e20db01a81de1dc3dafc9b9 100644 (file)
@@ -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" <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']);
+  }
+
 }