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