Merge pull request #4627 from colemanw/docblocks
[civicrm-core.git] / tests / phpunit / CRM / Core / BAO / AddressTest.php
CommitLineData
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
29require_once 'CiviTest/CiviUnitTestCase.php';
30require_once 'CiviTest/Contact.php';
e9479dcf
EM
31
32/**
33 * Class CRM_Core_BAO_AddressTest
34 */
6a488035 35class 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