Commit | Line | Data |
---|---|---|
afe349ef | 1 | <?php |
2 | ||
3 | /** | |
4 | * File for the EntryTest class | |
5 | * | |
6 | * (PHP 5) | |
7 | * | |
8 | * @package CiviCRM | |
9 | * | |
10 | * This file is part of CiviCRM | |
11 | * | |
12 | * CiviCRM is free software; you can redistribute it and/or | |
13 | * modify it under the terms of the GNU Affero General Public License | |
14 | * as published by the Free Software Foundation; either version 3 of | |
15 | * the License, or (at your option) any later version. | |
16 | * | |
17 | * CiviCRM is distributed in the hope that it will be useful, | |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | * GNU Affero General Public License for more details. | |
21 | * | |
22 | * You should have received a copy of the GNU Affero General Public | |
23 | * License along with this program. If not, see | |
24 | * <http://www.gnu.org/licenses/>. | |
25 | */ | |
26 | ||
27 | require_once 'CiviTest/CiviUnitTestCase.php'; | |
28 | ||
29 | ||
30 | /** | |
31 | * Test CRM/Member/BAO Membership Log add , delete functions | |
32 | * | |
33 | * @package CiviCRM | |
34 | */ | |
35 | class CRM_Batch_Form_EntryTest extends CiviUnitTestCase { | |
36 | ||
afe349ef | 37 | /** |
38 | * Membership type name used in test function | |
39 | * @var String | |
40 | */ | |
41 | protected $_membershipTypeName = NULL; | |
42 | ||
43 | /** | |
44 | * Membership type id used in test function | |
45 | * @var String | |
46 | */ | |
47 | protected $_membershipTypeID = NULL; | |
48 | ||
49 | /** | |
50 | * Contact id used in test function | |
51 | * @var String | |
52 | */ | |
53 | protected $_contactID = NULL; | |
54 | /** | |
55 | * Contact id used in test function | |
56 | * @var String | |
57 | */ | |
58 | protected $_contactID2 = NULL; | |
04ee2e0e | 59 | |
60 | /** | |
61 | * Contact id used in test function | |
62 | * @var String | |
63 | */ | |
64 | protected $_contactID3 = NULL; | |
65 | ||
66 | /** | |
67 | * Contact id used in test function | |
68 | * @var String | |
69 | */ | |
70 | protected $_contactID4 = NULL; | |
71 | ||
afe349ef | 72 | function setUp() { |
73 | parent::setUp(); | |
74 | ||
75 | $params = array( | |
76 | 'contact_type_a' => 'Individual', | |
77 | 'contact_type_b' => 'Organization', | |
78 | 'name_a_b' => 'Test Employee of', | |
79 | 'name_b_a' => 'Test Employer of', | |
80 | ); | |
81 | $this->_relationshipTypeId = $this->relationshipTypeCreate($params); | |
82 | $this->_orgContactID = $this->organizationCreate(); | |
7f71769c | 83 | $this->_financialTypeId = 1; |
afe349ef | 84 | $this->_membershipTypeName = 'Mickey Mouse Club Member'; |
85 | $params = array( | |
86 | 'name' => $this->_membershipTypeName, | |
87 | 'description' => NULL, | |
88 | 'minimum_fee' => 10, | |
89 | 'duration_unit' => 'year', | |
90 | 'member_of_contact_id' => $this->_orgContactID, | |
91 | 'period_type' => 'fixed', | |
92 | 'duration_interval' => 1, | |
7f71769c | 93 | 'financial_type_id' => $this->_financialTypeId, |
afe349ef | 94 | 'relationship_type_id' => $this->_relationshipTypeId, |
95 | 'visibility' => 'Public', | |
96 | 'is_active' => 1, | |
97 | 'fixed_period_start_day' => 101, | |
cab024d4 EM |
98 | 'fixed_period_rollover_day' => 1231, |
99 | 'domain_id' => CRM_Core_Config::domainID(), | |
afe349ef | 100 | ); |
cab024d4 EM |
101 | $membershipType = $this->callAPISuccess('membership_type', 'create', $params); |
102 | $this->_membershipTypeID = $membershipType['id']; | |
afe349ef | 103 | |
cab024d4 | 104 | $this->_membershipStatusID = $this->membershipStatusCreate('test status'); |
afe349ef | 105 | $this->_contactID = $this->individualCreate(); |
106 | $contact2Params = array( | |
107 | 'first_name' => 'Anthonita', | |
108 | 'middle_name' => 'J.', | |
109 | 'last_name' => 'Anderson', | |
110 | 'prefix_id' => 3, | |
111 | 'suffix_id' => 3, | |
112 | 'email' => 'b@c.com', | |
113 | 'contact_type' => 'Individual', | |
114 | ); | |
115 | $this->_contactID2 = $this->individualCreate($contact2Params); | |
04ee2e0e | 116 | $this->_contactID3 = $this->individualCreate(array('first_name' => 'bobby', 'email' => 'c@d.com')); |
117 | $this->_contactID4 = $this->individualCreate(array('first_name' => 'bobbynita', 'email' => 'c@de.com')); | |
118 | ||
afe349ef | 119 | $session = CRM_Core_Session::singleton(); |
120 | $session->set('dateTypes', 1); | |
cab024d4 | 121 | $this->_sethtmlGlobals(); |
afe349ef | 122 | |
123 | } | |
124 | ||
125 | /** | |
126 | * Tears down the fixture, for example, closes a network connection. | |
127 | * This method is called after a test is executed. | |
128 | * | |
129 | */ | |
cab024d4 EM |
130 | function tearDown() |
131 | { | |
132 | $this->quickCleanUpFinancialEntities(); | |
afe349ef | 133 | $this->relationshipTypeDelete($this->_relationshipTypeId); |
cab024d4 EM |
134 | if ($this->callAPISuccessGetCount('membership', array('id' => $this->_membershipTypeID))) { |
135 | $this->membershipTypeDelete(array('id' => $this->_membershipTypeID)); | |
136 | } | |
137 | $this->membershipStatusDelete($this->_membershipStatusID); | |
afe349ef | 138 | $this->contactDelete($this->_contactID); |
139 | $this->contactDelete($this->_contactID2); | |
140 | $this->contactDelete($this->_orgContactID); | |
141 | } | |
142 | ||
143 | /** | |
144 | * Test Import | |
145 | */ | |
146 | function testProcessMembership() { | |
147 | $form = new CRM_Batch_Form_Entry(); | |
148 | $params = $this->getMembershipData(); | |
149 | $this->assertTrue($form->testProcessMembership($params)); | |
150 | $result = $this->callAPISuccess('membership', 'get', array()); | |
04ee2e0e | 151 | $this->assertEquals(3, $result['count']); |
04ee2e0e | 152 | //check start dates #1 should default to 1 Jan this year, #2 should be as entered |
7c8ba7a2 | 153 | $this->assertEquals(date('Y-m-d', strtotime('first day of January 2013')), $result['values'][1]['start_date']); |
04ee2e0e | 154 | $this->assertEquals('2013-02-03', $result['values'][2]['start_date']); |
155 | ||
156 | //check start dates #1 should default to 1 Jan this year, #2 should be as entered | |
7c8ba7a2 E |
157 | $this->assertEquals(date('Y-m-d', strtotime('last day of December 2013')), $result['values'][1]['end_date']); |
158 | $this->assertEquals(date('Y-m-d', strtotime('last day of December 2013')), $result['values'][2]['end_date']); | |
04ee2e0e | 159 | $this->assertEquals('2013-12-01', $result['values'][3]['end_date']); |
160 | ||
161 | //check start dates #1 should default to 1 Jan this year, #2 should be as entered | |
162 | $this->assertEquals(date('Y-m-d', strtotime('07/22/2013')), $result['values'][1]['join_date']); | |
163 | $this->assertEquals(date('Y-m-d', strtotime('07/03/2013')), $result['values'][2]['join_date']); | |
164 | $this->assertEquals(date('Y-m-d', strtotime('now')), $result['values'][3]['join_date']); | |
cab024d4 EM |
165 | $result = $this->callAPISuccess('contribution', 'get', array('return' => 'total_amount')); |
166 | $this->assertEquals(3, $result['count']); | |
167 | foreach($result['values'] as $contribution) { | |
168 | $this-> assertEquals($this->callAPISuccess('line_item', 'getvalue', array( | |
169 | 'contribution_id' => $contribution['id'], | |
170 | 'return' => 'line_total', | |
04ee2e0e | 171 | |
cab024d4 EM |
172 | )), $contribution['total_amount']); |
173 | } | |
afe349ef | 174 | } |
175 | ||
cab024d4 EM |
176 | /** |
177 | * Test Contribution Import | |
afe349ef | 178 | */ |
cab024d4 EM |
179 | function testProcessContribution() { |
180 | $this->offsetDefaultPriceSet(); | |
181 | $form = new CRM_Batch_Form_Entry(); | |
182 | $params = $this->getContributionData(); | |
183 | $this->assertTrue($form->testProcessContribution($params)); | |
184 | $result = $this->callAPISuccess('contribution', 'get', array('return' => 'total_amount')); | |
185 | $this->assertEquals(2, $result['count']); | |
186 | foreach($result['values'] as $contribution) { | |
187 | $this-> assertEquals($this->callAPISuccess('line_item', 'getvalue', array( | |
188 | 'contribution_id' => $contribution['id'], | |
189 | 'return' => 'line_total', | |
190 | ||
191 | )), $contribution['total_amount']); | |
192 | } | |
193 | } | |
4cbe18b8 | 194 | /** |
100fef9d | 195 | * Data provider for test process membership |
4cbe18b8 EM |
196 | * @return array |
197 | */ | |
afe349ef | 198 | function getMembershipData() { |
199 | ||
afe349ef | 200 | return array( |
201 | 'batch_id' => 4, | |
04ee2e0e | 202 | 'primary_profiles' => array(1 => NULL, 2 => NULL, 3 => NULL), |
db47ea7b | 203 | 'primary_contact_id' => Array ( |
04ee2e0e | 204 | 1 => $this->_contactID, |
205 | 2 => $this->_contactID2, | |
206 | 3 => $this->_contactID3, | |
207 | ), | |
afe349ef | 208 | 'field' => array( |
209 | 1 => array( | |
0455cbd8 | 210 | 'membership_type' => Array (0 => $this->_orgContactID, 1 => $this->_membershipTypeID), |
afe349ef | 211 | 'join_date' => '07/22/2013', |
212 | 'membership_start_date' => NULL, | |
213 | 'membership_end_date' => NULL, | |
214 | 'membership_source' => NULL, | |
215 | 'financial_type' => 2, | |
216 | 'total_amount' => 1, | |
217 | 'receive_date' => '07/24/2013', | |
218 | 'receive_date_time' => NULL, | |
219 | 'payment_instrument' => 1, | |
220 | 'check_number' => NULL, | |
221 | 'contribution_status_id' => 1, | |
222 | ), | |
223 | 2 => array( | |
0455cbd8 | 224 | 'membership_type' => Array (0 => $this->_orgContactID, 1 => $this->_membershipTypeID), |
afe349ef | 225 | 'join_date' => '07/03/2013', |
04ee2e0e | 226 | 'membership_start_date' => '02/03/2013', |
afe349ef | 227 | 'membership_end_date' => NULL, |
228 | 'membership_source' => NULL, | |
229 | 'financial_type' => 2, | |
230 | 'total_amount' => 1, | |
231 | 'receive_date' => '07/17/2013', | |
232 | 'receive_date_time' => NULL, | |
233 | 'payment_instrument' => NULL, | |
234 | 'check_number' => NULL, | |
235 | 'contribution_status_id' => 1, | |
04ee2e0e | 236 | ), |
237 | // no join date, coded end date | |
238 | 3 => array( | |
0455cbd8 | 239 | 'membership_type' => Array (0 => $this->_orgContactID, 1 => $this->_membershipTypeID), |
04ee2e0e | 240 | 'join_date' => NULL, |
241 | 'membership_start_date' => NULL, | |
242 | 'membership_end_date' => '2013-12-01', | |
243 | 'membership_source' => NULL, | |
244 | 'financial_type' => 2, | |
245 | 'total_amount' => 1, | |
246 | 'receive_date' => '07/17/2013', | |
247 | 'receive_date_time' => NULL, | |
248 | 'payment_instrument' => NULL, | |
249 | 'check_number' => NULL, | |
250 | 'contribution_status_id' => 1, | |
251 | ), | |
252 | ||
afe349ef | 253 | ), |
254 | 'actualBatchTotal' => 0, | |
04ee2e0e | 255 | |
afe349ef | 256 | ); |
257 | } | |
cab024d4 EM |
258 | |
259 | /** | |
260 | * @return array | |
261 | */ | |
262 | function getContributionData() { | |
263 | return array( | |
264 | //'batch_id' => 4, | |
265 | 'primary_profiles' => array(1 => NULL, 2 => NULL, 3 => NULL), | |
266 | 'primary_contact_id' => Array ( | |
267 | 1 => $this->_contactID, | |
268 | 2 => $this->_contactID2, | |
269 | 3 => $this->_contactID3, | |
270 | ), | |
271 | 'field' => array( | |
272 | 1 => array( | |
273 | 'financial_type' => 1, | |
274 | 'total_amount' => 15, | |
275 | 'receive_date' => '07/24/2013', | |
276 | 'receive_date_time' => NULL, | |
277 | 'payment_instrument' => 1, | |
278 | 'check_number' => NULL, | |
279 | 'contribution_status_id' => 1, | |
280 | ), | |
281 | 2 => array( | |
282 | 'financial_type' => 1, | |
283 | 'total_amount' => 15, | |
284 | 'receive_date' => '07/24/2013', | |
285 | 'receive_date_time' => NULL, | |
286 | 'payment_instrument' => 1, | |
287 | 'check_number' => NULL, | |
288 | 'contribution_status_id' => 1, | |
289 | ), | |
290 | ), | |
291 | 'actualBatchTotal' => 30, | |
292 | ||
293 | ); | |
294 | } | |
afe349ef | 295 | } |
296 |