whitespace cleanup
[civicrm-core.git] / tests / phpunit / WebTest / Import / AddressParsingTest.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.3 |
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 along with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
25*/
26
6a488035
TO
27require_once 'WebTest/Import/ImportCiviSeleniumTestCase.php';
28class WebTest_Import_AddressParsingTest extends ImportCiviSeleniumTestCase {
29
30 protected function setUp() {
31 parent::setUp();
32 }
33
071a6d2e
CW
34 /**
35 * Function to check for Valid Street Address
36 */
6a488035 37 function testValidStreetAddressParsing() {
6a488035
TO
38 $this->webtestLogin();
39
40 //Go to the URL of Address Setting to enable street address parsing option
071a6d2e 41 $this->openCiviPage("admin/setting/preferences/address", "reset=1");
6a488035
TO
42
43 //check the street address parsing is already enabled
44 if (!$this->isChecked("address_options[13]")) {
45 $this->click("address_options[13]");
46 $this->click("_qf_Address_next");
47 $this->waitForPageToLoad($this->getTimeoutMsec());
48 }
49
50 // Get sample import data.
51 list($headers, $rows) = $this->_validStreetAddressCSVData();
52
53 $this->importContacts($headers, $rows);
54
55 // Get imported contact Ids
56 $importedContactIds = $this->_getImportedContactIds($rows);
57
58 //Go to the url of edit contact
071a6d2e 59 $this->openCiviPage("contact/add", "reset=1&action=update&cid={$importedContactIds[1]}");
6a488035
TO
60 $this->click("addressBlock");
61 $this->click("//div[@id='addressBlockId']/div[1]");
62 $this->waitForElementPresent("address_1_street_address");
63
64 //Edit Address Elements
65 $this->click("link=Edit Address Elements");
66 $this->waitForElementPresent("address_1_street_unit");
67
68 //verify all the address fields whether parsed correctly
69 $verifyData = array(
70 'address_1_street_number' => '22',
71 'address_1_street_name' => 'Adams Avenue',
72 'address_1_street_unit' => 'Unit 3c',
73 );
74 foreach ($verifyData as $key => $expectedvalue) {
75 $actualvalue = $this->getValue($key);
76 $this->assertEquals($expectedvalue, $actualvalue);
77 }
78
79 //Go to the URL of Address Setting to disable street address parsing option
071a6d2e 80 $this->openCiviPage("admin/setting/preferences/address", "reset=1");
6a488035
TO
81
82 //Disable street address parsing
83 $this->click("address_options[13]");
84 $this->click("_qf_Address_next");
85 $this->waitForPageToLoad($this->getTimeoutMsec());
86 }
87
88 /*
89 * Function to check for Invalid Street Address
90 */
91 function testInvalidStreetAddressParsing() {
6a488035
TO
92 $this->webtestLogin();
93
94 //Go to the URL of Address Setting to enable street address parsing option
071a6d2e 95 $this->openCiviPage("admin/setting/preferences/address", "reset=1");
6a488035
TO
96
97 //check the street address parsing is already enabled
98 if (!$this->isChecked("address_options[13]")) {
99 $this->click("address_options[13]");
100 $this->click("_qf_Address_next");
101 $this->waitForPageToLoad($this->getTimeoutMsec());
102 }
103
104 // Get sample import data.
105 list($headers, $rows) = $this->_invalidStreetAddressCSVData();
106
107 $this->importContacts($headers, $rows);
108 $this->assertTrue($this->isTextPresent("Records imported successfully but unable to parse some of the street addresses"));
109 $this->assertTrue($this->isTextPresent("You can Download Street Address Records . You may then edit those contact records and update the street address accordingly."));
110
111 // Get imported contact Ids
112 $importedContactIds = $this->_getImportedContactIds($rows);
113
114 //Go to the url of edit contact
071a6d2e 115 $this->openCiviPage("contact/add", "reset=1&action=update&cid={$importedContactIds[1]}");
6a488035
TO
116 $this->click("addressBlock");
117 $this->click("//div[@id='addressBlockId']/div[1]");
118 $this->waitForElementPresent("address_1_street_address");
119
120 //Edit Address Elements
121 $this->click("link=Edit Address Elements");
122 $this->waitForElementPresent("address_1_street_unit");
123
124 //verify all the address fields whether parsed correctly
125 $verifyData = array(
126 'address_1_street_number' => '',
127 'address_1_street_name' => '',
128 'address_1_street_unit' => '',
129 );
130 foreach ($verifyData as $key => $expectedvalue) {
131 $actualvalue = $this->getValue($key);
132 $this->assertEquals($expectedvalue, $actualvalue);
133 }
134
135 //Go to the URL of Address Setting to disable street address parsing option
071a6d2e 136 $this->openCiviPage("admin/setting/preferences/address", "reset=1");
6a488035
TO
137
138 //Disable street address parsing
139 $this->click("address_options[13]");
140 $this->click("_qf_Address_next");
141 $this->waitForPageToLoad($this->getTimeoutMsec());
142 }
143
071a6d2e
CW
144 /**
145 * Function to check Street Address when Address Parsing is Disabled
146 */
6a488035 147 function testStreetAddress() {
6a488035
TO
148 $this->webtestLogin();
149
150 //Go to the URL of Address Setting to enable street address parsing option
071a6d2e 151 $this->openCiviPage("admin/setting/preferences/address", "reset=1");
6a488035
TO
152
153 //check the street address parsing is already disabled
154 if ($this->isChecked("address_options[13]")) {
155 $this->click("address_options[13]");
156 $this->click("_qf_Address_next");
157 $this->waitForPageToLoad($this->getTimeoutMsec());
158 }
159
160 // Get sample import data.
161 list($headers, $rows) = $this->_validStreetAddressCSVData();
162
163 $this->importContacts($headers, $rows);
164
165 // Get imported contact Ids
166 $importedContactIds = $this->_getImportedContactIds($rows);
167
168 //Go to the url of edit contact
071a6d2e 169 $this->openCiviPage("contact/add", "reset=1&action=update&cid={$importedContactIds[1]}");
6a488035
TO
170 $this->click("addressBlock");
171 $this->click("//div[@id='addressBlockId']/div[1]");
172 $this->waitForElementPresent("address_1_street_address");
173
174 //verify the address field
175 $verifyData = array('address_1_street_address' => '22 Adams Avenue Unit 3c');
176 $actualvalue = $this->getValue('address_1_street_address');
177 $this->assertEquals('22 Adams Avenue Unit 3c', $actualvalue);
178 }
179
180 /*
181 * Helper function to provide csv data with Valid Street Address.
182 */
183 function _validStreetAddressCSVData() {
184 $headers = array(
185 'first_name' => 'First Name',
186 'middle_name' => 'Middle Name',
187 'last_name' => 'Last Name',
188 'email' => 'Email',
189 'phone' => 'Phone',
190 'street_address' => 'Street Address',
191 'address_1' => 'Additional Address 1',
192 'address_2' => 'Additional Address 2',
193 'city' => 'City',
194 'state' => 'State',
195 'country' => 'Country',
196 );
197
198 $rows = array(
199 array('first_name' => 'A' . substr(sha1(rand()), 0, 7),
200 'middle_name' => substr(sha1(rand()), 0, 7),
201 'last_name' => substr(sha1(rand()), 0, 7) . 'and',
202 'email' => substr(sha1(rand()), 0, 7) . '@example.com',
203 'phone' => '6949912154',
204 'street_address' => '54A Excelsior Ave. Apt 1C',
205 'address_1' => 'Add 1',
206 'address_2' => 'Add 2',
207 'city' => 'Watson',
208 'state' => 'NY',
209 'country' => 'United States',
210 ),
211 array('first_name' => 'S' . substr(sha1(rand()), 0, 7),
212 'middle_name' => substr(sha1(rand()), 0, 7),
213 'last_name' => substr(sha1(rand()), 0, 7) . 'sum',
214 'email' => substr(sha1(rand()), 0, 7) . '@example.com',
215 'phone' => '6944412154',
216 'street_address' => '22 Adams Avenue Unit 3c',
217 'address_1' => 'Add 1',
218 'address_2' => 'Add 2',
219 'city' => 'Watson',
220 'state' => 'NY',
221 'country' => 'United States',
222 ),
223 );
224
225 return array($headers, $rows);
226 }
227
228 /*
229 * Helper function to provide csv data with Invalid Street Address.
230 */
231 function _invalidStreetAddressCSVData() {
232 $headers = array(
233 'first_name' => 'First Name',
234 'middle_name' => 'Middle Name',
235 'last_name' => 'Last Name',
236 'email' => 'Email',
237 'phone' => 'Phone',
238 'street_address' => 'Street Address',
239 'address_1' => 'Additional Address 1',
240 'address_2' => 'Additional Address 2',
241 'city' => 'City',
242 'state' => 'State',
243 'country' => 'Country',
244 );
245
246 $rows = array(
247 array('first_name' => 'A' . substr(sha1(rand()), 0, 7),
248 'middle_name' => substr(sha1(rand()), 0, 7),
249 'last_name' => substr(sha1(rand()), 0, 7) . 'and',
250 'email' => substr(sha1(rand()), 0, 7) . '@example.com',
251 'phone' => '6949912154',
252 'street_address' => 'West St. Apt 1',
253 'address_1' => 'Add 1',
254 'address_2' => 'Add 2',
255 'city' => 'Watson',
256 'state' => 'NY',
257 'country' => 'United States',
258 ),
259 array('first_name' => 'S' . substr(sha1(rand()), 0, 7),
260 'middle_name' => substr(sha1(rand()), 0, 7),
261 'last_name' => substr(sha1(rand()), 0, 7) . 'sum',
262 'email' => substr(sha1(rand()), 0, 7) . '@example.com',
263 'phone' => '6944412154',
264 'street_address' => 'SW 440N Lincoln Dr S',
265 'address_1' => 'Add 1',
266 'address_2' => 'Add 2',
267 'city' => 'Watson',
268 'state' => 'NY',
269 'country' => 'United States',
270 ),
271 );
272
273 return array($headers, $rows);
274 }
275}
276