Merge pull request #16790 from eileenmcnaughton/pcp
[civicrm-core.git] / tests / phpunit / CRM / Member / BAO / MembershipStatusTest.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
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 |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 * Class CRM_Member_BAO_MembershipStatusTest
14 * @group headless
15 */
16 class CRM_Member_BAO_MembershipStatusTest extends CiviUnitTestCase {
17
18 public function setUp() {
19 parent::setUp();
20 }
21
22 /**
23 * Check function add()
24 */
25 public function testAdd() {
26 $params = [
27 'name' => 'pending',
28 'is_active' => 1,
29 ];
30
31 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
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
40 public function testRetrieve() {
41
42 $params = [
43 'name' => 'testStatus',
44 'is_active' => 1,
45 ];
46
47 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
48 $defaults = [];
49 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
50 $this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
51 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
52 }
53
54 public function testPseudoConstantflush() {
55 $params = [
56 'name' => 'testStatus',
57 'is_active' => 1,
58 ];
59 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
60 $defaults = [];
61 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
62 $this->assertEquals($result->name, 'testStatus', 'Verify membership status name.');
63 $updateParams = [
64 'id' => $membershipStatus->id,
65 'name' => 'testStatus',
66 'label' => 'Changed Status',
67 'is_active' => 1,
68 ];
69 $membershipStatus2 = CRM_Member_BAO_MembershipStatus::add($updateParams);
70 $result = CRM_Member_PseudoConstant::membershipStatus($membershipStatus->id, NULL, 'label', FALSE, FALSE);
71 $this->assertEquals($result, 'Changed Status', 'Verify updated membership status label From PseudoConstant.');
72 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
73 }
74
75 public function testSetIsActive() {
76
77 $params = [
78 'name' => 'pending',
79 'is_active' => 1,
80 ];
81
82 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
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
93 public function testGetMembershipStatus() {
94 $params = [
95 'name' => 'pending',
96 'is_active' => 1,
97 ];
98
99 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
100 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatus($membershipStatus->id);
101 $this->assertEquals($result['name'], 'pending', 'Verify membership status name.');
102 }
103
104 public function testDel() {
105 $params = [
106 'name' => 'testStatus',
107 'is_active' => 1,
108 ];
109
110 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
111 CRM_Member_BAO_MembershipStatus::del($membershipStatus->id);
112 $defaults = [];
113 $result = CRM_Member_BAO_MembershipStatus::retrieve($params, $defaults);
114 $this->assertEquals(empty($result), TRUE, 'Verify membership status record deletion.');
115 }
116
117 /**
118 * @throws \CRM_Core_Exception
119 * @throws \CiviCRM_API3_Exception
120 */
121 public function testExpiredDisabled() {
122 $this->callAPISuccess('MembershipStatus', 'get', [
123 'name' => 'Expired',
124 'api.MembershipStatus.create' => ['label' => 'Expiiiired'],
125 ]);
126
127 // Calling it 'Expiiiired' is OK.
128 $this->callAPISuccess('job', 'process_membership', []);
129
130 $this->callAPISuccess('MembershipStatus', 'get', [
131 'name' => 'Expired',
132 'api.MembershipStatus.create' => ['is_active' => 0],
133 ]);
134
135 // Disabling 'Expired' is OK.
136 $this->callAPISuccess('job', 'process_membership', []);
137
138 $this->callAPISuccess('MembershipStatus', 'get', [
139 'name' => 'Expired',
140 'api.MembershipStatus.delete' => [],
141 ]);
142
143 // Deleting 'Expired' is OK.
144 $this->callAPISuccess('job', 'process_membership', []);
145
146 // Put things back like normal
147 $this->callAPISuccess('MembershipStatus', 'create', [
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
163 public function testGetMembershipStatusByDate() {
164 $params = [
165 'name' => 'Current',
166 'is_active' => 1,
167 'start_event' => 'start_date',
168 'end_event' => 'end_date',
169 ];
170
171 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
172 $toDate = date('Ymd');
173
174 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($toDate, $toDate, $toDate, 'today', TRUE, NULL, $params);
175 $this->assertEquals($result['name'], 'Current', 'Verify membership status record.');
176 }
177
178 public function testgetMembershipStatusCurrent() {
179 $params = [
180 'name' => 'Current',
181 'is_active' => 1,
182 'is_current_member' => 1,
183 ];
184
185 $membershipStatus = CRM_Member_BAO_MembershipStatus::add($params);
186 $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusCurrent();
187
188 $this->assertEquals(empty($result), FALSE, 'Verify membership status records is_current_member.');
189 }
190
191 }