3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.7 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2015 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
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. |
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. |
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 +--------------------------------------------------------------------+
29 require_once 'CiviTest/CiviUnitTestCase.php';
30 require_once 'CiviTest/Contact.php';
33 * Class CRM_Core_BAO_AddressTest
35 class CRM_Core_BAO_AddressTest
extends CiviUnitTestCase
{
36 public function setUp() {
39 $this->quickCleanup(array('civicrm_contact', 'civicrm_address'));
43 * Create() method (create and update modes)
45 public function testCreate() {
46 $contactId = Contact
::createIndividual();
49 $params['address']['1'] = array(
50 'street_address' => 'Oberoi Garden',
51 'supplemental_address_1' => 'Attn: Accounting',
52 'supplemental_address_2' => 'Powai',
54 'postal_code' => '01903',
55 'state_province_id' => '1000',
56 'country_id' => '1228',
57 'geo_code_1' => '18.219023',
58 'geo_code_2' => '-105.00973',
59 'location_type_id' => '1',
64 $params['contact_id'] = $contactId;
68 CRM_Core_BAO_Address
::create($params, $fixAddress, $entity = NULL);
69 $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', 'Oberoi Garden', 'id', 'street_address',
70 'Database check for created address.'
73 // Now call add() to modify an existing address
76 $params['address']['1'] = array(
78 'street_address' => '120 Terminal Road',
79 'supplemental_address_1' => 'A-wing:3037',
80 'supplemental_address_2' => 'Bandra',
82 'postal_code' => '01903',
83 'state_province_id' => '1000',
84 'country_id' => '1228',
85 'geo_code_1' => '18.219023',
86 'geo_code_2' => '-105.00973',
87 'location_type_id' => '1',
91 $params['contact_id'] = $contactId;
93 $block = CRM_Core_BAO_Address
::create($params, $fixAddress, $entity = NULL);
95 $cid = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
96 'Database check for updated address by contactId.'
98 $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', '120 Terminal Road', 'id', 'street_address',
99 'Database check for updated address by street_name.'
101 Contact
::delete($contactId);
107 public function testAdd() {
108 $contactId = Contact
::createIndividual();
111 'street_address' => 'E 906N Pine Pl W',
112 'supplemental_address_1' => 'Editorial Dept',
113 'supplemental_address_2' => '',
115 'postal_code' => '88575',
116 'postal_code_suffix' => '',
117 'state_province_id' => '1001',
118 'country_id' => '1228',
119 'geo_code_1' => '31.694842',
120 'geo_code_2' => '-106.29998',
121 'location_type_id' => '1',
124 'contact_id' => $contactId,
127 $addAddress = CRM_Core_BAO_Address
::add($fixParams, $fixAddress = TRUE);
129 $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
130 'Database check for created contact address.'
133 $this->assertEquals($addAddress->street_address
, 'E 906N Pine Pl W', 'In line' . __LINE__
);
134 $this->assertEquals($addAddress->supplemental_address_1
, 'Editorial Dept', 'In line' . __LINE__
);
135 $this->assertEquals($addAddress->city
, 'El Paso', 'In line' . __LINE__
);
136 $this->assertEquals($addAddress->postal_code
, '88575', 'In line' . __LINE__
);
137 $this->assertEquals($addAddress->geo_code_1
, '31.694842', 'In line' . __LINE__
);
138 $this->assertEquals($addAddress->geo_code_2
, '-106.29998', 'In line' . __LINE__
);
139 $this->assertEquals($addAddress->country_id
, '1228', 'In line' . __LINE__
);
140 Contact
::delete($contactId);
144 * AllAddress() method ( )
146 public function testallAddress() {
147 $contactId = Contact
::createIndividual();
150 'street_address' => 'E 906N Pine Pl W',
151 'supplemental_address_1' => 'Editorial Dept',
152 'supplemental_address_2' => '',
154 'postal_code' => '88575',
155 'postal_code_suffix' => '',
156 'state_province_id' => '1001',
157 'country_id' => '1228',
158 'geo_code_1' => '31.694842',
159 'geo_code_2' => '-106.29998',
160 'location_type_id' => '1',
163 'contact_id' => $contactId,
166 CRM_Core_BAO_Address
::add($fixParams, $fixAddress = TRUE);
168 $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
169 'Database check for created contact address.'
172 'street_address' => 'SW 719B Beech Dr NW',
173 'supplemental_address_1' => 'C/o OPDC',
174 'supplemental_address_2' => '',
175 'city' => 'Neillsville',
176 'postal_code' => '54456',
177 'postal_code_suffix' => '',
178 'state_province_id' => '1001',
179 'country_id' => '1228',
180 'geo_code_1' => '44.553719',
181 'geo_code_2' => '-90.61457',
182 'location_type_id' => '2',
185 'contact_id' => $contactId,
188 CRM_Core_BAO_Address
::add($fixParams, $fixAddress = TRUE);
190 $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
191 'Database check for created contact address.'
194 $allAddress = CRM_Core_BAO_Address
::allAddress($contactId);
196 $this->assertEquals(count($allAddress), 2, 'Checking number of returned addresses.');
198 Contact
::delete($contactId);
202 * AllAddress() method ( ) with null value
204 public function testnullallAddress() {
205 $contactId = Contact
::createIndividual();
208 'street_address' => 'E 906N Pine Pl W',
209 'supplemental_address_1' => 'Editorial Dept',
210 'supplemental_address_2' => '',
212 'postal_code' => '88575',
213 'postal_code_suffix' => '',
214 'state_province_id' => '1001',
215 'country_id' => '1228',
216 'geo_code_1' => '31.694842',
217 'geo_code_2' => '-106.29998',
218 'location_type_id' => '1',
221 'contact_id' => $contactId,
224 CRM_Core_BAO_Address
::add($fixParams, $fixAddress = TRUE);
226 $addParams = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
227 'Database check for created contact address.'
232 $allAddress = CRM_Core_BAO_Address
::allAddress($contact_Id);
234 $this->assertEquals($allAddress, NULL, 'Checking null for returned addresses.');
236 Contact
::delete($contactId);
240 * GetValues() method (get Address fields)
242 public function testGetValues() {
243 $contactId = Contact
::createIndividual();
246 $params['address']['1'] = array(
247 'street_address' => 'Oberoi Garden',
248 'supplemental_address_1' => 'Attn: Accounting',
249 'supplemental_address_2' => 'Powai',
251 'postal_code' => '01903',
252 'state_province_id' => '1000',
253 'country_id' => '1228',
254 'geo_code_1' => '18.219023',
255 'geo_code_2' => '-105.00973',
256 'location_type_id' => '1',
261 $params['contact_id'] = $contactId;
265 CRM_Core_BAO_Address
::create($params, $fixAddress, $entity = NULL);
267 $addressId = $this->assertDBNotNull('CRM_Core_DAO_Address', $contactId, 'id', 'contact_id',
268 'Database check for created address.'
271 $entityBlock = array('contact_id' => $contactId);
272 $address = CRM_Core_BAO_Address
::getValues($entityBlock);
273 $this->assertEquals($address[1]['id'], $addressId);
274 $this->assertEquals($address[1]['contact_id'], $contactId);
275 $this->assertEquals($address[1]['street_address'], 'Oberoi Garden');
276 Contact
::delete($contactId);
280 * ParseStreetAddress() method (get street address parsed)
282 public function testParseStreetAddress() {
284 // valid Street address to be parsed ( without locale )
285 $street_address = "54A Excelsior Ave. Apt 1C";
286 $parsedStreetAddress = CRM_Core_BAO_Address
::parseStreetAddress($street_address);
287 $this->assertEquals($parsedStreetAddress['street_name'], 'Excelsior Ave.');
288 $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1C');
289 $this->assertEquals($parsedStreetAddress['street_number'], '54');
290 $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'A');
292 // valid Street address to be parsed ( $locale = 'en_US' )
293 $street_address = "54A Excelsior Ave. Apt 1C";
295 $parsedStreetAddress = CRM_Core_BAO_Address
::parseStreetAddress($street_address, $locale);
296 $this->assertEquals($parsedStreetAddress['street_name'], 'Excelsior Ave.');
297 $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1C');
298 $this->assertEquals($parsedStreetAddress['street_number'], '54');
299 $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'A');
301 // invalid Street address ( $locale = 'en_US' )
302 $street_address = "West St. Apt 1";
304 $parsedStreetAddress = CRM_Core_BAO_Address
::parseStreetAddress($street_address, $locale);
305 $this->assertEquals($parsedStreetAddress['street_name'], 'West St.');
306 $this->assertEquals($parsedStreetAddress['street_unit'], 'Apt 1');
307 $this->assertNotContains('street_number', $parsedStreetAddress);
308 $this->assertNotContains('street_number_suffix', $parsedStreetAddress);
310 // valid Street address to be parsed ( $locale = 'fr_CA' )
311 $street_address = "2-123CA Main St";
313 $parsedStreetAddress = CRM_Core_BAO_Address
::parseStreetAddress($street_address, $locale);
314 $this->assertEquals($parsedStreetAddress['street_name'], 'Main St');
315 $this->assertEquals($parsedStreetAddress['street_unit'], '2');
316 $this->assertEquals($parsedStreetAddress['street_number'], '123');
317 $this->assertEquals($parsedStreetAddress['street_number_suffix'], 'CA');
319 // invalid Street address ( $locale = 'fr_CA' )
320 $street_address = "123 Main St";
322 $parsedStreetAddress = CRM_Core_BAO_Address
::parseStreetAddress($street_address, $locale);
323 $this->assertEquals($parsedStreetAddress['street_name'], 'Main St');
324 $this->assertEquals($parsedStreetAddress['street_number'], '123');
325 $this->assertNotContains('street_unit', $parsedStreetAddress);
326 $this->assertNotContains('street_number_suffix', $parsedStreetAddress);