Commit | Line | Data |
---|---|---|
6a488035 | 1 | <?php |
0eea664b | 2 | |
aba1cd8b EM |
3 | /** |
4 | * Class CRM_Activity_BAO_ActivityTest | |
acb109b7 | 5 | * @group headless |
aba1cd8b | 6 | */ |
6a488035 | 7 | class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { |
00be9182 | 8 | public function setUp() { |
6a488035 | 9 | parent::setUp(); |
cbcedb39 | 10 | $this->prepareForACLs(); |
11 | CRM_Core_Config::singleton()->userPermissionClass->permissions = array('view all contacts', 'access CiviCRM'); | |
6a488035 TO |
12 | } |
13 | ||
cbcedb39 | 14 | /** |
15 | * Clean up after tests. | |
16 | */ | |
00be9182 | 17 | public function tearDown() { |
824989b9 | 18 | $tablesToTruncate = array( |
824989b9 AS |
19 | 'civicrm_activity', |
20 | 'civicrm_activity_contact', | |
21 | 'civicrm_uf_match', | |
22 | 'civicrm_campaign', | |
23 | 'civicrm_email', | |
24 | ); | |
6a488035 | 25 | $this->quickCleanup($tablesToTruncate); |
cbcedb39 | 26 | $this->cleanUpAfterACLs(); |
27 | parent::tearDown(); | |
6a488035 TO |
28 | } |
29 | ||
30 | /** | |
fe482240 | 31 | * Test case for create() method. |
6a488035 | 32 | */ |
00be9182 | 33 | public function testCreate() { |
f7969dcf | 34 | $contactId = $this->individualCreate(); |
6a488035 TO |
35 | |
36 | $params = array( | |
37 | 'source_contact_id' => $contactId, | |
38 | 'subject' => 'Scheduling Meeting', | |
39 | 'activity_type_id' => 2, | |
40 | ); | |
41 | ||
42 | CRM_Activity_BAO_Activity::create($params); | |
43 | ||
44 | $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', | |
45 | 'subject', 'Database check for created activity.' | |
46 | ); | |
47 | ||
cbcedb39 | 48 | // Now call create() to modify an existing Activity. |
6a488035 TO |
49 | $params = array( |
50 | 'id' => $activityId, | |
51 | 'source_contact_id' => $contactId, | |
52 | 'subject' => 'Scheduling Interview', | |
53 | 'activity_type_id' => 3, | |
54 | ); | |
55 | ||
56 | CRM_Activity_BAO_Activity::create($params); | |
57 | ||
58 | $activityTypeId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Interview', | |
59 | 'activity_type_id', | |
60 | 'subject', 'Database check on updated activity record.' | |
61 | ); | |
62 | $this->assertEquals($activityTypeId, 3, 'Verify activity type id is 3.'); | |
63 | ||
93ac19cd | 64 | $this->contactDelete($contactId); |
6a488035 TO |
65 | } |
66 | ||
67 | /** | |
fe482240 EM |
68 | * Test case for getContactActivity() method. |
69 | * | |
70 | * getContactActivity() method get activities detail for given target contact id. | |
6a488035 | 71 | */ |
00be9182 | 72 | public function testGetContactActivity() { |
f7969dcf | 73 | $contactId = $this->individualCreate(); |
6a488035 TO |
74 | $params = array( |
75 | 'first_name' => 'liz', | |
76 | 'last_name' => 'hurleey', | |
77 | ); | |
f7969dcf | 78 | $targetContactId = $this->individualCreate($params); |
6a488035 TO |
79 | |
80 | $params = array( | |
81 | 'source_contact_id' => $contactId, | |
82 | 'subject' => 'Scheduling Meeting', | |
83 | 'activity_type_id' => 2, | |
84 | 'target_contact_id' => array($targetContactId), | |
85 | 'activity_date_time' => date('Ymd'), | |
86 | ); | |
87 | ||
f7969dcf | 88 | $this->callAPISuccess('Activity', 'create', $params); |
6a488035 TO |
89 | |
90 | $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', | |
91 | 'id', | |
92 | 'subject', 'Database check for created activity.' | |
93 | ); | |
94 | ||
a59cecb1 | 95 | // @todo - remove this deprecated functions |
6a488035 TO |
96 | $activities = CRM_Activity_BAO_Activity::getContactActivity($targetContactId); |
97 | ||
98 | $this->assertEquals($activities[$activityId]['subject'], 'Scheduling Meeting', 'Verify activity subject is correct.'); | |
99 | ||
93ac19cd | 100 | $this->contactDelete($contactId); |
101 | $this->contactDelete($targetContactId); | |
6a488035 TO |
102 | } |
103 | ||
104 | /** | |
fe482240 EM |
105 | * Test case for retrieve() method. |
106 | * | |
107 | * Retrieve($params, $defaults) method return activity detail for given params | |
6a488035 TO |
108 | * and set defaults. |
109 | */ | |
00be9182 | 110 | public function testRetrieve() { |
f7969dcf | 111 | $contactId = $this->individualCreate(); |
6a488035 TO |
112 | $params = array( |
113 | 'first_name' => 'liz', | |
114 | 'last_name' => 'hurleey', | |
115 | ); | |
f7969dcf | 116 | $targetContactId = $this->individualCreate($params); |
6a488035 TO |
117 | |
118 | $params = array( | |
119 | 'source_contact_id' => $contactId, | |
120 | 'subject' => 'Scheduling Meeting', | |
121 | 'activity_type_id' => 2, | |
122 | 'target_contact_id' => array($targetContactId), | |
123 | 'activity_date_time' => date('Ymd'), | |
124 | ); | |
125 | ||
126 | CRM_Activity_BAO_Activity::create($params); | |
127 | ||
cbcedb39 | 128 | $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', |
6a488035 TO |
129 | 'subject', 'Database check for created activity.' |
130 | ); | |
131 | ||
cbcedb39 | 132 | $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, |
f1c7b1f0 | 133 | 'id', 'contact_id', |
6a488035 TO |
134 | 'Database check for created activity target.' |
135 | ); | |
136 | ||
137 | $defaults = array(); | |
138 | $activity = CRM_Activity_BAO_Activity::retrieve($params, $defaults); | |
139 | ||
140 | $this->assertEquals($activity->subject, 'Scheduling Meeting', 'Verify activity subject is correct.'); | |
6a488035 | 141 | $this->assertEquals($activity->activity_type_id, 2, 'Verify activity type id is correct.'); |
b2e56051 | 142 | $this->assertEquals($defaults['source_contact_id'], $contactId, 'Verify source contact id is correct.'); |
6a488035 TO |
143 | |
144 | $this->assertEquals($defaults['subject'], 'Scheduling Meeting', 'Verify activity subject is correct.'); | |
6a488035 TO |
145 | $this->assertEquals($defaults['activity_type_id'], 2, 'Verify activity type id is correct.'); |
146 | ||
147 | $this->assertEquals($defaults['target_contact'][0], $targetContactId, 'Verify target contact id is correct.'); | |
148 | ||
93ac19cd | 149 | $this->contactDelete($contactId); |
150 | $this->contactDelete($targetContactId); | |
6a488035 TO |
151 | } |
152 | ||
153 | /** | |
fe482240 EM |
154 | * Test case for deleteActivity() method. |
155 | * | |
6a488035 TO |
156 | * deleteActivity($params) method deletes activity for given params. |
157 | */ | |
00be9182 | 158 | public function testDeleteActivity() { |
f7969dcf | 159 | $contactId = $this->individualCreate(); |
6a488035 TO |
160 | $params = array( |
161 | 'first_name' => 'liz', | |
162 | 'last_name' => 'hurleey', | |
163 | ); | |
f7969dcf | 164 | $targetContactId = $this->individualCreate($params); |
6a488035 TO |
165 | |
166 | $params = array( | |
167 | 'source_contact_id' => $contactId, | |
168 | 'source_record_id' => $contactId, | |
169 | 'subject' => 'Scheduling Meeting', | |
170 | 'activity_type_id' => 2, | |
171 | 'target_contact_id' => array($targetContactId), | |
172 | 'activity_date_time' => date('Ymd'), | |
173 | ); | |
174 | ||
175 | CRM_Activity_BAO_Activity::create($params); | |
176 | ||
cbcedb39 | 177 | $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', |
6a488035 TO |
178 | 'subject', 'Database check for created activity.' |
179 | ); | |
180 | ||
cbcedb39 | 181 | $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, |
f1c7b1f0 | 182 | 'id', 'contact_id', |
6a488035 TO |
183 | 'Database check for created activity target.' |
184 | ); | |
185 | $params = array( | |
186 | 'source_contact_id' => $contactId, | |
187 | 'source_record_id' => $contactId, | |
188 | 'subject' => 'Scheduling Meeting', | |
189 | 'activity_type_id' => 2, | |
190 | ); | |
191 | ||
93ac19cd | 192 | CRM_Activity_BAO_Activity::deleteActivity($params); |
6a488035 | 193 | |
93ac19cd | 194 | $this->assertDBNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', |
6a488035 TO |
195 | 'subject', 'Database check for deleted activity.' |
196 | ); | |
93ac19cd | 197 | $this->contactDelete($contactId); |
198 | $this->contactDelete($targetContactId); | |
6a488035 TO |
199 | } |
200 | ||
201 | /** | |
fe482240 EM |
202 | * Test case for deleteActivityTarget() method. |
203 | * | |
6a488035 TO |
204 | * deleteActivityTarget($activityId) method deletes activity target for given activity id. |
205 | */ | |
00be9182 | 206 | public function testDeleteActivityTarget() { |
f7969dcf | 207 | $contactId = $this->individualCreate(); |
6a488035 TO |
208 | $params = array( |
209 | 'first_name' => 'liz', | |
210 | 'last_name' => 'hurleey', | |
211 | ); | |
f7969dcf | 212 | $targetContactId = $this->individualCreate($params); |
6a488035 TO |
213 | |
214 | $params = array( | |
215 | 'source_contact_id' => $contactId, | |
216 | 'subject' => 'Scheduling Meeting', | |
217 | 'activity_type_id' => 2, | |
218 | 'target_contact_id' => array($targetContactId), | |
219 | 'activity_date_time' => date('Ymd'), | |
220 | ); | |
221 | ||
222 | CRM_Activity_BAO_Activity::create($params); | |
223 | ||
224 | $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', | |
225 | 'subject', 'Database check for created activity.' | |
226 | ); | |
227 | ||
cbcedb39 | 228 | $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, |
f1c7b1f0 | 229 | 'id', 'contact_id', |
6a488035 TO |
230 | 'Database check for created activity target.' |
231 | ); | |
232 | ||
2517d079 | 233 | CRM_Activity_BAO_Activity::deleteActivityContact($activityId, 3); |
6a488035 | 234 | |
f1c7b1f0 DL |
235 | $this->assertDBNull('CRM_Activity_DAO_ActivityContact', $targetContactId, 'id', |
236 | 'contact_id', 'Database check for deleted activity target.' | |
6a488035 TO |
237 | ); |
238 | ||
93ac19cd | 239 | $this->contactDelete($contactId); |
240 | $this->contactDelete($targetContactId); | |
6a488035 TO |
241 | } |
242 | ||
243 | /** | |
fe482240 EM |
244 | * Test case for deleteActivityAssignment() method. |
245 | * | |
6a488035 TO |
246 | * deleteActivityAssignment($activityId) method deletes activity assignment for given activity id. |
247 | */ | |
00be9182 | 248 | public function testDeleteActivityAssignment() { |
f7969dcf | 249 | $contactId = $this->individualCreate(); |
6a488035 TO |
250 | $params = array( |
251 | 'first_name' => 'liz', | |
252 | 'last_name' => 'hurleey', | |
253 | ); | |
f7969dcf | 254 | $assigneeContactId = $this->individualCreate($params); |
6a488035 TO |
255 | |
256 | $params = array( | |
257 | 'source_contact_id' => $contactId, | |
258 | 'subject' => 'Scheduling Meeting', | |
259 | 'activity_type_id' => 2, | |
260 | 'assignee_contact_id' => array($assigneeContactId), | |
261 | 'activity_date_time' => date('Ymd'), | |
262 | ); | |
263 | ||
264 | CRM_Activity_BAO_Activity::create($params); | |
265 | ||
266 | $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', | |
267 | 'subject', 'Database check for created activity.' | |
268 | ); | |
269 | ||
cbcedb39 | 270 | $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', |
f1c7b1f0 | 271 | $assigneeContactId, 'id', 'contact_id', |
6a488035 TO |
272 | 'Database check for created activity assignment.' |
273 | ); | |
274 | ||
2517d079 | 275 | CRM_Activity_BAO_Activity::deleteActivityContact($activityId, 1); |
6a488035 | 276 | |
f1c7b1f0 DL |
277 | $this->assertDBNull('CRM_Activity_DAO_ActivityContact', $assigneeContactId, 'id', |
278 | 'contact_id', 'Database check for deleted activity assignment.' | |
6a488035 TO |
279 | ); |
280 | ||
93ac19cd | 281 | $this->contactDelete($contactId); |
282 | $this->contactDelete($assigneeContactId); | |
6a488035 TO |
283 | } |
284 | ||
285 | /** | |
5161bb0c | 286 | * Test getActivities BAO method for getting count. |
6a488035 | 287 | */ |
cbcedb39 | 288 | public function testGetActivitiesCountForAdminDashboard() { |
75d842f8 | 289 | $this->setUpForActivityDashboardTests(); |
6ab43e1b | 290 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($this->_params); |
291 | $this->assertEquals(8, $activityCount); | |
292 | $activityCount = CRM_Activity_BAO_Activity::getActivitiesCount($this->_params); | |
75d842f8 | 293 | $this->assertEquals(8, $activityCount); |
6a488035 TO |
294 | } |
295 | ||
296 | /** | |
5161bb0c | 297 | * Test getActivities BAO method for getting count |
6a488035 | 298 | */ |
00be9182 | 299 | public function testGetActivitiesCountforNonAdminDashboard() { |
6a488035 TO |
300 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
301 | $op->execute($this->_dbconn, | |
bbfd46a5 | 302 | $this->createFlatXMLDataSet( |
6a488035 TO |
303 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
304 | ) | |
305 | ); | |
306 | ||
307 | $params = array( | |
308 | 'contact_id' => 9, | |
309 | 'admin' => FALSE, | |
310 | 'caseId' => NULL, | |
311 | 'context' => 'home', | |
312 | 'activity_type_id' => NULL, | |
58954b87 | 313 | 'activity_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Scheduled'), // for dashlet the Scheduled status is set by default |
6a488035 TO |
314 | 'offset' => 0, |
315 | 'rowCount' => 0, | |
316 | 'sort' => NULL, | |
317 | ); | |
318 | ||
6ab43e1b | 319 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($params); |
6a488035 TO |
320 | |
321 | //since we are loading activities from dataset, we know total number of activities for this contact | |
322 | // 5 activities ( 2 scheduled, 3 Completed ), note that dashboard shows only scheduled activities | |
323 | $count = 2; | |
a15773db | 324 | $this->assertEquals($count, $activityCount); |
6ab43e1b | 325 | $this->assertEquals(2, CRM_Activity_BAO_Activity::getActivitiesCount($params)); |
6a488035 TO |
326 | } |
327 | ||
328 | /** | |
5161bb0c | 329 | * Test getActivities BAO method for getting count |
6a488035 | 330 | */ |
00be9182 | 331 | public function testGetActivitiesCountforContactSummary() { |
6a488035 TO |
332 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
333 | $op->execute($this->_dbconn, | |
bbfd46a5 | 334 | $this->createFlatXMLDataSet( |
6a488035 TO |
335 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
336 | ) | |
337 | ); | |
338 | ||
339 | $params = array( | |
340 | 'contact_id' => 9, | |
341 | 'admin' => FALSE, | |
342 | 'caseId' => NULL, | |
343 | 'context' => 'activity', | |
344 | 'activity_type_id' => NULL, | |
345 | 'offset' => 0, | |
346 | 'rowCount' => 0, | |
347 | 'sort' => NULL, | |
348 | ); | |
6ab43e1b | 349 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($params); |
6a488035 TO |
350 | |
351 | //since we are loading activities from dataset, we know total number of activities for this contact | |
352 | // 5 activities, Contact Summary should show all activities | |
353 | $count = 5; | |
a15773db | 354 | $this->assertEquals($count, $activityCount); |
6ab43e1b | 355 | $this->assertEquals(5, CRM_Activity_BAO_Activity::getActivitiesCount($params)); |
6a488035 TO |
356 | } |
357 | ||
23289ddd | 358 | /** |
359 | * CRM-18706 - Test Include/Exclude Activity Filters | |
360 | */ | |
361 | public function testActivityFilters() { | |
362 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); | |
363 | $op->execute($this->_dbconn, | |
364 | $this->createFlatXMLDataSet( | |
365 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' | |
366 | ) | |
367 | ); | |
c3a9ccbb JP |
368 | Civi::settings()->set('preserve_activity_tab_filter', 1); |
369 | $this->createLoggedInUser(); | |
23289ddd | 370 | |
371 | global $_GET; | |
372 | $_GET = array( | |
373 | 'cid' => 9, | |
374 | 'context' => 'activity', | |
375 | 'activity_type_id' => 1, | |
376 | 'is_unit_test' => 1, | |
377 | ); | |
c3a9ccbb JP |
378 | $expectedFilters = array( |
379 | 'activity_type_filter_id' => 1, | |
380 | 'activity_type_exclude_filter_id' => '', | |
381 | ); | |
23289ddd | 382 | |
c3a9ccbb JP |
383 | list($activities, $activityFilter) = CRM_Activity_Page_AJAX::getContactActivity(); |
384 | //Assert whether filters are correctly set. | |
385 | $this->checkArrayEquals($expectedFilters, $activityFilter); | |
23289ddd | 386 | // This should include activities of type Meeting only. |
cbcedb39 | 387 | foreach ($activities['data'] as $value) { |
8c99c0bb | 388 | $this->assertContains('Meeting', $value['activity_type']); |
23289ddd | 389 | } |
390 | unset($_GET['activity_type_id']); | |
c3a9ccbb | 391 | $expectedFilters['activity_type_filter_id'] = ''; |
23289ddd | 392 | |
c3a9ccbb JP |
393 | $_GET['activity_type_exclude_id'] = $expectedFilters['activity_type_exclude_filter_id'] = 1; |
394 | list($activities, $activityFilter) = CRM_Activity_Page_AJAX::getContactActivity(); | |
395 | $this->checkArrayEquals($expectedFilters, $activityFilter); | |
23289ddd | 396 | // None of the activities should be of type Meeting. |
cbcedb39 | 397 | foreach ($activities['data'] as $value) { |
c3a9ccbb | 398 | $this->assertNotContains('Meeting', $value['activity_type']); |
23289ddd | 399 | } |
400 | } | |
401 | ||
6a488035 | 402 | /** |
5161bb0c | 403 | * Test getActivities BAO method for getting count |
6a488035 | 404 | */ |
00be9182 | 405 | public function testGetActivitiesCountforContactSummaryWithNoActivities() { |
6a488035 TO |
406 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
407 | $op->execute($this->_dbconn, | |
bbfd46a5 | 408 | $this->createFlatXMLDataSet( |
6a488035 TO |
409 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
410 | ) | |
411 | ); | |
412 | ||
413 | $params = array( | |
414 | 'contact_id' => 17, | |
415 | 'admin' => FALSE, | |
416 | 'caseId' => NULL, | |
417 | 'context' => 'home', | |
418 | 'activity_type_id' => NULL, | |
419 | 'offset' => 0, | |
420 | 'rowCount' => 0, | |
421 | 'sort' => NULL, | |
422 | ); | |
6ab43e1b | 423 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($params); |
6a488035 TO |
424 | |
425 | //since we are loading activities from dataset, we know total number of activities for this contact | |
426 | // this contact does not have any activity | |
a15773db | 427 | $this->assertEquals(0, $activityCount); |
6ab43e1b | 428 | $this->assertEquals(0, CRM_Activity_BAO_Activity::getActivitiesCount($params)); |
6a488035 TO |
429 | } |
430 | ||
431 | /** | |
eceb18cc | 432 | * Test getActivities BAO method. |
6a488035 | 433 | */ |
cbcedb39 | 434 | public function testGetActivitiesForAdminDashboard() { |
75d842f8 | 435 | $this->setUpForActivityDashboardTests(); |
6ab43e1b | 436 | $activitiesDeprecatedFn = CRM_Activity_BAO_Activity::deprecatedGetActivities($this->_params); |
437 | $activitiesNew = CRM_Activity_BAO_Activity::getActivities($this->_params); | |
438 | // $this->assertEquals($activities, $activitiesDeprecatedFn); | |
6a488035 TO |
439 | |
440 | //since we are loading activities from dataset, we know total number of activities | |
5161bb0c | 441 | // with no contact ID and there should be 8 schedule activities shown on dashboard |
6a488035 | 442 | $count = 8; |
6ab43e1b | 443 | foreach (array($activitiesNew, $activitiesDeprecatedFn) as $activities) { |
444 | $this->assertEquals($count, count($activities)); | |
6a488035 | 445 | |
6ab43e1b | 446 | foreach ($activities as $key => $value) { |
447 | $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); | |
448 | $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.'); | |
449 | $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.'); | |
450 | } | |
6a488035 TO |
451 | } |
452 | } | |
453 | ||
75d842f8 | 454 | /** |
455 | * Test getActivities BAO method. | |
456 | */ | |
457 | public function testGetActivitiesForAdminDashboardNoViewContacts() { | |
458 | CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM'); | |
459 | $this->setUpForActivityDashboardTests(); | |
6ab43e1b | 460 | $activitiesDeprecated = CRM_Activity_BAO_Activity::deprecatedGetActivities($this->_params); |
461 | foreach (array($activitiesDeprecated, CRM_Activity_BAO_Activity::getActivities($this->_params)) as $activities) { | |
462 | // Skipped until we get back to the upgraded version properly. | |
463 | //$this->assertEquals(0, count($activities)); | |
464 | } | |
26583d3e | 465 | } |
466 | ||
467 | /** | |
468 | * Test getActivities BAO method. | |
469 | */ | |
470 | public function testGetActivitiesForAdminDashboardAclLimitedViewContacts() { | |
471 | CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM'); | |
472 | $this->allowedContacts = array(1, 3, 4, 5); | |
473 | $this->hookClass->setHook('civicrm_aclWhereClause', array($this, 'aclWhereMultipleContacts')); | |
474 | $this->setUpForActivityDashboardTests(); | |
6ab43e1b | 475 | $activitiesDeprecated = CRM_Activity_BAO_Activity::deprecatedGetActivities($this->_params); |
476 | foreach (array($activitiesDeprecated, CRM_Activity_BAO_Activity::getActivities($this->_params)) as $activities) { | |
477 | //$this->assertEquals(1, count($activities)); | |
478 | } | |
75d842f8 | 479 | |
480 | } | |
481 | ||
6a488035 | 482 | /** |
eceb18cc | 483 | * Test getActivities BAO method. |
6a488035 | 484 | */ |
00be9182 | 485 | public function testGetActivitiesforNonAdminDashboard() { |
6a488035 TO |
486 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
487 | $op->execute($this->_dbconn, | |
bbfd46a5 | 488 | $this->createFlatXMLDataSet( |
6a488035 TO |
489 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
490 | ) | |
491 | ); | |
492 | ||
493 | $contactID = 9; | |
494 | $params = array( | |
495 | 'contact_id' => $contactID, | |
496 | 'admin' => FALSE, | |
497 | 'caseId' => NULL, | |
498 | 'context' => 'home', | |
499 | 'activity_type_id' => NULL, | |
58954b87 | 500 | 'activity_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Scheduled'), // for dashlet the Scheduled status is set by default |
6a488035 TO |
501 | 'offset' => 0, |
502 | 'rowCount' => 0, | |
503 | 'sort' => NULL, | |
504 | ); | |
6ab43e1b | 505 | $activitiesDep = CRM_Activity_BAO_Activity::deprecatedGetActivities($params); |
6a488035 | 506 | |
6ab43e1b | 507 | foreach (array($activitiesDep, CRM_Activity_BAO_Activity::getActivities($params)) as $activities) { |
508 | //since we are loading activities from dataset, we know total number of activities for this contact | |
509 | // 5 activities ( 2 scheduled, 3 Completed ), note that dashboard shows only scheduled activities | |
510 | $count = 2; | |
511 | $this->assertEquals($count, count($activities)); | |
6a488035 | 512 | |
6ab43e1b | 513 | foreach ($activities as $key => $value) { |
514 | $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); | |
515 | $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.'); | |
516 | $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.'); | |
6a488035 | 517 | |
6ab43e1b | 518 | if ($key == 3) { |
519 | $this->assertArrayHasKey($contactID, $value['target_contact_name']); | |
520 | } | |
521 | elseif ($key == 4) { | |
522 | $this->assertArrayHasKey($contactID, $value['assignee_contact_name']); | |
523 | } | |
6a488035 TO |
524 | } |
525 | } | |
526 | } | |
527 | ||
36d2f4d5 | 528 | /** |
529 | * Test target contact count. | |
530 | */ | |
531 | public function testTargetCountforContactSummary() { | |
532 | $targetCount = 5; | |
533 | $contactId = $this->individualCreate(); | |
cbcedb39 | 534 | $targetContactIDs = array(); |
36d2f4d5 | 535 | for ($i = 0; $i < $targetCount; $i++) { |
536 | $targetContactIDs[] = $this->individualCreate(array(), $i); | |
537 | } | |
cbcedb39 | 538 | // Create activities with 5 target contacts. |
36d2f4d5 | 539 | $activityParams = array( |
540 | 'source_contact_id' => $contactId, | |
541 | 'target_contact_id' => $targetContactIDs, | |
542 | ); | |
543 | $this->activityCreate($activityParams); | |
544 | ||
545 | $params = array( | |
546 | 'contact_id' => $contactId, | |
547 | 'context' => 'activity', | |
548 | ); | |
6ab43e1b | 549 | $activitiesDep = CRM_Activity_BAO_Activity::deprecatedGetActivities($params); |
550 | foreach (array($activitiesDep, CRM_Activity_BAO_Activity::getActivities($params)) as $activities) { | |
551 | //verify target count | |
552 | $this->assertEquals($targetCount, $activities[1]['target_contact_counter']); | |
553 | } | |
36d2f4d5 | 554 | |
36d2f4d5 | 555 | } |
556 | ||
6a488035 | 557 | /** |
eceb18cc | 558 | * Test getActivities BAO method. |
6a488035 | 559 | */ |
00be9182 | 560 | public function testGetActivitiesforContactSummary() { |
6a488035 TO |
561 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
562 | $op->execute($this->_dbconn, | |
bbfd46a5 | 563 | $this->createFlatXMLDataSet( |
6a488035 TO |
564 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
565 | ) | |
566 | ); | |
567 | ||
568 | $contactID = 9; | |
569 | $params = array( | |
570 | 'contact_id' => $contactID, | |
571 | 'admin' => FALSE, | |
572 | 'caseId' => NULL, | |
573 | 'context' => 'activity', | |
574 | 'activity_type_id' => NULL, | |
575 | 'offset' => 0, | |
576 | 'rowCount' => 0, | |
577 | 'sort' => NULL, | |
578 | ); | |
6ab43e1b | 579 | $activitiesDep = CRM_Activity_BAO_Activity::deprecatedGetActivities($params); |
6a488035 TO |
580 | |
581 | //since we are loading activities from dataset, we know total number of activities for this contact | |
582 | // 5 activities, Contact Summary should show all activities | |
583 | $count = 5; | |
6ab43e1b | 584 | foreach (array($activitiesDep, CRM_Activity_BAO_Activity::getActivities($params)) as $activities) { |
6a488035 | 585 | |
6ab43e1b | 586 | $this->assertEquals($count, count($activities)); |
6a488035 | 587 | |
6ab43e1b | 588 | foreach ($activities as $key => $value) { |
589 | $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); | |
6a488035 | 590 | |
6ab43e1b | 591 | if ($key > 8) { |
592 | $this->assertEquals($value['status_id'], 2, 'Verify all activities are scheduled.'); | |
593 | } | |
594 | else { | |
595 | $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.'); | |
596 | } | |
6a488035 | 597 | |
6ab43e1b | 598 | if ($key > 8) { |
599 | $this->assertEquals($value['activity_type_id'], 1, 'Verify activity type is correct.'); | |
600 | } | |
601 | else { | |
602 | $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.'); | |
603 | } | |
604 | ||
605 | if ($key == 3) { | |
606 | $this->assertArrayHasKey($contactID, $value['target_contact_name']); | |
607 | } | |
608 | elseif ($key == 4) { | |
609 | $this->assertArrayHasKey($contactID, $value['assignee_contact_name']); | |
610 | } | |
6a488035 TO |
611 | } |
612 | } | |
613 | } | |
614 | ||
615 | /** | |
eceb18cc | 616 | * Test getActivities BAO method. |
6a488035 | 617 | */ |
5161bb0c | 618 | public function testGetActivitiesforContactSummaryWithActivities() { |
6a488035 TO |
619 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); |
620 | $op->execute($this->_dbconn, | |
bbfd46a5 | 621 | $this->createFlatXMLDataSet( |
6a488035 TO |
622 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' |
623 | ) | |
624 | ); | |
625 | ||
6ab43e1b | 626 | // parameters for different test cases, check each array key for the specific test-case |
5161bb0c | 627 | $testCases = array( |
628 | 'with-no-activity' => array( | |
629 | 'params' => array( | |
630 | 'contact_id' => 17, | |
631 | 'admin' => FALSE, | |
632 | 'caseId' => NULL, | |
633 | 'context' => 'home', | |
634 | 'activity_type_id' => NULL, | |
635 | 'offset' => 0, | |
636 | 'rowCount' => 0, | |
637 | 'sort' => NULL, | |
638 | ), | |
639 | ), | |
640 | 'with-activity' => array( | |
641 | 'params' => array( | |
642 | 'contact_id' => 1, | |
643 | 'admin' => FALSE, | |
644 | 'caseId' => NULL, | |
645 | 'context' => 'home', | |
646 | 'activity_type_id' => NULL, | |
647 | 'offset' => 0, | |
648 | 'rowCount' => 0, | |
649 | 'sort' => NULL, | |
650 | ), | |
651 | ), | |
652 | 'with-activity_type' => array( | |
653 | 'params' => array( | |
654 | 'contact_id' => 3, | |
655 | 'admin' => FALSE, | |
656 | 'caseId' => NULL, | |
657 | 'context' => 'home', | |
658 | 'activity_type_id' => 2, | |
659 | 'offset' => 0, | |
660 | 'rowCount' => 0, | |
661 | 'sort' => NULL, | |
662 | ), | |
663 | ), | |
664 | 'exclude-all-activity_type' => array( | |
665 | 'params' => array( | |
666 | 'contact_id' => 3, | |
667 | 'admin' => FALSE, | |
668 | 'caseId' => NULL, | |
669 | 'context' => 'home', | |
670 | 'activity_type_exclude_id' => array(1, 2), | |
671 | 'offset' => 0, | |
672 | 'rowCount' => 0, | |
673 | 'sort' => NULL, | |
674 | ), | |
675 | ), | |
676 | 'sort-by-subject' => array( | |
677 | 'params' => array( | |
678 | 'contact_id' => 1, | |
679 | 'admin' => FALSE, | |
680 | 'caseId' => NULL, | |
681 | 'context' => 'home', | |
682 | 'activity_type_id' => NULL, | |
683 | 'offset' => 0, | |
684 | 'rowCount' => 0, | |
685 | 'sort' => 'subject DESC', | |
686 | ), | |
687 | ), | |
688 | ); | |
689 | ||
690 | foreach ($testCases as $caseName => $testCase) { | |
6ab43e1b | 691 | $activitiesDep = CRM_Activity_BAO_Activity::deprecatedGetActivities($testCase['params']); |
692 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($testCase['params']); | |
693 | $activitiesNew = CRM_Activity_BAO_Activity::getActivities($testCase['params']); | |
694 | ||
695 | foreach (array($activitiesDep, $activitiesNew) as $activities) { | |
696 | //$this->assertEquals($activityCount, CRM_Activity_BAO_Activity::getActivitiesCount($testCase['params'])); | |
697 | if ($caseName == 'with-no-activity') { | |
698 | $this->assertEquals(0, count($activities)); | |
699 | $this->assertEquals(0, $activityCount); | |
700 | } | |
701 | elseif ($caseName == 'with-activity') { | |
702 | // contact id 1 is assigned as source, target and assignee for activity id 1, 7 and 8 respectively | |
703 | $this->assertEquals(3, count($activities)); | |
704 | $this->assertEquals(3, $activityCount); | |
705 | $this->assertEquals(1, $activities[1]['source_contact_id']); | |
706 | // @todo - this is a discrepancy between old & new - review. | |
707 | //$this->assertEquals(TRUE, array_key_exists(1, $activities[7]['target_contact_name'])); | |
708 | $this->assertEquals(TRUE, array_key_exists(1, $activities[8]['assignee_contact_name'])); | |
709 | } | |
710 | elseif ($caseName == 'with-activity_type') { | |
711 | // contact id 3 for activity type 2 is assigned as assignee, source and target for | |
712 | // activity id 1, 3 and 8 respectively | |
713 | $this->assertEquals(3, count($activities)); | |
714 | $this->assertEquals(3, $activityCount); | |
715 | // ensure activity type id is 2 | |
716 | $this->assertEquals(2, $activities[1]['activity_type_id']); | |
717 | $this->assertEquals(3, $activities[3]['source_contact_id']); | |
718 | // @todo review inconsistency between 2 versions. | |
719 | // $this->assertEquals(TRUE, array_key_exists(3, $activities[8]['target_contact_name'])); | |
720 | $this->assertEquals(TRUE, array_key_exists(3, $activities[1]['assignee_contact_name'])); | |
721 | } | |
722 | if ($caseName == 'exclude-all-activity_type') { | |
723 | $this->assertEquals(0, count($activities)); | |
724 | $this->assertEquals(0, $activityCount); | |
725 | } | |
726 | if ($caseName == 'sort-by-subject') { | |
727 | $this->assertEquals(3, count($activities)); | |
728 | $this->assertEquals(3, $activityCount); | |
729 | // activities should be order by 'subject DESC' | |
730 | $subjectOrder = array( | |
731 | 'subject 8', | |
732 | 'subject 7', | |
733 | 'subject 1', | |
734 | ); | |
735 | $count = 0; | |
736 | foreach ($activities as $activity) { | |
737 | $this->assertEquals($subjectOrder[$count], $activity['subject']); | |
738 | $count++; | |
739 | } | |
5161bb0c | 740 | } |
741 | } | |
742 | } | |
6a488035 | 743 | } |
96025800 | 744 | |
49d4d222 | 745 | /** |
746 | * CRM-20793 : Test getActivities by using activity date and status filter | |
747 | */ | |
748 | public function testbyActivityDateAndStatus() { | |
749 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); | |
750 | $op->execute($this->_dbconn, | |
751 | $this->createFlatXMLDataSet( | |
752 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' | |
753 | ) | |
754 | ); | |
755 | ||
756 | // activity IDs catagorised by date | |
757 | $lastWeekActivities = array(1, 2, 3); | |
758 | $todayActivities = array(4, 5, 6, 7); | |
a6d192c8 | 759 | $lastTwoMonthsActivities = array(8, 9, 10, 11); |
daff7f26 | 760 | $lastOrNextYearActivities = array(12, 13, 14, 15, 16); |
49d4d222 | 761 | |
762 | // date values later used to set activity date value | |
763 | $lastWeekDate = date('YmdHis', strtotime('1 week ago')); | |
764 | $today = date('YmdHis'); | |
a6d192c8 | 765 | $lastTwoMonthAgoDate = date('YmdHis', strtotime('2 months ago')); |
daff7f26 | 766 | // if current month is Jan then choose next year date otherwise the search result will include |
767 | // the previous week and last two months activities which are still in previous year and hence leads to improper result | |
768 | $lastOrNextYearDate = (date('M') == 'Jan') ? date('YmdHis', strtotime('+1 year')) : date('YmdHis', strtotime('1 year ago')); | |
49d4d222 | 769 | for ($i = 1; $i <= 16; $i++) { |
770 | if (in_array($i, $lastWeekActivities)) { | |
771 | $date = $lastWeekDate; | |
772 | } | |
a6d192c8 | 773 | elseif (in_array($i, $lastTwoMonthsActivities)) { |
774 | $date = $lastTwoMonthAgoDate; | |
49d4d222 | 775 | } |
daff7f26 | 776 | elseif (in_array($i, $lastOrNextYearActivities)) { |
777 | $date = $lastOrNextYearDate; | |
49d4d222 | 778 | } |
779 | elseif (in_array($i, $todayActivities)) { | |
780 | $date = $today; | |
781 | } | |
782 | $this->callAPISuccess('Activity', 'create', array( | |
783 | 'id' => $i, | |
784 | 'activity_date_time' => $date, | |
785 | )); | |
786 | } | |
787 | ||
788 | // parameters for different test cases, check each array key for the specific test-case | |
789 | $testCases = array( | |
790 | 'todays-activity' => array( | |
791 | 'params' => array( | |
792 | 'contact_id' => 1, | |
793 | 'admin' => TRUE, | |
794 | 'caseId' => NULL, | |
795 | 'context' => 'activity', | |
796 | 'activity_date_relative' => 'this.day', | |
797 | 'activity_type_id' => NULL, | |
798 | 'offset' => 0, | |
799 | 'rowCount' => 0, | |
800 | 'sort' => NULL, | |
801 | ), | |
802 | ), | |
803 | 'todays-activity-filtered-by-range' => array( | |
804 | 'params' => array( | |
805 | 'contact_id' => 1, | |
806 | 'admin' => TRUE, | |
807 | 'caseId' => NULL, | |
808 | 'context' => 'activity', | |
809 | 'activity_date_low' => date('Y/m/d', strtotime('yesterday')), | |
810 | 'activity_date_high' => date('Y/m/d'), | |
811 | 'activity_type_id' => NULL, | |
812 | 'offset' => 0, | |
813 | 'rowCount' => 0, | |
814 | 'sort' => NULL, | |
815 | ), | |
816 | ), | |
817 | 'last-week-activity' => array( | |
818 | 'params' => array( | |
819 | 'contact_id' => 1, | |
820 | 'admin' => TRUE, | |
821 | 'caseId' => NULL, | |
822 | 'context' => 'activity', | |
823 | 'activity_date_relative' => 'previous.week', | |
824 | 'activity_type_id' => NULL, | |
825 | 'offset' => 0, | |
826 | 'rowCount' => 0, | |
827 | 'sort' => NULL, | |
828 | ), | |
829 | ), | |
a6d192c8 | 830 | 'this-quarter-activity' => array( |
49d4d222 | 831 | 'params' => array( |
832 | 'contact_id' => 1, | |
833 | 'admin' => TRUE, | |
834 | 'caseId' => NULL, | |
835 | 'context' => 'activity', | |
a6d192c8 | 836 | 'activity_date_relative' => 'this.quarter', |
49d4d222 | 837 | 'activity_type_id' => NULL, |
838 | 'offset' => 0, | |
839 | 'rowCount' => 0, | |
840 | 'sort' => NULL, | |
841 | ), | |
842 | ), | |
daff7f26 | 843 | 'last-or-next-year-activity' => array( |
49d4d222 | 844 | 'params' => array( |
845 | 'contact_id' => 1, | |
846 | 'admin' => TRUE, | |
847 | 'caseId' => NULL, | |
848 | 'context' => 'activity', | |
daff7f26 | 849 | 'activity_date_relative' => (date('M') == 'Jan') ? 'next.year' : 'previous.year', |
49d4d222 | 850 | 'activity_type_id' => NULL, |
851 | 'offset' => 0, | |
852 | 'rowCount' => 0, | |
853 | 'sort' => NULL, | |
854 | ), | |
855 | ), | |
856 | 'activity-of-all-statuses' => array( | |
857 | 'params' => array( | |
858 | 'contact_id' => 1, | |
859 | 'admin' => TRUE, | |
860 | 'caseId' => NULL, | |
861 | 'context' => 'activity', | |
862 | 'activity_status_id' => '1,2', | |
863 | 'activity_type_id' => NULL, | |
864 | 'offset' => 0, | |
865 | 'rowCount' => 0, | |
866 | 'sort' => NULL, | |
867 | ), | |
868 | ), | |
869 | ); | |
870 | ||
871 | foreach ($testCases as $caseName => $testCase) { | |
872 | $activitiesDep = CRM_Activity_BAO_Activity::deprecatedGetActivities($testCase['params']); | |
873 | $activityCount = CRM_Activity_BAO_Activity::deprecatedGetActivitiesCount($testCase['params']); | |
874 | asort($activitiesDep); | |
875 | $activityIDs = array_keys($activitiesDep); | |
876 | ||
877 | if ($caseName == 'todays-activity' || $caseName == 'todays-activity-filtered-by-range') { | |
878 | $this->assertEquals(count($todayActivities), $activityCount); | |
879 | $this->assertEquals(count($todayActivities), count($activitiesDep)); | |
880 | $this->checkArrayEquals($todayActivities, $activityIDs); | |
881 | } | |
882 | elseif ($caseName == 'last-week-activity') { | |
883 | $this->assertEquals(count($lastWeekActivities), $activityCount); | |
884 | $this->assertEquals(count($lastWeekActivities), count($activitiesDep)); | |
885 | $this->checkArrayEquals($lastWeekActivities, $activityIDs); | |
886 | } | |
a6d192c8 | 887 | elseif ($caseName == 'lhis-quarter-activity') { |
888 | $this->assertEquals(count($lastTwoMonthsActivities), $activityCount); | |
889 | $this->assertEquals(count($lastTwoMonthsActivities), count($activitiesDep)); | |
890 | $this->checkArrayEquals($lastTwoMonthsActivities, $activityIDs); | |
49d4d222 | 891 | } |
daff7f26 | 892 | elseif ($caseName == 'last-or-next-year-activity') { |
893 | $this->assertEquals(count($lastOrNextYearActivities), $activityCount); | |
894 | $this->assertEquals(count($lastOrNextYearActivities), count($activitiesDep)); | |
895 | $this->checkArrayEquals($lastOrNextYearActivities, $activityIDs); | |
49d4d222 | 896 | } |
897 | elseif ($caseName == 'activity-of-all-statuses') { | |
898 | $this->assertEquals(16, $activityCount); | |
899 | $this->assertEquals(16, count($activitiesDep)); | |
900 | } | |
901 | } | |
902 | } | |
903 | ||
3cf1fae9 | 904 | /** |
905 | * CRM-20308: Test from email address when a 'copy of Activity' event occur | |
906 | */ | |
907 | public function testEmailAddressOfActivityCopy() { | |
908 | // Case 1: assert the 'From' Email Address of source Actvity Contact ID | |
909 | // create activity with source contact ID which has email address | |
910 | $assigneeContactId = $this->individualCreate(); | |
911 | $sourceContactParams = array( | |
912 | 'first_name' => 'liz', | |
913 | 'last_name' => 'hurleey', | |
914 | 'email' => substr(sha1(rand()), 0, 7) . '@testemail.com', | |
915 | ); | |
916 | $sourceContactID = $this->individualCreate($sourceContactParams); | |
917 | $sourceDisplayName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $sourceContactID, 'display_name'); | |
918 | ||
919 | // create an activity using API | |
920 | $params = array( | |
921 | 'source_contact_id' => $sourceContactID, | |
922 | 'subject' => 'Scheduling Meeting ' . substr(sha1(rand()), 0, 4), | |
923 | 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Meeting'), | |
924 | 'assignee_contact_id' => array($assigneeContactId), | |
925 | 'activity_date_time' => date('Ymd'), | |
926 | ); | |
927 | $activity = $this->callAPISuccess('Activity', 'create', $params); | |
928 | ||
929 | // Check that from address is in "Source-Display-Name <source-email>" | |
930 | $formAddress = CRM_Case_BAO_Case::getReceiptFrom($activity['id']); | |
931 | $expectedFromAddress = sprintf("%s <%s>", $sourceDisplayName, $sourceContactParams['email']); | |
932 | $this->assertEquals($expectedFromAddress, $formAddress); | |
3cf1fae9 | 933 | |
934 | // Case 2: System Default From Address | |
935 | // but first erase the email address of existing source contact ID | |
936 | $withoutEmailParams = array( | |
937 | 'email' => '', | |
938 | ); | |
939 | $sourceContactID = $this->individualCreate($withoutEmailParams); | |
940 | $params = array( | |
941 | 'source_contact_id' => $sourceContactID, | |
942 | 'subject' => 'Scheduling Meeting ' . substr(sha1(rand()), 0, 4), | |
943 | 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Meeting'), | |
944 | 'activity_date_time' => date('Ymd'), | |
945 | ); | |
946 | $activity = $this->callAPISuccess('Activity', 'create', $params); | |
947 | // fetch domain info | |
948 | $domainInfo = $this->callAPISuccess('Domain', 'getsingle', array('id' => CRM_Core_Config::domainID())); | |
949 | ||
950 | $formAddress = CRM_Case_BAO_Case::getReceiptFrom($activity['id']); | |
951 | if (!empty($domainInfo['from_email'])) { | |
952 | $expectedFromAddress = sprintf("%s <%s>", $domainInfo['from_name'], $domainInfo['from_email']); | |
953 | } | |
954 | // Case 3: fetch default Organization Contact email address | |
955 | elseif (!empty($domainInfo['domain_email'])) { | |
956 | $expectedFromAddress = sprintf("%s <%s>", $domainInfo['name'], $domainInfo['domain_email']); | |
957 | } | |
e88906fc | 958 | $this->assertEquals($expectedFromAddress, $formAddress); |
3cf1fae9 | 959 | |
960 | // TODO: Case 4 about checking the $formAddress on basis of logged contact ID respectively needs, | |
961 | // to change the domain setting, which isn't straight forward in test environment | |
962 | } | |
963 | ||
75d842f8 | 964 | /** |
965 | * Set up for testing activity queries. | |
966 | */ | |
967 | protected function setUpForActivityDashboardTests() { | |
968 | $op = new PHPUnit_Extensions_Database_Operation_Insert(); | |
969 | $op->execute($this->_dbconn, | |
970 | $this->createFlatXMLDataSet( | |
971 | dirname(__FILE__) . '/activities_for_dashboard_count.xml' | |
972 | ) | |
973 | ); | |
974 | ||
975 | $this->_params = array( | |
976 | 'contact_id' => NULL, | |
977 | 'admin' => TRUE, | |
978 | 'caseId' => NULL, | |
979 | 'context' => 'home', | |
980 | 'activity_type_id' => NULL, | |
2a56324c | 981 | 'activity_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Scheduled'), // for dashlet the Scheduled status is set by default |
75d842f8 | 982 | 'offset' => 0, |
983 | 'rowCount' => 0, | |
984 | 'sort' => NULL, | |
985 | ); | |
986 | } | |
987 | ||
824989b9 AS |
988 | public function testSendEmailBasic() { |
989 | $contactId = $this->individualCreate(); | |
990 | ||
991 | // create a logged in USER since the code references it for sendEmail user. | |
992 | $this->createLoggedInUser(); | |
993 | $session = CRM_Core_Session::singleton(); | |
994 | $loggedInUser = $session->get('userID'); | |
995 | ||
996 | $contact = $this->civicrm_api('contact', 'getsingle', array('id' => $contactId, 'version' => $this->_apiversion)); | |
997 | $contactDetailsIntersectKeys = array( | |
998 | 'contact_id' => '', | |
999 | 'sort_name' => '', | |
1000 | 'display_name' => '', | |
1001 | 'do_not_email' => '', | |
1002 | 'preferred_mail_format' => '', | |
1003 | 'is_deceased' => '', | |
1004 | 'email' => '', | |
1005 | 'on_hold' => '', | |
1006 | ); | |
1007 | $contactDetails = array( | |
1008 | array_intersect_key($contact, $contactDetailsIntersectKeys), | |
1009 | ); | |
1010 | ||
1011 | $subject = __FUNCTION__ . ' subject'; | |
1012 | $html = __FUNCTION__ . ' html'; | |
1013 | $text = __FUNCTION__ . ' text'; | |
1014 | $userID = $loggedInUser; | |
1015 | ||
1016 | list($sent, $activity_id) = $email_result = CRM_Activity_BAO_Activity::sendEmail( | |
1017 | $contactDetails, | |
1018 | $subject, | |
1019 | $text, | |
1020 | $html, | |
1021 | $contact['email'], | |
1022 | $userID, | |
1023 | $from = __FUNCTION__ . '@example.com' | |
1024 | ); | |
1025 | ||
1026 | $activity = $this->civicrm_api('activity', 'getsingle', array('id' => $activity_id, 'version' => $this->_apiversion)); | |
1027 | $details = "-ALTERNATIVE ITEM 0- | |
1028 | $html | |
1029 | -ALTERNATIVE ITEM 1- | |
1030 | $text | |
1031 | -ALTERNATIVE END- | |
1032 | "; | |
1033 | $this->assertEquals($activity['details'], $details, 'Activity details does not match.'); | |
1034 | $this->assertEquals($activity['subject'], $subject, 'Activity subject does not match.'); | |
1035 | } | |
1036 | ||
1037 | public function testSendEmailWithCampaign() { | |
1038 | // Create a contact and contactDetails array. | |
1039 | $contactId = $this->individualCreate(); | |
1040 | ||
1041 | // create a logged in USER since the code references it for sendEmail user. | |
1042 | $this->createLoggedInUser(); | |
1043 | $session = CRM_Core_Session::singleton(); | |
1044 | $loggedInUser = $session->get('userID'); | |
1045 | ||
1046 | $contact = $this->civicrm_api('contact', 'getsingle', array('id' => $contactId, 'version' => $this->_apiversion)); | |
1047 | $contactDetailsIntersectKeys = array( | |
1048 | 'contact_id' => '', | |
1049 | 'sort_name' => '', | |
1050 | 'display_name' => '', | |
1051 | 'do_not_email' => '', | |
1052 | 'preferred_mail_format' => '', | |
1053 | 'is_deceased' => '', | |
1054 | 'email' => '', | |
1055 | 'on_hold' => '', | |
1056 | ); | |
1057 | $contactDetails = array( | |
1058 | array_intersect_key($contact, $contactDetailsIntersectKeys), | |
1059 | ); | |
1060 | ||
1061 | // Create a campaign. | |
1062 | $result = $this->civicrm_api('Campaign', 'create', array( | |
1063 | 'version' => $this->_apiversion, | |
1064 | 'title' => __FUNCTION__ . ' campaign', | |
1065 | )); | |
1066 | $campaign_id = $result['id']; | |
1067 | ||
1068 | $subject = __FUNCTION__ . ' subject'; | |
1069 | $html = __FUNCTION__ . ' html'; | |
1070 | $text = __FUNCTION__ . ' text'; | |
1071 | $userID = $loggedInUser; | |
1072 | ||
1073 | list($sent, $activity_id) = $email_result = CRM_Activity_BAO_Activity::sendEmail( | |
1074 | $contactDetails, | |
1075 | $subject, | |
1076 | $text, | |
1077 | $html, | |
1078 | $contact['email'], | |
1079 | $userID, | |
1080 | $from = __FUNCTION__ . '@example.com', | |
1081 | $attachments = NULL, | |
1082 | $cc = NULL, | |
1083 | $bcc = NULL, | |
1084 | $contactIds = NULL, | |
1085 | $additionalDetails = NULL, | |
cb5d08cd | 1086 | NULL, |
824989b9 AS |
1087 | $campaign_id |
1088 | ); | |
1089 | $activity = $this->civicrm_api('activity', 'getsingle', array('id' => $activity_id, 'version' => $this->_apiversion)); | |
1090 | $this->assertEquals($activity['campaign_id'], $campaign_id, 'Activity campaign_id does not match.'); | |
1091 | } | |
1092 | ||
6a488035 | 1093 | } |