Member detail report: test coverage for autorenew status
authorAndrew Hunt <andrew@aghstrategies.com>
Tue, 23 Jun 2020 21:26:16 +0000 (17:26 -0400)
committerAndrew Hunt <andrew@aghstrategies.com>
Tue, 23 Jun 2020 21:37:20 +0000 (17:37 -0400)
tests/phpunit/CRM/Report/Form/Member/DetailTest.php [new file with mode: 0644]

diff --git a/tests/phpunit/CRM/Report/Form/Member/DetailTest.php b/tests/phpunit/CRM/Report/Form/Member/DetailTest.php
new file mode 100644 (file)
index 0000000..92c851f
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *  Test Activity report outcome
+ *
+ * @package CiviCRM
+ */
+class CRM_Report_Form_Member_DetailTest extends CiviReportTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_orgContactID = $this->organizationCreate();
+    $this->_financialTypeId = 1;
+    $this->_membershipStatusID = $this->membershipStatusCreate('test status');
+    $this->_membershipTypeID = $this->membershipTypeCreate(['name' => 'Test Member']);
+  }
+
+  public function testAutoRenewDisplay() {
+
+    $indContactID1 = $this->individualCreate();
+    $indContactID2 = $this->individualCreate();
+    $recurStatus = array_search(
+      'In Progress',
+      CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name')
+    );
+    $recurParams = [
+      'contact_id' => $indContactID1,
+      'amount' => '5.00',
+      'currency' => 'USD',
+      'frequency_unit' => 'day',
+      'frequency_interval' => 30,
+      'create_date' => '2019-06-22',
+      'start_date' => '2019-06-22',
+      'contribution_status_id' => $recurStatus,
+    ];
+    $recur1 = civicrm_api3('ContributionRecur', 'create', $recurParams);
+    $memParams = [
+      'membership_type_id' => $this->_membershipTypeID,
+      'contact_id' => $indContactID1,
+      'status_id' => $this->_membershipStatusID,
+      'contribution_recur_id' => $recur1['id'],
+      'join_date' => '2019-06-22',
+      'start_date' => '2019-06-22',
+      'end_date' => '2019-07-22',
+      'source' => 'Payment',
+    ];
+    $mem1 = civicrm_api3('Membership', 'create', $memParams);
+    $recurParams['end_date'] = '2019-06-23';
+    $recurParams['contact_id'] = $indContactID1;
+    $recur2 = civicrm_api3('ContributionRecur', 'create', $recurParams);
+    $memParams['contact_id'] = $indContactID2;
+    $memParams['contribution_recur_id'] = $recur2['id'];
+    $mem2 = civicrm_api3('Membership', 'create', $memParams);
+
+    $input = [
+      'fields' => ['autorenew_status_id'],
+      'filters' => [
+        'tid_op' => 'in',
+        'tid_value' => $this->_membershipTypeID,
+        'autorenew_status_id_op' => 'in',
+        'autorenew_status_id_value' => $recurStatus,
+      ],
+    ];
+    $obj = $this->getReportObject('CRM_Report_Form_Member_Detail', $input);
+    $results = $obj->getResultSet();
+    $this->assertCount(2, $results);
+    foreach ($results as $result) {
+      if ($result['civicrm_contact_id'] == $indContactID1) {
+        $this->assertNotContains('(ended)', $result['civicrm_contribution_recur_autorenew_status_id']);
+      }
+      if ($result['civicrm_contact_id'] == $indContactID2) {
+        $this->assertContains('(ended)', $result['civicrm_contribution_recur_autorenew_status_id']);
+      }
+    }
+
+    $input['filters']['autorenew_status_id_op'] = 'nll';
+    $obj = $this->getReportObject('CRM_Report_Form_Member_Detail', $input);
+    $results = $obj->getResultSet();
+    $this->assertCount(0, $results);
+
+    $input['filters']['autorenew_status_id_op'] = 'in';
+    $input['filters']['autorenew_status_id_value'] = 0;
+    $obj = $this->getReportObject('CRM_Report_Form_Member_Detail', $input);
+    $results = $obj->getResultSet();
+    $this->assertCount(0, $results);
+
+    $input['filters']['autorenew_status_id_op'] = 'in';
+    $input['filters']['autorenew_status_id_value'] = 1000;
+    $obj = $this->getReportObject('CRM_Report_Form_Member_Detail', $input);
+    $results = $obj->getResultSet();
+    $this->assertCount(0, $results);
+
+    $input['filters']['autorenew_status_id_op'] = 'notin';
+    $input['filters']['autorenew_status_id_value'] = 1000;
+    $obj = $this->getReportObject('CRM_Report_Form_Member_Detail', $input);
+    $results = $obj->getResultSet();
+    $this->assertCount(2, $results);
+  }
+
+}