3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
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 +--------------------------------------------------------------------+
13 * Class CRM_Member_BAO_MembershipTypeTest
16 class CRM_Member_BAO_MembershipTypeTest
extends CiviUnitTestCase
{
18 public function setUp() {
23 'name_a_b' => 'Relation 1',
24 'name_b_a' => 'Relation 2',
25 'contact_type_a' => 'Individual',
26 'contact_type_b' => 'Organization',
30 $this->_relationshipTypeId
= $this->relationshipTypeCreate($params);
31 $this->_orgContactID
= $this->organizationCreate();
32 $this->_indiviContactID
= $this->individualCreate();
33 $this->_financialTypeId
= 1;
34 $this->_membershipStatusID
= $this->membershipStatusCreate('test status');
38 * Tears down the fixture, for example, closes a network connection.
39 * This method is called after a test is executed.
41 public function tearDown() {
42 $this->relationshipTypeDelete($this->_relationshipTypeId
);
43 $this->membershipStatusDelete($this->_membershipStatusID
);
44 $this->contactDelete($this->_orgContactID
);
45 $this->contactDelete($this->_indiviContactID
);
49 * check function add()
52 public function testAdd() {
55 'name' => 'test type',
57 'description' => NULL,
59 'duration_unit' => 'year',
60 'member_of_contact_id' => $this->_orgContactID
,
61 'period_type' => 'fixed',
62 'duration_interval' => 1,
63 'financial_type_id' => $this->_financialTypeId
,
64 'relationship_type_id' => $this->_relationshipTypeId
,
65 'visibility' => 'Public',
68 $membershipType = CRM_Member_BAO_MembershipType
::add($params, $ids);
70 $membership = $this->assertDBNotNull('CRM_Member_BAO_MembershipType', $this->_orgContactID
,
71 'name', 'member_of_contact_id',
72 'Database check on updated membership record.'
75 $this->assertEquals($membership, 'test type', 'Verify membership type name.');
76 $this->membershipTypeDelete(['id' => $membershipType->id
]);
80 * check function retrive()
83 public function testRetrieve() {
87 'description' => NULL,
90 'duration_unit' => 'year',
91 'period_type' => 'fixed',
92 'member_of_contact_id' => $this->_orgContactID
,
93 'duration_interval' => 1,
94 'financial_type_id' => $this->_financialTypeId
,
95 'relationship_type_id' => $this->_relationshipTypeId
,
96 'visibility' => 'Public',
98 $membershipType = CRM_Member_BAO_MembershipType
::add($params, $ids);
100 $params = ['name' => 'General'];
102 $result = CRM_Member_BAO_MembershipType
::retrieve($params, $default);
103 $this->assertEquals($result->name
, 'General', 'Verify membership type name.');
104 $this->membershipTypeDelete(['id' => $membershipType->id
]);
108 * check function isActive()
111 public function testSetIsActive() {
115 'description' => NULL,
117 'minimum_fee' => 100,
118 'duration_unit' => 'year',
119 'period_type' => 'fixed',
120 'duration_interval' => 1,
121 'member_of_contact_id' => $this->_orgContactID
,
122 'financial_type_id' => $this->_financialTypeId
,
123 'relationship_type_id' => $this->_relationshipTypeId
,
124 'visibility' => 'Public',
127 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
129 CRM_Member_BAO_MembershipType
::setIsActive($membership->id
, 0);
131 $isActive = $this->assertDBNotNull('CRM_Member_BAO_MembershipType', $membership->id
,
133 'Database check on membership type status.'
136 $this->assertEquals($isActive, 0, 'Verify membership type status.');
137 $this->membershipTypeDelete(['id' => $membership->id
]);
141 * check function del()
144 public function testdel() {
148 'description' => NULL,
149 'minimum_fee' => 100,
151 'duration_unit' => 'year',
152 'period_type' => 'fixed',
153 'member_of_contact_id' => $this->_orgContactID
,
154 'duration_interval' => 1,
155 'financial_type_id' => $this->_financialTypeId
,
156 'relationship_type_id' => $this->_relationshipTypeId
,
157 'visibility' => 'Public',
160 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
162 $result = CRM_Member_BAO_MembershipType
::del($membership->id
);
164 $this->assertEquals($result, TRUE, 'Verify membership deleted.');
168 * check function convertDayFormat( )
171 public function testConvertDayFormat() {
175 'description' => NULL,
176 'minimum_fee' => 100,
178 'duration_unit' => 'year',
179 'period_type' => 'fixed',
180 'member_of_contact_id' => $this->_orgContactID
,
181 'fixed_period_start_day' => 1213,
182 'fixed_period_rollover_day' => 1214,
183 'duration_interval' => 1,
184 'financial_type_id' => $this->_financialTypeId
,
185 'relationship_type_id' => $this->_relationshipTypeId
,
186 'visibility' => 'Public',
189 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
190 $membershipType[$membership->id
] = $params;
192 CRM_Member_BAO_MembershipType
::convertDayFormat($membershipType);
194 $this->assertEquals($membershipType[$membership->id
]['fixed_period_rollover_day'], 'Dec 14', 'Verify memberFixed Period Rollover Day.');
195 $this->membershipTypeDelete(['id' => $membership->id
]);
199 * check function getMembershipTypes( )
202 public function testGetMembershipTypes() {
206 'description' => NULL,
207 'minimum_fee' => 100,
209 'duration_unit' => 'year',
210 'member_of_contact_id' => $this->_orgContactID
,
211 'period_type' => 'fixed',
212 'duration_interval' => 1,
213 'financial_type_id' => $this->_financialTypeId
,
214 'relationship_type_id' => $this->_relationshipTypeId
,
215 'visibility' => 'Public',
218 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
219 $result = CRM_Member_BAO_MembershipType
::getMembershipTypes();
220 $this->assertEquals($result[$membership->id
], 'General', 'Verify membership types.');
221 $this->membershipTypeDelete(['id' => $membership->id
]);
225 * check function getMembershipTypeDetails( )
228 public function testGetMembershipTypeDetails() {
232 'description' => NULL,
233 'minimum_fee' => 100,
235 'duration_unit' => 'year',
236 'period_type' => 'fixed',
237 'member_of_contact_id' => $this->_orgContactID
,
238 'duration_interval' => 1,
239 'financial_type_id' => $this->_financialTypeId
,
240 'relationship_type_id' => $this->_relationshipTypeId
,
241 'visibility' => 'Public',
244 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
245 $result = CRM_Member_BAO_MembershipType
::getMembershipTypeDetails($membership->id
);
247 $this->assertEquals($result['name'], 'General', 'Verify membership type details.');
248 $this->assertEquals($result['duration_unit'], 'year', 'Verify membership types details.');
249 $this->membershipTypeDelete(['id' => $membership->id
]);
253 * check function getDatesForMembershipType( )
256 public function testGetDatesForMembershipType() {
260 'description' => NULL,
261 'minimum_fee' => 100,
263 'duration_unit' => 'year',
264 'member_of_contact_id' => $this->_orgContactID
,
265 'period_type' => 'rolling',
266 'duration_interval' => 1,
267 'financial_type_id' => $this->_financialTypeId
,
268 'relationship_type_id' => $this->_relationshipTypeId
,
269 'visibility' => 'Public',
272 $membership = CRM_Member_BAO_MembershipType
::add($params, $ids);
274 $membershipDates = CRM_Member_BAO_MembershipType
::getDatesForMembershipType($membership->id
);
275 $this->assertEquals($membershipDates['start_date'], date('Ymd'), 'Verify membership types details.');
276 $this->membershipTypeDelete(['id' => $membership->id
]);
280 * check function getRenewalDatesForMembershipType( )
283 public function testGetRenewalDatesForMembershipType() {
288 'description' => NULL,
289 'minimum_fee' => 100,
290 'duration_unit' => 'year',
291 'member_of_contact_id' => $this->_orgContactID
,
292 'period_type' => 'rolling',
293 'duration_interval' => 1,
294 'financial_type_id' => $this->_financialTypeId
,
295 'relationship_type_id' => $this->_relationshipTypeId
,
296 'visibility' => 'Public',
299 $membershipType = CRM_Member_BAO_MembershipType
::add($params, $ids);
302 'contact_id' => $this->_indiviContactID
,
303 'membership_type_id' => $membershipType->id
,
304 'join_date' => '20060121000000',
305 'start_date' => '20060121000000',
306 'end_date' => '20070120000000',
307 'source' => 'Payment',
309 'status_id' => $this->_membershipStatusID
,
312 $membership = CRM_Member_BAO_Membership
::create($params, $ids);
314 $membershipRenewDates = CRM_Member_BAO_MembershipType
::getRenewalDatesForMembershipType($membership->id
);
316 $this->assertEquals($membershipRenewDates['start_date'], '20060121', 'Verify membership renewal start date.');
317 $this->assertEquals($membershipRenewDates['end_date'], '20080120', 'Verify membership renewal end date.');
319 $this->membershipDelete($membership->id
);
320 $this->membershipTypeDelete(['id' => $membershipType->id
]);
324 * check function getMembershipTypesByOrg( )
327 public function testGetMembershipTypesByOrg() {
331 'description' => NULL,
333 'minimum_fee' => 100,
334 'duration_unit' => 'year',
335 'member_of_contact_id' => $this->_orgContactID
,
336 'period_type' => 'rolling',
337 'duration_interval' => 1,
338 'financial_type_id' => $this->_financialTypeId
,
339 'relationship_type_id' => $this->_relationshipTypeId
,
340 'visibility' => 'Public',
343 $membershipType = CRM_Member_BAO_MembershipType
::add($params, $ids);
345 $membershipTypesResult = civicrm_api3('MembershipType', 'get', [
346 'member_of_contact_id' => $this->_orgContactID
,
351 $result = $membershipTypesResult['values'] ??
NULL;
352 $this->assertEquals(empty($result), FALSE, 'Verify membership types for organization.');
354 $membershipTypesResult = civicrm_api3('MembershipType', 'get', [
355 'member_of_contact_id' => 501,
360 $result = $membershipTypesResult['values'] ??
NULL;
361 $this->assertEquals(empty($result), TRUE, 'Verify membership types for organization.');
363 $this->membershipTypeDelete(['id' => $membershipType->id
]);