2 require_once 'CiviTest/CiviUnitTestCase.php';
3 require_once 'CiviTest/Contact.php';
6 * Class CRM_Activity_BAO_ActivityTest
8 class CRM_Activity_BAO_ActivityTest
extends CiviUnitTestCase
{
14 // truncate a few tables
15 $tablesToTruncate = array('civicrm_contact', 'civicrm_activity', 'civicrm_activity_contact');
16 $this->quickCleanup($tablesToTruncate);
20 * Testcases for create() method
21 * create() method Add/Edit activity.
23 function testCreate() {
24 $contactId = Contact
::createIndividual();
27 'source_contact_id' => $contactId,
28 'subject' => 'Scheduling Meeting',
29 'activity_type_id' => 2,
32 CRM_Activity_BAO_Activity
::create($params);
34 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
35 'subject', 'Database check for created activity.'
38 // Now call create() to modify an existing Activity
43 'source_contact_id' => $contactId,
44 'subject' => 'Scheduling Interview',
45 'activity_type_id' => 3,
48 CRM_Activity_BAO_Activity
::create($params);
50 $activityTypeId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Interview',
52 'subject', 'Database check on updated activity record.'
54 $this->assertEquals($activityTypeId, 3, 'Verify activity type id is 3.');
56 Contact
::delete($contactId);
60 * Testcase for getContactActivity() method.
61 * getContactActivity() method get activities detail for given target contact id
63 function testGetContactActivity() {
64 $contactId = Contact
::createIndividual();
66 'first_name' => 'liz',
67 'last_name' => 'hurleey',
69 $targetContactId = Contact
::createIndividual($params);
72 'source_contact_id' => $contactId,
73 'subject' => 'Scheduling Meeting',
74 'activity_type_id' => 2,
75 'target_contact_id' => array($targetContactId),
76 'activity_date_time' => date('Ymd'),
79 CRM_Activity_BAO_Activity
::create($params);
81 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting',
83 'subject', 'Database check for created activity.'
86 $activities = CRM_Activity_BAO_Activity
::getContactActivity($targetContactId);
88 $this->assertEquals($activities[$activityId]['subject'], 'Scheduling Meeting', 'Verify activity subject is correct.');
90 Contact
::delete($contactId);
91 Contact
::delete($targetContactId);
95 * Testcase for retrieve() method.
96 * retrieve($params, $defaults) method return activity detail for given params
99 function testRetrieve() {
100 $contactId = Contact
::createIndividual();
102 'first_name' => 'liz',
103 'last_name' => 'hurleey',
105 $targetContactId = Contact
::createIndividual($params);
108 'source_contact_id' => $contactId,
109 'subject' => 'Scheduling Meeting',
110 'activity_type_id' => 2,
111 'target_contact_id' => array($targetContactId),
112 'activity_date_time' => date('Ymd'),
115 CRM_Activity_BAO_Activity
::create($params);
117 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
118 'subject', 'Database check for created activity.'
121 $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId,
123 'Database check for created activity target.'
127 $activity = CRM_Activity_BAO_Activity
::retrieve($params, $defaults);
129 $this->assertEquals($activity->subject
, 'Scheduling Meeting', 'Verify activity subject is correct.');
130 $this->assertEquals($activity->activity_type_id
, 2, 'Verify activity type id is correct.');
131 $this->assertEquals($defaults['source_contact_id'], $contactId, 'Verify source contact id is correct.');
133 $this->assertEquals($defaults['subject'], 'Scheduling Meeting', 'Verify activity subject is correct.');
134 $this->assertEquals($defaults['activity_type_id'], 2, 'Verify activity type id is correct.');
136 $this->assertEquals($defaults['target_contact'][0], $targetContactId, 'Verify target contact id is correct.');
138 Contact
::delete($contactId);
139 Contact
::delete($targetContactId);
143 * Testcase for deleteActivity() method.
144 * deleteActivity($params) method deletes activity for given params.
146 function testDeleteActivity() {
147 $contactId = Contact
::createIndividual();
149 'first_name' => 'liz',
150 'last_name' => 'hurleey',
152 $targetContactId = Contact
::createIndividual($params);
155 'source_contact_id' => $contactId,
156 'source_record_id' => $contactId,
157 'subject' => 'Scheduling Meeting',
158 'activity_type_id' => 2,
159 'target_contact_id' => array($targetContactId),
160 'activity_date_time' => date('Ymd'),
163 CRM_Activity_BAO_Activity
::create($params);
165 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
166 'subject', 'Database check for created activity.'
169 $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId,
171 'Database check for created activity target.'
174 'source_contact_id' => $contactId,
175 'source_record_id' => $contactId,
176 'subject' => 'Scheduling Meeting',
177 'activity_type_id' => 2,
180 $result = CRM_Activity_BAO_Activity
::deleteActivity($params);
182 $activityId = $this->assertDBNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
183 'subject', 'Database check for deleted activity.'
185 Contact
::delete($contactId);
186 Contact
::delete($targetContactId);
190 * Testcase for deleteActivityTarget() method.
191 * deleteActivityTarget($activityId) method deletes activity target for given activity id.
193 function testDeleteActivityTarget() {
194 $contactId = Contact
::createIndividual();
196 'first_name' => 'liz',
197 'last_name' => 'hurleey',
199 $targetContactId = Contact
::createIndividual($params);
202 'source_contact_id' => $contactId,
203 'subject' => 'Scheduling Meeting',
204 'activity_type_id' => 2,
205 'target_contact_id' => array($targetContactId),
206 'activity_date_time' => date('Ymd'),
209 CRM_Activity_BAO_Activity
::create($params);
211 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
212 'subject', 'Database check for created activity.'
215 $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId,
217 'Database check for created activity target.'
220 CRM_Activity_BAO_Activity
::deleteActivityContact($activityId, 3);
222 $this->assertDBNull('CRM_Activity_DAO_ActivityContact', $targetContactId, 'id',
223 'contact_id', 'Database check for deleted activity target.'
226 Contact
::delete($contactId);
227 Contact
::delete($targetContactId);
231 * Testcase for deleteActivityAssignment() method.
232 * deleteActivityAssignment($activityId) method deletes activity assignment for given activity id.
234 function testDeleteActivityAssignment() {
235 $contactId = Contact
::createIndividual();
237 'first_name' => 'liz',
238 'last_name' => 'hurleey',
240 $assigneeContactId = Contact
::createIndividual($params);
243 'source_contact_id' => $contactId,
244 'subject' => 'Scheduling Meeting',
245 'activity_type_id' => 2,
246 'assignee_contact_id' => array($assigneeContactId),
247 'activity_date_time' => date('Ymd'),
250 CRM_Activity_BAO_Activity
::create($params);
252 $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id',
253 'subject', 'Database check for created activity.'
256 $activityAssignmentId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact',
257 $assigneeContactId, 'id', 'contact_id',
258 'Database check for created activity assignment.'
261 CRM_Activity_BAO_Activity
::deleteActivityContact($activityId, 1);
263 $this->assertDBNull('CRM_Activity_DAO_ActivityContact', $assigneeContactId, 'id',
264 'contact_id', 'Database check for deleted activity assignment.'
267 Contact
::delete($contactId);
268 Contact
::delete($assigneeContactId);
272 * Test getActivitiesCount BAO method
274 function testGetActivitiesCountforAdminDashboard() {
275 $op = new PHPUnit_Extensions_Database_Operation_Insert();
276 $op->execute($this->_dbconn
,
277 $this->createFlatXMLDataSet(
278 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
283 'contact_id' => NULL,
287 'activity_type_id' => NULL,
292 $activityCount = CRM_Activity_BAO_Activity
::getActivitiesCount($params);
294 //since we are loading activities from dataset, we know total number of activities
295 // 8 schedule activities that should be shown on dashboard
297 $this->assertEquals($count, $activityCount, 'In line ' . __LINE__
);
301 * Test getActivitiesCount BAO method
303 function testGetActivitiesCountforNonAdminDashboard() {
304 $op = new PHPUnit_Extensions_Database_Operation_Insert();
305 $op->execute($this->_dbconn
,
306 $this->createFlatXMLDataSet(
307 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
316 'activity_type_id' => NULL,
322 $activityCount = CRM_Activity_BAO_Activity
::getActivitiesCount($params);
324 //since we are loading activities from dataset, we know total number of activities for this contact
325 // 5 activities ( 2 scheduled, 3 Completed ), note that dashboard shows only scheduled activities
327 $this->assertEquals($count, $activityCount, 'In line ' . __LINE__
);
331 * Test getActivitiesCount BAO method
333 function testGetActivitiesCountforContactSummary() {
334 $op = new PHPUnit_Extensions_Database_Operation_Insert();
335 $op->execute($this->_dbconn
,
336 $this->createFlatXMLDataSet(
337 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
345 'context' => 'activity',
346 'activity_type_id' => NULL,
351 $activityCount = CRM_Activity_BAO_Activity
::getActivitiesCount($params);
353 //since we are loading activities from dataset, we know total number of activities for this contact
354 // 5 activities, Contact Summary should show all activities
356 $this->assertEquals($count, $activityCount, 'In line ' . __LINE__
);
360 * Test getActivitiesCount BAO method
362 function testGetActivitiesCountforContactSummaryWithNoActivities() {
363 $op = new PHPUnit_Extensions_Database_Operation_Insert();
364 $op->execute($this->_dbconn
,
365 $this->createFlatXMLDataSet(
366 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
375 'activity_type_id' => NULL,
380 $activityCount = CRM_Activity_BAO_Activity
::getActivitiesCount($params);
382 //since we are loading activities from dataset, we know total number of activities for this contact
383 // this contact does not have any activity
384 $this->assertEquals(0, $activityCount, 'In line ' . __LINE__
);
388 * Test getActivities BAO method
390 function testGetActivitiesforAdminDashboard() {
391 $op = new PHPUnit_Extensions_Database_Operation_Insert();
392 $op->execute($this->_dbconn
,
393 $this->createFlatXMLDataSet(
394 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
403 'activity_type_id' => NULL,
408 $activities = CRM_Activity_BAO_Activity
::getActivities($params);
410 //since we are loading activities from dataset, we know total number of activities
411 // 8 schedule activities that should be shown on dashboard
413 $this->assertEquals($count, sizeof($activities), 'In line ' . __LINE__
);
415 foreach ($activities as $key => $value) {
416 $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.');
417 $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.');
418 $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.');
423 * Test getActivities BAO method
425 function testGetActivitiesforNonAdminDashboard() {
426 $op = new PHPUnit_Extensions_Database_Operation_Insert();
427 $op->execute($this->_dbconn
,
428 $this->createFlatXMLDataSet(
429 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
435 'contact_id' => $contactID,
439 'activity_type_id' => NULL,
444 $activities = CRM_Activity_BAO_Activity
::getActivities($params);
446 //since we are loading activities from dataset, we know total number of activities for this contact
447 // 5 activities ( 2 scheduled, 3 Completed ), note that dashboard shows only scheduled activities
449 $this->assertEquals($count, sizeof($activities), 'In line ' . __LINE__
);
451 foreach ($activities as $key => $value) {
452 $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.');
453 $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.');
454 $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.');
457 $this->assertArrayHasKey($contactID, $value['target_contact_name']);
460 $this->assertArrayHasKey($contactID, $value['assignee_contact_name']);
466 * Test getActivities BAO method
468 function testGetActivitiesforContactSummary() {
469 $op = new PHPUnit_Extensions_Database_Operation_Insert();
470 $op->execute($this->_dbconn
,
471 $this->createFlatXMLDataSet(
472 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
478 'contact_id' => $contactID,
481 'context' => 'activity',
482 'activity_type_id' => NULL,
487 $activities = CRM_Activity_BAO_Activity
::getActivities($params);
489 //since we are loading activities from dataset, we know total number of activities for this contact
490 // 5 activities, Contact Summary should show all activities
492 $this->assertEquals($count, sizeof($activities), 'In line ' . __LINE__
);
494 foreach ($activities as $key => $value) {
495 $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.');
498 $this->assertEquals($value['status_id'], 2, 'Verify all activities are scheduled.');
501 $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.');
505 $this->assertEquals($value['activity_type_id'], 1, 'Verify activity type is correct.');
508 $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.');
512 $this->assertArrayHasKey($contactID, $value['target_contact_name']);
515 $this->assertArrayHasKey($contactID, $value['assignee_contact_name']);
521 * Test getActivities BAO method
523 function testGetActivitiesforContactSummaryWithNoActivities() {
524 $op = new PHPUnit_Extensions_Database_Operation_Insert();
525 $op->execute($this->_dbconn
,
526 $this->createFlatXMLDataSet(
527 dirname(__FILE__
) . '/activities_for_dashboard_count.xml'
536 'activity_type_id' => NULL,
541 $activities = CRM_Activity_BAO_Activity
::getActivities($params);
543 //since we are loading activities from dataset, we know total number of activities for this contact
544 // This contact does not have any activities
545 $this->assertEquals(0, sizeof($activities), 'In line ' . __LINE__
);