Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
06a1bc01 | 4 | | CiviCRM version 4.5 | |
6a488035 | 5 | +--------------------------------------------------------------------+ |
06a1bc01 | 6 | | Copyright CiviCRM LLC (c) 2004-2014 | |
6a488035 TO |
7 | +--------------------------------------------------------------------+ |
8 | | This file is a part of CiviCRM. | | |
9 | | | | |
10 | | CiviCRM is free software; you can copy, modify, and distribute it | | |
11 | | under the terms of the GNU Affero General Public License | | |
12 | | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | | |
13 | | | | |
14 | | CiviCRM is distributed in the hope that it will be useful, but | | |
15 | | WITHOUT ANY WARRANTY; without even the implied warranty of | | |
16 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | | |
17 | | See the GNU Affero General Public License for more details. | | |
18 | | | | |
19 | | You should have received a copy of the GNU Affero General Public | | |
20 | | License and the CiviCRM Licensing Exception along | | |
21 | | with this program; if not, contact CiviCRM LLC | | |
22 | | at info[AT]civicrm[DOT]org. If you have questions about the | | |
23 | | GNU Affero General Public License or the licensing of CiviCRM, | | |
24 | | see the CiviCRM license FAQ at http://civicrm.org/licensing | | |
25 | +--------------------------------------------------------------------+ | |
26 | */ | |
27 | ||
28 | ||
29 | require_once 'CiviTest/CiviUnitTestCase.php'; | |
30 | require_once 'CiviTest/Contact.php'; | |
e9479dcf EM |
31 | |
32 | /** | |
33 | * Class CRM_Core_BAO_AddressTest | |
34 | */ | |
6a488035 | 35 | class CRM_Core_BAO_AddressTest extends CiviUnitTestCase { |
4cbe18b8 EM |
36 | /** |
37 | * @return array | |
38 | */ | |
6a488035 TO |
39 | function get_info() { |
40 | return array( | |
41 | 'name' => 'Address BAOs', | |
42 | 'description' => 'Test all Core_BAO_Address methods.', | |
43 | 'group' => 'CiviCRM BAO Tests', | |
44 | ); | |
45 | } | |
46 | ||
47 | function setUp() { | |
48 | parent::setUp(); | |
49 | ||
50 | $this->quickCleanup(array('civicrm_contact', 'civicrm_address')); | |
51 | } | |
52 | ||
53 | /** | |
54 | * create() method (create and update modes) | |
55 | */ | |
56 | function testCreate() { | |
57 | $contactId = Contact::createIndividual(); | |
58 | ||
59 | $params = array(); | |
60 | $params['address']['1'] = array( | |
61 | 'street_address' => 'Oberoi Garden', | |
62 | 'supplemental_address_1' => 'Attn: Accounting', | |
63 | 'supplemental_address_2' => 'Powai', | |
64 | 'city' => 'Athens', | |
65 | 'postal_code' => '01903', | |
66 | 'state_province_id' => '1000', | |
67 | 'country_id' => '1228', | |
68 | 'geo_code_1' => '18.219023', | |
69 | 'geo_code_2' => '-105.00973', | |
70 | 'location_type_id' => '1', | |
71 | 'is_primary' => '1', | |
72 | 'is_billing' => '0', | |
73 | ); | |
74 | ||
75 | $params['contact_id'] = $contactId; | |
76 | ||
77 | ||
78 | $fixAddress = TRUE; | |
79 | ||
80 | CRM_Core_BAO_Address::create($params, $fixAddress, $entity = NULL); | |
81 | $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', 'Oberoi Garden', 'id', 'street_address', | |
82 | 'Database check for created address.' | |
83 | ); | |
84 | ||
85 | // Now call add() to modify an existing address | |
86 | ||
87 | $params = array(); | |
88 | $params['address']['1'] = array( | |
89 | 'id' => $addressId, | |
90 | 'street_address' => '120 Terminal Road', | |
91 | 'supplemental_address_1' => 'A-wing:3037', | |
92 | 'supplemental_address_2' => 'Bandra', | |
93 | 'city' => 'Athens', | |
94 | 'postal_code' => '01903', | |
95 | 'state_province_id' => '1000', | |
96 | 'country_id' => '1228', | |
97 | 'geo_code_1' => '18.219023', | |
98 | 'geo_code_2' => '-105.00973', | |
99 | 'location_type_id' => '1', | |
100 | 'is_primary' => '1', | |
101 | 'is_billing' => '0', | |
102 | ); | |
103 | $params['contact_id'] = $contactId; | |
104 | ||
105 | ||
106 | $block = CRM_Core_BAO_Address::create($params, $fixAddress, $entity = NULL); | |
107 | ||
108 | $cid = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
109 | 'Database check for updated address by contactId.' | |
110 | ); | |
111 | $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', '120 Terminal Road', 'id', 'street_address', | |
112 | 'Database check for updated address by street_name.' | |
113 | ); | |
114 | Contact::delete($contactId); | |
115 | } | |
116 | ||
117 | /** | |
118 | * Add() method ( ) | |
119 | */ | |
120 | function testAdd() { | |
121 | $contactId = Contact::createIndividual(); | |
122 | ||
123 | $fixParams = array( | |
124 | 'street_address' => 'E 906N Pine Pl W', | |
125 | 'supplemental_address_1' => 'Editorial Dept', | |
126 | 'supplemental_address_2' => '', | |
127 | 'city' => 'El Paso', | |
128 | 'postal_code' => '88575', | |
129 | 'postal_code_suffix' => '', | |
130 | 'state_province_id' => '1001', | |
131 | 'country_id' => '1228', | |
132 | 'geo_code_1' => '31.694842', | |
133 | 'geo_code_2' => '-106.29998', | |
134 | 'location_type_id' => '1', | |
135 | 'is_primary' => '1', | |
136 | 'is_billing' => '0', | |
137 | 'contact_id' => $contactId, | |
138 | ); | |
139 | ||
140 | $addAddress = CRM_Core_BAO_Address::add($fixParams, $fixAddress = TRUE); | |
141 | ||
142 | $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
143 | 'Database check for created contact address.' | |
144 | ); | |
145 | ||
146 | $this->assertEquals($addAddress->street_address, 'E 906N Pine Pl W', 'In line' . __LINE__); | |
147 | $this->assertEquals($addAddress->supplemental_address_1, 'Editorial Dept', 'In line' . __LINE__); | |
148 | $this->assertEquals($addAddress->city, 'El Paso', 'In line' . __LINE__); | |
149 | $this->assertEquals($addAddress->postal_code, '88575', 'In line' . __LINE__); | |
150 | $this->assertEquals($addAddress->geo_code_1, '31.694842', 'In line' . __LINE__); | |
151 | $this->assertEquals($addAddress->geo_code_2, '-106.29998', 'In line' . __LINE__); | |
152 | $this->assertEquals($addAddress->country_id, '1228', 'In line' . __LINE__); | |
153 | Contact::delete($contactId); | |
154 | } | |
155 | ||
156 | /** | |
157 | * AllAddress() method ( ) | |
158 | */ | |
159 | function testallAddress() { | |
160 | $contactId = Contact::createIndividual(); | |
161 | ||
162 | $fixParams = array( | |
163 | 'street_address' => 'E 906N Pine Pl W', | |
164 | 'supplemental_address_1' => 'Editorial Dept', | |
165 | 'supplemental_address_2' => '', | |
166 | 'city' => 'El Paso', | |
167 | 'postal_code' => '88575', | |
168 | 'postal_code_suffix' => '', | |
169 | 'state_province_id' => '1001', | |
170 | 'country_id' => '1228', | |
171 | 'geo_code_1' => '31.694842', | |
172 | 'geo_code_2' => '-106.29998', | |
173 | 'location_type_id' => '1', | |
174 | 'is_primary' => '1', | |
175 | 'is_billing' => '0', | |
176 | 'contact_id' => $contactId, | |
177 | ); | |
178 | ||
179 | CRM_Core_BAO_Address::add($fixParams, $fixAddress = TRUE); | |
180 | ||
181 | $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
182 | 'Database check for created contact address.' | |
183 | ); | |
184 | $fixParams = array( | |
185 | 'street_address' => 'SW 719B Beech Dr NW', | |
186 | 'supplemental_address_1' => 'C/o OPDC', | |
187 | 'supplemental_address_2' => '', | |
188 | 'city' => 'Neillsville', | |
189 | 'postal_code' => '54456', | |
190 | 'postal_code_suffix' => '', | |
191 | 'state_province_id' => '1001', | |
192 | 'country_id' => '1228', | |
193 | 'geo_code_1' => '44.553719', | |
194 | 'geo_code_2' => '-90.61457', | |
195 | 'location_type_id' => '2', | |
196 | 'is_primary' => '', | |
197 | 'is_billing' => '1', | |
198 | 'contact_id' => $contactId, | |
199 | ); | |
200 | ||
201 | CRM_Core_BAO_Address::add($fixParams, $fixAddress = TRUE); | |
202 | ||
203 | $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
204 | 'Database check for created contact address.' | |
205 | ); | |
206 | ||
207 | $allAddress = CRM_Core_BAO_Address::allAddress($contactId); | |
208 | ||
209 | $this->assertEquals(count($allAddress), 2, 'Checking number of returned addresses.'); | |
210 | ||
211 | Contact::delete($contactId); | |
212 | } | |
213 | ||
214 | /** | |
215 | * AllAddress() method ( ) with null value | |
216 | */ | |
217 | function testnullallAddress() { | |
218 | $contactId = Contact::createIndividual(); | |
219 | ||
220 | $fixParams = array( | |
221 | 'street_address' => 'E 906N Pine Pl W', | |
222 | 'supplemental_address_1' => 'Editorial Dept', | |
223 | 'supplemental_address_2' => '', | |
224 | 'city' => 'El Paso', | |
225 | 'postal_code' => '88575', | |
226 | 'postal_code_suffix' => '', | |
227 | 'state_province_id' => '1001', | |
228 | 'country_id' => '1228', | |
229 | 'geo_code_1' => '31.694842', | |
230 | 'geo_code_2' => '-106.29998', | |
231 | 'location_type_id' => '1', | |
232 | 'is_primary' => '1', | |
233 | 'is_billing' => '0', | |
234 | 'contact_id' => $contactId, | |
235 | ); | |
236 | ||
237 | CRM_Core_BAO_Address::add($fixParams, $fixAddress = TRUE); | |
238 | ||
239 | $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
240 | 'Database check for created contact address.' | |
241 | ); | |
242 | ||
243 | $contact_Id = NULL; | |
244 | ||
245 | $allAddress = CRM_Core_BAO_Address::allAddress($contact_Id); | |
246 | ||
247 | $this->assertEquals($allAddress, NULL, 'Checking null for returned addresses.'); | |
248 | ||
249 | Contact::delete($contactId); | |
250 | } | |
251 | ||
252 | /** | |
253 | * getValues() method (get Address fields) | |
254 | */ | |
255 | function testGetValues() { | |
256 | $contactId = Contact::createIndividual(); | |
257 | ||
258 | $params = array(); | |
259 | $params['address']['1'] = array( | |
260 | 'street_address' => 'Oberoi Garden', | |
261 | 'supplemental_address_1' => 'Attn: Accounting', | |
262 | 'supplemental_address_2' => 'Powai', | |
263 | 'city' => 'Athens', | |
264 | 'postal_code' => '01903', | |
265 | 'state_province_id' => '1000', | |
266 | 'country_id' => '1228', | |
267 | 'geo_code_1' => '18.219023', | |
268 | 'geo_code_2' => '-105.00973', | |
269 | 'location_type_id' => '1', | |
270 | 'is_primary' => '1', | |
271 | 'is_billing' => '0', | |
272 | ); | |
273 | ||
274 | $params['contact_id'] = $contactId; | |
275 | ||
276 | $fixAddress = TRUE; | |
277 | ||
278 | CRM_Core_BAO_Address::create($params, $fixAddress, $entity = NULL); | |
279 | ||
280 | $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id', | |
281 | 'Database check for created address.' | |
282 | ); | |
283 | ||
284 | $entityBlock = array('contact_id' => $contactId); | |
285 | $address = CRM_Core_BAO_Address::getValues($entityBlock); | |
286 | $this->assertEquals($address[1]['id'], $addressId); | |
287 | $this->assertEquals($address[1]['contact_id'], $contactId); | |
288 | $this->assertEquals($address[1]['street_address'], 'Oberoi Garden'); | |
289 | Contact::delete($contactId); | |
290 | } | |
291 | ||
292 | /** | |
293 | * parseStreetAddress() method (get street address parsed) | |
294 | */ | |
295 | function testParseStreetAddress() { | |
296 | ||
297 | // valid Street address to be parsed ( without locale ) | |
298 | $street_address = "54A Excelsior Ave. Apt 1C"; | |
299 | $parsedStreetAddress = CRM_Core_BAO_Address::parseStreetAddress($street_address); | |
300 | $this->assertEquals($parsedStreetAddress['street_name'], 'Excelsior Ave.'); | |
301 | $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1C'); | |
302 | $this->assertEquals($parsedStreetAddress['street_number'], '54'); | |
303 | $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'A'); | |
304 | ||
305 | // valid Street address to be parsed ( $locale = 'en_US' ) | |
306 | $street_address = "54A Excelsior Ave. Apt 1C"; | |
307 | $locale = 'en_US'; | |
308 | $parsedStreetAddress = CRM_Core_BAO_Address::parseStreetAddress($street_address, $locale); | |
309 | $this->assertEquals($parsedStreetAddress['street_name'], 'Excelsior Ave.'); | |
310 | $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1C'); | |
311 | $this->assertEquals($parsedStreetAddress['street_number'], '54'); | |
312 | $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'A'); | |
313 | ||
314 | // invalid Street address ( $locale = 'en_US' ) | |
315 | $street_address = "West St. Apt 1"; | |
316 | $locale = 'en_US'; | |
317 | $parsedStreetAddress = CRM_Core_BAO_Address::parseStreetAddress($street_address, $locale); | |
318 | $this->assertEquals($parsedStreetAddress['street_name'], 'West St.'); | |
319 | $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1'); | |
320 | $this->assertNotContains('street_number', $parsedStreetAddress); | |
321 | $this->assertNotContains('street_number_suffix', $parsedStreetAddress); | |
322 | ||
323 | // valid Street address to be parsed ( $locale = 'fr_CA' ) | |
324 | $street_address = "2-123CA Main St"; | |
325 | $locale = 'fr_CA'; | |
326 | $parsedStreetAddress = CRM_Core_BAO_Address::parseStreetAddress($street_address, $locale); | |
327 | $this->assertEquals($parsedStreetAddress['street_name'], 'Main St'); | |
328 | $this->assertEquals($parsedStreetAddress['street_unit'], '2'); | |
329 | $this->assertEquals($parsedStreetAddress['street_number'], '123'); | |
330 | $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'CA'); | |
331 | ||
332 | // invalid Street address ( $locale = 'fr_CA' ) | |
333 | $street_address = "123 Main St"; | |
334 | $locale = 'fr_CA'; | |
335 | $parsedStreetAddress = CRM_Core_BAO_Address::parseStreetAddress($street_address, $locale); | |
336 | $this->assertEquals($parsedStreetAddress['street_name'], 'Main St'); | |
337 | $this->assertEquals($parsedStreetAddress['street_number'], '123'); | |
338 | $this->assertNotContains('street_unit', $parsedStreetAddress); | |
339 | $this->assertNotContains('street_number_suffix', $parsedStreetAddress); | |
340 | } | |
341 | } | |
342 | ||
343 |