Merge pull request #16584 from eileenmcnaughton/role
[civicrm-core.git] / tests / phpunit / CRM / Member / BAO / MembershipStatusTest.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
7d61e75f 4 | Copyright CiviCRM LLC. All rights reserved. |
6a488035 5 | |
7d61e75f
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
6a488035 9 +--------------------------------------------------------------------+
d25dd0ee 10 */
6a488035 11
e9479dcf
EM
12/**
13 * Class CRM_Member_BAO_MembershipStatusTest
acb109b7 14 * @group headless
e9479dcf 15 */
6a488035 16class CRM_Member_BAO_MembershipStatusTest extends CiviUnitTestCase {
6a488035 17
00be9182 18 public function setUp() {
6a488035
TO
19 parent::setUp();
20 }
21
795492f3
TO
22 /**
23 * Check function add()
24 */
00be9182 25 public function testAdd() {
9099cab3 26 $params = [
6a488035
TO
27 'name' => 'pending',
28 'is_active' => 1,
9099cab3 29 ];
6a488035 30
dd12dc87 31 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035
TO
32
33 $result = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $membershipStatus->id,
34 'name', 'id',
35 'Database check on updated membership status record.'
36 );
37 $this->assertEquals($result, 'pending', 'Verify membership status is_active.');
38 }
39
00be9182 40 public function testRetrieve() {
6a488035 41
9099cab3 42 $params = [
6a488035
TO
43 'name' => 'testStatus',
44 'is_active' => 1,
9099cab3 45 ];
6a488035 46
dd12dc87 47 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
9099cab3 48 $defaults = [];
92915c55 49 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
6a488035
TO
50 $this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
51 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
52 }
e587382f 53
be004bb9 54 public function testPseudoConstantflush() {
9099cab3 55 $params = [
be004bb9
SL
56 'name' => 'testStatus',
57 'is_active' => 1,
9099cab3 58 ];
be004bb9 59 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
9099cab3 60 $defaults = [];
be004bb9
SL
61 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
62 $this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
9099cab3 63 $updateParams = [
e587382f 64 'id' => $membershipStatus->id,
615e6fb6
SL
65 'name' => 'testStatus',
66 'label' => 'Changed Status',
be004bb9 67 'is_active' => 1,
9099cab3 68 ];
e587382f 69 $membershipStatus2 = CRM_Member_BAO_MembershipStatus::add($updateParams);
615e6fb6 70 $result = CRM_Member_PseudoConstant::membershipStatus($membershipStatus->id, NULL, 'label', FALSE, FALSE);
fd94e75e 71 $this->assertEquals($result, 'Changed Status', 'Verify updated membership status label From PseudoConstant.');
be004bb9
SL
72 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
73 }
6a488035 74
00be9182 75 public function testSetIsActive() {
6a488035 76
9099cab3 77 $params = [
6a488035
TO
78 'name' => 'pending',
79 'is_active' => 1,
9099cab3 80 ];
6a488035 81
dd12dc87 82 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035
TO
83 $result = CRM_Member_BAO_MembershipStatus::setIsActive($membershipStatus->id, 0);
84 $this->assertEquals($result, TRUE, 'Verify membership status record updation.');
85
86 $isActive = $this->assertDBNotNull('CRM_Member_BAO_MembershipStatus', $membershipStatus->id,
87 'is_active', 'id',
88 'Database check on updated membership status record.'
89 );
90 $this->assertEquals($isActive, 0, 'Verify membership status is_active.');
91 }
92
00be9182 93 public function testGetMembershipStatus() {
9099cab3 94 $params = [
6a488035
TO
95 'name' => 'pending',
96 'is_active' => 1,
9099cab3 97 ];
6a488035 98
dd12dc87 99 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035
TO
100 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatus($membershipStatus->id);
101 $this->assertEquals($result['name'], 'pending', 'Verify membership status name.');
102 }
103
00be9182 104 public function testDel() {
9099cab3 105 $params = [
6a488035
TO
106 'name' => 'testStatus',
107 'is_active' => 1,
9099cab3 108 ];
6a488035 109
dd12dc87 110 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035 111 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
9099cab3 112 $defaults = [];
6a488035
TO
113 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
114 $this->assertEquals(empty($result), TRUE, 'Verify membership status record deletion.');
115 }
116
5a433c56 117 /**
118 * @throws \CRM_Core_Exception
119 * @throws \CiviCRM_API3_Exception
120 */
13804457 121 public function testExpiredDisabled() {
5a433c56 122 $this->callAPISuccess('MembershipStatus', 'get', [
123 'name' => 'Expired',
f0191689
AH
124 'api.MembershipStatus.create' => ['label' => 'Expiiiired'],
125 ]);
126
127 // Calling it 'Expiiiired' is OK.
5a433c56 128 $this->callAPISuccess('job', 'process_membership', []);
f0191689 129
5a433c56 130 $this->callAPISuccess('MembershipStatus', 'get', [
131 'name' => 'Expired',
13804457
AH
132 'api.MembershipStatus.create' => ['is_active' => 0],
133 ]);
134
135 // Disabling 'Expired' is OK.
5a433c56 136 $this->callAPISuccess('job', 'process_membership', []);
13804457 137
5a433c56 138 $this->callAPISuccess('MembershipStatus', 'get', [
139 'name' => 'Expired',
13804457
AH
140 'api.MembershipStatus.delete' => [],
141 ]);
142
143 // Deleting 'Expired' is OK.
5a433c56 144 $this->callAPISuccess('job', 'process_membership', []);
13804457
AH
145
146 // Put things back like normal
5a433c56 147 $this->callAPISuccess('MembershipStatus', 'create', [
13804457
AH
148 'name' => 'Expired',
149 'label' => 'Expired',
150 'start_event' => 'end_date',
151 'start_event_adjust_unit' => 'month',
152 'start_event_adjust_interval' => 1,
153 'is_current_member' => 0,
154 'is_admin' => 0,
155 'weight' => 4,
156 'is_default' => 0,
157 'is_active' => 1,
158 'is_reserved' => 0,
159 ]);
160
161 }
162
00be9182 163 public function testGetMembershipStatusByDate() {
9099cab3 164 $params = [
6a488035
TO
165 'name' => 'Current',
166 'is_active' => 1,
167 'start_event' => 'start_date',
168 'end_event' => 'end_date',
9099cab3 169 ];
6a488035 170
dd12dc87 171 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035
TO
172 $toDate = date('Ymd');
173
d6910b2a 174 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($toDate, $toDate, $toDate, 'today', TRUE, NULL, $params);
6a488035
TO
175 $this->assertEquals($result['name'], 'Current', 'Verify membership status record.');
176 }
177
00be9182 178 public function testgetMembershipStatusCurrent() {
9099cab3 179 $params = [
6a488035
TO
180 'name' => 'Current',
181 'is_active' => 1,
182 'is_current_member' => 1,
9099cab3 183 ];
6a488035 184
dd12dc87 185 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
6a488035
TO
186 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusCurrent();
187
188 $this->assertEquals(empty($result), FALSE, 'Verify membership status records is_current_member.');
189 }
96025800 190
6a488035 191}