Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
81621fee | 4 | | CiviCRM version 4.7 | |
6a488035 | 5 | +--------------------------------------------------------------------+ |
15a4309a | 6 | | Copyright CiviCRM LLC (c) 2004-2017 | |
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 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 | +--------------------------------------------------------------------+ | |
d25dd0ee | 25 | */ |
6a488035 | 26 | |
6a488035 | 27 | require_once 'CiviTest/CiviSeleniumTestCase.php'; |
e9479dcf EM |
28 | |
29 | /** | |
30 | * Class WebTest_Report_LoggingReportTest | |
31 | */ | |
6a488035 TO |
32 | class WebTest_Report_LoggingReportTest extends CiviSeleniumTestCase { |
33 | ||
34 | protected function setUp() { | |
35 | parent::setUp(); | |
36 | } | |
331a5c18 | 37 | |
00be9182 | 38 | public function testLoggingReport() { |
6a488035 TO |
39 | $this->webtestLogin(); |
40 | ||
41 | //enable the logging | |
8fe1f83e | 42 | $this->openCiviPage('admin/setting/misc', 'reset=1'); |
6a488035 TO |
43 | $this->click("xpath=//tr[@class='crm-miscellaneous-form-block-logging']/td[2]/label[text()='Yes']"); |
44 | $this->click("_qf_Miscellaneous_next-top"); | |
57828c6e DS |
45 | $this->waitForPageToLoad(2 * $this->getTimeoutMsec()); |
46 | // FIXME: good to do waitForText here but enabling log is time consuming and status may fade out by the time we do the check. | |
331a5c18 PJ |
47 | |
48 | //enable CiviCase component | |
b9715b8a CW |
49 | $this->enableComponents("CiviCase"); |
50 | ||
6a488035 | 51 | //add new contact |
fcb93467 | 52 | $originalFirstName = $firstName = 'Anthony' . substr(sha1(rand()), 0, 7); |
92915c55 | 53 | $lastName = 'Anderson' . substr(sha1(rand()), 0, 7); |
331a5c18 | 54 | |
6a488035 | 55 | $this->webtestAddContact($firstName, $lastName); |
a471a3b6 | 56 | $cid = $this->urlArg('cid'); |
6a488035 TO |
57 | |
58 | //add contact to group | |
59 | $this->waitForElementPresent("xpath=//li[@id='tab_group']/a"); | |
60 | $this->click("xpath=//li[@id='tab_group']/a"); | |
efb29358 CW |
61 | // Because it tends to cause problems, all uses of sleep() must be justified in comments |
62 | // Sleep should never be used for wait for anything to load from the server | |
63 | // Justification for this instance: FIXME | |
371f954c | 64 | $this->waitForElementPresent("group_id"); |
6a488035 | 65 | $this->select("group_id", "label=Case Resources"); |
e3bb9229 | 66 | $this->click("_qf_GroupContact_next"); |
67 | $this->waitForElementPresent("xpath=//form[@id='GroupContact']//div[@class='view-content view-contact-groups']//div[@class='dataTables_wrapper no-footer']/table/tbody/tr/td[4]/a"); | |
68 | $this->click("xpath=//form[@id='GroupContact']//div[@class='view-content view-contact-groups']//div[@class='dataTables_wrapper no-footer']/table/tbody/tr/td[4]/a"); | |
331a5c18 PJ |
69 | |
70 | // Check confirmation alert. | |
9445497e | 71 | $this->waitForText("xpath=//div[@class='crm-confirm-dialog ui-dialog-content ui-widget-content modal-dialog']", "Remove $firstName $lastName from Case Resources?"); |
72 | $this->click("xpath=//div[@class='ui-dialog-buttonset']//button//span[text()='Continue']"); | |
6a488035 | 73 | |
331a5c18 | 74 | //tag addition |
6a488035 TO |
75 | $this->waitForElementPresent("xpath=//li[@id='tab_tag']/a"); |
76 | $this->click("xpath=//li[@id='tab_tag']/a"); | |
efb29358 CW |
77 | // Because it tends to cause problems, all uses of sleep() must be justified in comments |
78 | // Sleep should never be used for wait for anything to load from the server | |
79 | // Justification for this instance: FIXME | |
f952d4f0 | 80 | $this->waitForElementPresent("tagtree"); |
e3bb9229 | 81 | $this->click("xpath=//div[@id='tagtree']/ul//li/span/label[text()='Company']"); |
6a488035 | 82 | $this->waitForTextPresent("Saved"); |
e3bb9229 | 83 | $this->click("xpath=//div[@id='tagtree']/ul//li/span/label[text()='Government Entity']"); |
6a488035 | 84 | $this->waitForTextPresent("Saved"); |
e3bb9229 | 85 | $this->click("xpath=//div[@id='tagtree']/ul//li/span/label[text()='Company']"); |
6a488035 TO |
86 | $this->waitForTextPresent("Saved"); |
87 | ||
88 | //add new note | |
89 | $this->waitForElementPresent("xpath=//li[@id='tab_note']/a"); | |
90 | $this->click("xpath=//li[@id='tab_note']/a"); | |
c79fb98e WA |
91 | $this->waitForAjaxContent(); |
92 | $this->click("xpath=//div[@class='view-content']//div[@class='action-link']/a[@class='button medium-popup']"); | |
6a488035 TO |
93 | |
94 | $this->waitForElementPresent("_qf_Note_upload-top"); | |
95 | $noteSubject = "test note" . substr(sha1(rand()), 0, 7); | |
96 | $noteText = "test note text" . substr(sha1(rand()), 0, 7); | |
97 | $this->type('subject', $noteSubject); | |
98 | $this->type('note', $noteText); | |
99 | $this->click("_qf_Note_upload-top"); | |
b18eb8e1 RK |
100 | $this->waitForElementPresent("xpath=//div[@id='notes']/div/table/tbody/tr/td[7]/span[1]/a[2][text()='Edit']"); |
101 | $this->click("xpath=//div[@id='notes']/div/table/tbody/tr/td[7]/span[1]/a[2][text()='Edit']"); | |
6a488035 TO |
102 | $this->waitForElementPresent("_qf_Note_upload-top"); |
103 | $this->type('subject', $noteSubject . "_edited"); | |
104 | $this->type('note', $noteText . "_edited"); | |
9445497e | 105 | $this->clickLink("_qf_Note_upload-top", "xpath=//div[@class='crm-results-block']/div[@id='notes']/div/table/tbody/tr//td/span[2]/ul/li[2]/a[text()='Delete']", FALSE); |
331a5c18 | 106 | |
b18eb8e1 | 107 | $this->click("xpath=//div[@id='notes']/div/table/tbody/tr/td[7]/span[2]/ul/li[2]/a[text()='Delete']"); |
331a5c18 | 108 | // Check confirmation alert. |
e3bb9229 | 109 | $this->waitForText("xpath=//form[@id='Note']/div[@class='view-content']/div[@class='status']", "Are you sure you want to delete the note ''?"); |
9445497e | 110 | $this->click("xpath=//input[@id='_qf_Note_next']"); |
111 | $this->waitForText('crm-notification-container', "Selected Note has been deleted successfully."); | |
331a5c18 | 112 | |
6a488035 TO |
113 | //add new relationship , disable it , delete it |
114 | $this->waitForElementPresent("xpath=//li[@id='tab_rel']/a"); | |
57828c6e DS |
115 | $this->click("css=li#tab_rel a"); |
116 | $this->waitForElementPresent("link=Add Relationship"); | |
117 | $this->click("link=Add Relationship"); | |
118 | $this->waitForElementPresent("_qf_Relationship_cancel"); | |
6a488035 | 119 | $this->select("relationship_type_id", "label=Employee of"); |
9445497e | 120 | $this->select2('related_contact_id', 'Default', TRUE); |
121 | $this->click('_qf_Relationship_upload-bottom'); | |
b18eb8e1 RK |
122 | $this->waitForElementPresent("xpath=//div[@id='contact-summary-relationship-tab']/div[2]/div/table/tbody/tr/td[9]/span[2][text()='more']/ul/li[1]/a[text()='Disable']"); |
123 | ||
124 | $this->click("xpath=//div[@id='contact-summary-relationship-tab']/div[2]/div/table/tbody/tr/td[9]/span[2][text()='more']/ul/li[1]/a[text()='Disable']"); | |
f390456a | 125 | $this->waitForText("xpath=//div[@class='crm-confirm-dialog ui-dialog-content ui-widget-content modal-dialog crm-ajax-container']", 'Are you sure you want to disable this relationship?'); |
e3bb9229 | 126 | $this->click("xpath=//div[@class='ui-dialog-buttonset']//button//span[text()='Yes']"); |
127 | $this->waitForElementPresent("xpath=//div[@class='crm-contact-relationship-past']/div//table/tbody//tr/td[9]/span[2][text()='more']/ul/li[2]/a[text()='Delete']"); | |
128 | $this->click("xpath=//div[@class='crm-contact-relationship-past']/div//table/tbody//tr/td[9]/span[2][text()='more']/ul/li[2]/a[text()='Delete']"); | |
9445497e | 129 | $this->waitForText("xpath=//form[@id='Relationship']/div[@class='status']", "Are you sure you want to delete this Relationship?"); |
130 | $this->click("_qf_Relationship_next-bottom"); | |
131 | $this->waitForElementPresent("link=Add Relationship"); | |
6a488035 TO |
132 | |
133 | //update existing contact | |
134 | $this->click("xpath=//ul[@id='actions']/li[2]/a"); | |
135 | $this->waitForElementPresent("_qf_Contact_upload_view-top"); | |
136 | $firstName = "{$firstName}_edited"; | |
137 | $this->type("first_name", $firstName); | |
138 | $this->click("_qf_Contact_upload_view-top"); | |
139 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
331a5c18 | 140 | |
6a488035 TO |
141 | //add an activity |
142 | $this->click("xpath=//li[@id='tab_activity']/a"); | |
143 | $this->waitForElementPresent("other_activity"); | |
144 | $this->select("other_activity", "label=Interview"); | |
9445497e | 145 | $this->waitForElementPresent("_qf_Activity_cancel-bottom"); |
6a488035 | 146 | $this->click('_qf_Activity_upload-bottom'); |
3d4f16de WA |
147 | $this->waitForElementPresent("xpath=//div[@class='dataTables_wrapper no-footer']/table/tbody/tr//td//span/a[text()='Edit']"); |
148 | $this->click("xpath=//div[@class='dataTables_wrapper no-footer']/table/tbody/tr//td//span/a[text()='Edit']"); | |
9445497e | 149 | $this->waitForElementPresent("_qf_Activity_cancel-bottom"); |
6c6e6187 | 150 | $this->select("status_id", "value=2"); |
05e39ac3 | 151 | $this->waitForAjaxContent(); |
6a488035 | 152 | $this->click('_qf_Activity_upload-bottom'); |
9445497e | 153 | $this->waitForText("crm-notification-container", "Activity has been saved."); |
05e39ac3 WA |
154 | $this->waitForElementPresent("xpath=//div[@class='dataTables_wrapper no-footer']/table/tbody/tr/td[7]/div"); |
155 | $this->verifyText("xpath=//div[@class='dataTables_wrapper no-footer']/table/tbody/tr/td[7]/div", 'Completed'); | |
331a5c18 | 156 | |
6a488035 TO |
157 | //add a case |
158 | $this->click("xpath=//li[@id='tab_case']/a"); | |
3d4f16de WA |
159 | $this->waitForElementPresent("xpath=//form[@id='Search']//div/div//div[@class='action-link']/a"); |
160 | $this->click("xpath=//form[@id='Search']//div/div//div[@class='action-link']/a"); | |
9445497e | 161 | $this->waitForElementPresent("_qf_Case_cancel-bottom"); |
92fcb95f | 162 | $this->type('activity_subject', "subject" . rand()); |
6c6e6187 | 163 | $this->select('case_type_id', 'value=1'); |
6a488035 | 164 | $this->click('_qf_Case_upload-bottom'); |
05e39ac3 WA |
165 | $this->waitForElementPresent("xpath=//table[@class='caseSelector']/tbody//tr/td[9]//span/a[1][text()='Manage']"); |
166 | $this->click("xpath=//table[@class='caseSelector']/tbody//tr/td[9]//span/a[1][text()='Manage']"); | |
9445497e | 167 | $this->waitForElementPresent("xpath=//form[@id='CaseView']/div[2]/table/tbody/tr/td[4]/a"); |
6a488035 TO |
168 | $this->click("xpath=//form[@id='CaseView']/div[2]/table/tbody/tr/td[4]/a"); |
169 | $this->waitForElementPresent("_qf_Activity_cancel-bottom"); | |
6c6e6187 | 170 | $this->select("case_status_id", "value=2"); |
6a488035 | 171 | $this->click("_qf_Activity_upload-top"); |
9445497e | 172 | $this->waitForElementPresent("_qf_CaseView_cancel-bottom"); |
173 | $this->click("_qf_CaseView_cancel-bottom"); | |
6a488035 | 174 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
331a5c18 | 175 | |
6a488035 | 176 | //visit the logging contact summary report |
8fe1f83e | 177 | $this->openCiviPage('report/logging/contact/summary', 'reset=1'); |
1361cc61 | 178 | $this->waitForElementPresent('altered_contact_value'); |
6a488035 TO |
179 | $this->type('altered_contact_value', $firstName); |
180 | $this->click("_qf_LoggingSummary_submit"); | |
181 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
182 | ||
183 | $data = array( | |
331a5c18 PJ |
184 | //contact data check |
185 | array("log_type" => "Contact", "altered_contact" => "{$firstName} {$lastName}", "action" => "Update"), | |
186 | array("log_type" => "Contact", "altered_contact" => "{$firstName} {$lastName}", "action" => "Insert"), | |
187 | //relationship data check | |
92915c55 TO |
188 | array( |
189 | "log_type" => "Relationship", | |
190 | "altered_contact" => "{$firstName} {$lastName} [Employee of]", | |
5396af74 | 191 | "action" => "Update", |
92915c55 TO |
192 | ), |
193 | array( | |
194 | "log_type" => "Relationship", | |
195 | "altered_contact" => "{$firstName} {$lastName} [Employee of]", | |
5396af74 | 196 | "action" => "Insert", |
92915c55 TO |
197 | ), |
198 | array( | |
199 | "log_type" => "Relationship", | |
200 | "altered_contact" => "{$firstName} {$lastName} [Employee of]", | |
5396af74 | 201 | "action" => "Delete", |
92915c55 | 202 | ), |
331a5c18 | 203 | //group data check |
92915c55 TO |
204 | array( |
205 | "log_type" => "Group", | |
206 | "altered_contact" => "{$firstName} {$lastName} [Case Resources]", | |
5396af74 | 207 | "action" => "Added", |
92915c55 TO |
208 | ), |
209 | array( | |
210 | "log_type" => "Group", | |
211 | "altered_contact" => "{$firstName} {$lastName} [Case Resources]", | |
5396af74 | 212 | "action" => "Removed", |
92915c55 | 213 | ), |
331a5c18 PJ |
214 | //note data check |
215 | array("log_type" => "Note", "altered_contact" => "{$firstName} {$lastName}", "action" => "Update"), | |
216 | array("log_type" => "Note", "altered_contact" => "{$firstName} {$lastName}", "action" => "Insert"), | |
217 | array("log_type" => "Note", "altered_contact" => "{$firstName} {$lastName}", "action" => "Delete"), | |
218 | //tags data check | |
219 | array("log_type" => "Tag", "altered_contact" => "{$firstName} {$lastName} [Company]", "action" => "Insert"), | |
92915c55 TO |
220 | array( |
221 | "log_type" => "Tag", | |
222 | "altered_contact" => "{$firstName} {$lastName} [Government Entity]", | |
5396af74 | 223 | "action" => "Insert", |
92915c55 | 224 | ), |
331a5c18 PJ |
225 | array("log_type" => "Tag", "altered_contact" => "{$firstName} {$lastName} [Company]", "action" => "Delete"), |
226 | //case data check | |
92915c55 TO |
227 | array( |
228 | "log_type" => "Case", | |
229 | "altered_contact" => "{$firstName} {$lastName} [Housing Support]", | |
5396af74 | 230 | "action" => "Update", |
92915c55 TO |
231 | ), |
232 | array( | |
233 | "log_type" => "Case", | |
234 | "altered_contact" => "{$firstName} {$lastName} [Housing Support]", | |
5396af74 | 235 | "action" => "Insert", |
92915c55 | 236 | ), |
331a5c18 | 237 | //case activity check |
92915c55 TO |
238 | array( |
239 | "log_type" => "Activity", | |
240 | "altered_contact" => "{$firstName} {$lastName} [Interview]", | |
5396af74 | 241 | "action" => "Update", |
92915c55 TO |
242 | ), |
243 | array( | |
244 | "log_type" => "Activity", | |
245 | "altered_contact" => "{$firstName} {$lastName} [Interview]", | |
5396af74 | 246 | "action" => "Insert", |
92915c55 | 247 | ), |
331a5c18 | 248 | ); |
6a488035 | 249 | $this->verifyReportData($data); |
331a5c18 | 250 | |
6a488035 TO |
251 | //update link (logging details report check) |
252 | $contactInfo = array(); | |
253 | $contactInfo['data'] = array( | |
92915c55 TO |
254 | array( |
255 | 'field' => 'Sort Name', | |
fcb93467 | 256 | 'changed_from' => "{$lastName}, {$originalFirstName}", |
5396af74 | 257 | 'changed_to' => "{$lastName}, {$firstName}", |
92915c55 TO |
258 | ), |
259 | array( | |
260 | 'field' => 'Display Name', | |
fcb93467 | 261 | 'changed_from' => "{$originalFirstName} {$lastName}", |
5396af74 | 262 | 'changed_to' => "{$firstName} {$lastName}", |
92915c55 | 263 | ), |
fcb93467 EM |
264 | array('field' => 'First Name', 'changed_from' => $originalFirstName, 'changed_to' => $firstName), |
265 | // array('field' => 'Email Greeting', 'changed_from' => "Dear {$originalFirstName}", 'changed_to' => "Dear {$firstName}"), | |
266 | // array('field' => 'Postal Greeting', 'changed_from' => "Dear {$originalFirstName}", 'changed_to' => "Dear {$firstName}"), | |
267 | // array('field' => 'Addressee', 'changed_from' => "{$originalFirstName} {$lastName}", 'changed_to' => "{$firstName} {$lastName}"), | |
6a488035 TO |
268 | ); |
269 | $contactInfo = array_merge($contactInfo, $data[0]); | |
331a5c18 | 270 | |
6a488035 TO |
271 | $relationshipInfo = array(); |
272 | $relationshipInfo['data'] = array( | |
92915c55 | 273 | array('field' => 'Relationship Is Active', 'changed_from' => 'true', 'changed_to' => 'false'), |
6a488035 TO |
274 | ); |
275 | $relationshipInfo = array_merge($relationshipInfo, $data[2]); | |
276 | ||
277 | $noteInfo = array(); | |
278 | $noteInfo['data'] = array( | |
279 | array('field' => 'Note', 'changed_from' => $noteText, 'changed_to' => "{$noteText}_edited"), | |
280 | array('field' => 'Subject', 'changed_from' => $noteSubject, 'changed_to' => "{$noteSubject}_edited"), | |
281 | ); | |
282 | $noteInfo = array_merge($noteInfo, $data[7]); | |
283 | ||
284 | $caseInfo = array(); | |
285 | $caseInfo['data'] = array( | |
286 | array('field' => 'Case Status Id', 'changed_from' => 'Ongoing', 'changed_to' => "Resolved"), | |
287 | ); | |
288 | $caseInfo = array_merge($caseInfo, $data[13]); | |
289 | ||
331a5c18 PJ |
290 | $activityInfo = array(); |
291 | $activityInfo['data'] = array( | |
92915c55 TO |
292 | array('field' => 'Activity Status Id', 'changed_from' => 'Scheduled', 'changed_to' => 'Completed'), |
293 | ); | |
331a5c18 | 294 | $activityInfo = array_merge($activityInfo, $data[15]); |
6a488035 TO |
295 | |
296 | $dataForReportDetail = array($contactInfo, $relationshipInfo, $noteInfo, $caseInfo, $activityInfo); | |
297 | $filters = array( | |
298 | 'text' => array('altered_contact_value' => "{$firstName} {$lastName}"), | |
299 | ); | |
300 | $this->detailReportCheck($dataForReportDetail, $filters); | |
331a5c18 | 301 | |
6a488035 | 302 | //delete contact check |
57828c6e | 303 | $this->openCiviPage('contact/view/delete', "reset=1&delete=1&cid=$cid"); |
6a488035 TO |
304 | $this->click("_qf_Delete_done"); |
305 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
331a5c18 | 306 | |
8fe1f83e | 307 | $this->openCiviPage('report/logging/contact/summary', 'reset=1'); |
6a488035 TO |
308 | $this->click("_qf_LoggingSummary_submit"); |
309 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
331a5c18 | 310 | |
92915c55 TO |
311 | $contactDataDelete = array( |
312 | array( | |
313 | "log_type" => "Contact", | |
314 | "altered_contact" => "{$firstName} {$lastName}", | |
5396af74 | 315 | "action" => "Delete (to trash)", |
316 | ), | |
92915c55 | 317 | ); |
6a488035 | 318 | $this->verifyReportData($contactDataDelete); |
331a5c18 | 319 | |
6a488035 | 320 | //disable the logging |
8fe1f83e | 321 | $this->openCiviPage('admin/setting/misc', 'reset=1'); |
4a058f26 | 322 | $this->waitForElementPresent("xpath=//tr[@class='crm-miscellaneous-form-block-logging']/td[2]/label[text()='No']"); |
6a488035 TO |
323 | $this->click("xpath=//tr[@class='crm-miscellaneous-form-block-logging']/td[2]/label[text()='No']"); |
324 | $this->click("_qf_Miscellaneous_next-top"); | |
325 | $this->waitForTextPresent("Changes Saved"); | |
326 | } | |
331a5c18 | 327 | |
4cbe18b8 EM |
328 | /** |
329 | * @param $data | |
330 | */ | |
00be9182 | 331 | public function verifyReportData($data) { |
6a488035 TO |
332 | foreach ($data as $value) { |
333 | // check for the row contains proper data | |
334 | $actionPath = ($value['action'] == 'Update') ? "td[1]/a[2]" : "td[1][contains(text(), '{$value['action']}')]"; | |
335 | $contactCheck = ($value['action'] == 'Delete (to trash)') ? "td[4][contains(text(), '{$value['altered_contact']}')]" : "td[4]/a[contains(text(), '{$value['altered_contact']}')]/.."; | |
331a5c18 | 336 | |
6a488035 | 337 | $this->assertTrue($this->isElementPresent("xpath=//table/tbody//tr/td[2][contains(text(), '{$value['log_type']}')]/../{$contactCheck}/../{$actionPath}"), "The proper record not present for (log type : {$value['log_type']}, altered contact : {$value['altered_contact']}, action as {$value['action']})"); |
331a5c18 | 338 | |
6a488035 | 339 | if ($value['action'] == 'Update') { |
481a74f4 | 340 | $this->assertTrue(($value['action'] == $this->getText("xpath=//table/tbody//tr/td[2][contains(text(), '{$value['log_type']}')]/../td[4]/a[contains(text(), '{$value['altered_contact']}')]/../../{$actionPath}")), "The proper record action {$value['action']} not present for (log type : {$value['log_type']}, altered contact : {$value['altered_contact']} record)"); |
6a488035 TO |
341 | } |
342 | } | |
343 | } | |
331a5c18 | 344 | |
4cbe18b8 EM |
345 | /** |
346 | * @param $dataForReportDetail | |
347 | * @param array $filters | |
348 | */ | |
00be9182 | 349 | public function detailReportCheck($dataForReportDetail, $filters = array()) { |
6a488035 TO |
350 | foreach ($dataForReportDetail as $value) { |
351 | $this->waitForElementPresent("xpath=//table/tbody//tr/td[2][contains(text(), '{$value['log_type']}')]/../td[4]/a[contains(text(), '{$value['altered_contact']}')]/../../td[1]/a[2]"); | |
352 | $this->click("xpath=//table/tbody//tr/td[2][contains(text(), '{$value['log_type']}')]/../td[4]/a[contains(text(), '{$value['altered_contact']}')]/../../td[1]/a[2]"); | |
353 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
331a5c18 | 354 | |
6a488035 TO |
355 | foreach ($value['data'] as $key => $data) { |
356 | $rowCount = $this->getXpathCount("//table[@class='report-layout display']/tbody/tr"); | |
357 | for ($i = 1; $i <= $rowCount; $i++) { | |
358 | $field = $data['field']; | |
359 | if ($this->isElementPresent("xpath=//form[@id='LoggingDetail']//table/tbody/tr[{$i}]/td[@class='crm-report-field'][text()='$field']")) { | |
360 | $this->verifyText("xpath=//form[@id='LoggingDetail']//table/tbody/tr[{$i}]/td[@class='crm-report-field']", preg_quote($data['field'])); | |
361 | $this->verifyText("xpath=//form[@id='LoggingDetail']//table/tbody/tr[{$i}]/td[@class='crm-report-from']", preg_quote($data['changed_from'])); | |
362 | $this->verifyText("xpath=//form[@id='LoggingDetail']//table/tbody/tr[{$i}]/td[@class='crm-report-to']", preg_quote($data['changed_to'])); | |
363 | } | |
364 | } | |
365 | } | |
366 | ||
6c6e6187 TO |
367 | //visit the logging contact summary report |
368 | $this->openCiviPage('report/logging/contact/summary', 'reset=1'); | |
369 | foreach ($filters as $type => $filter) { | |
481a74f4 | 370 | if ($type == 'text') { |
6c6e6187 TO |
371 | foreach ($filter as $filterName => $filterValue) { |
372 | $this->type($filterName, $filterValue); | |
373 | } | |
6a488035 TO |
374 | } |
375 | } | |
6c6e6187 TO |
376 | $this->click("_qf_LoggingSummary_submit"); |
377 | $this->waitForPageToLoad($this->getTimeoutMsec()); | |
6a488035 TO |
378 | } |
379 | } | |
96025800 | 380 | |
b9715b8a | 381 | } |