X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FActivity%2FBAO%2FActivityTest.php;h=ea42c1f0517f4f94cce9f73bb0de9adce070831a;hb=cbcedb3990aeea5ebce43058d2d0db6267a7d400;hp=77d16119ff87cd501347c16e6102fc5ada071aba;hpb=841720da444b267cf53b8a21cc7182c9ab9f4179;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php index 77d16119ff..ea42c1f051 100644 --- a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php +++ b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php @@ -7,12 +7,18 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { public function setUp() { parent::setUp(); + $this->prepareForACLs(); + CRM_Core_Config::singleton()->userPermissionClass->permissions = array('view all contacts', 'access CiviCRM'); } + /** + * Clean up after tests. + */ public function tearDown() { - // truncate a few tables - $tablesToTruncate = array('civicrm_contact', 'civicrm_activity', 'civicrm_activity_contact'); + $tablesToTruncate = array('civicrm_activity', 'civicrm_activity_contact'); $this->quickCleanup($tablesToTruncate); + $this->cleanUpAfterACLs(); + parent::tearDown(); } /** @@ -33,8 +39,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'subject', 'Database check for created activity.' ); - // Now call create() to modify an existing Activity - + // Now call create() to modify an existing Activity. $params = array( 'id' => $activityId, 'source_contact_id' => $contactId, @@ -81,6 +86,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'subject', 'Database check for created activity.' ); + // @todo - remove this deprecated functions $activities = CRM_Activity_BAO_Activity::getContactActivity($targetContactId); $this->assertEquals($activities[$activityId]['subject'], 'Scheduling Meeting', 'Verify activity subject is correct.'); @@ -113,11 +119,11 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { CRM_Activity_BAO_Activity::create($params); - $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', + $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', 'subject', 'Database check for created activity.' ); - $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, + $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, 'id', 'contact_id', 'Database check for created activity target.' ); @@ -162,11 +168,11 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { CRM_Activity_BAO_Activity::create($params); - $activityId = $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', + $this->assertDBNotNull('CRM_Activity_DAO_Activity', 'Scheduling Meeting', 'id', 'subject', 'Database check for created activity.' ); - $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, + $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, 'id', 'contact_id', 'Database check for created activity target.' ); @@ -213,7 +219,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'subject', 'Database check for created activity.' ); - $activityTargetId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, + $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $targetContactId, 'id', 'contact_id', 'Database check for created activity target.' ); @@ -255,7 +261,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'subject', 'Database check for created activity.' ); - $activityAssignmentId = $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', + $this->assertDBNotNull('CRM_Activity_DAO_ActivityContact', $assigneeContactId, 'id', 'contact_id', 'Database check for created activity assignment.' ); @@ -273,7 +279,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { /** * Test getActivities BAO method for getting count. */ - public function testGetActivitiesCountforAdminDashboard() { + public function testGetActivitiesCountForAdminDashboard() { $op = new PHPUnit_Extensions_Database_Operation_Insert(); $op->execute($this->_dbconn, $this->createFlatXMLDataSet( @@ -380,7 +386,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { $activities = $obj->getContactActivity(); // This should include activities of type Meeting only. - foreach ($activities['data'] as $key => $value) { + foreach ($activities['data'] as $value) { $this->assertContains('Meeting', $value['activity_type']); } unset($_GET['activity_type_id']); @@ -388,7 +394,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { $_GET['activity_type_exclude_id'] = 1; $activities = $obj->getContactActivity(); // None of the activities should be of type Meeting. - foreach ($activities['data'] as $key => $value) { + foreach ($activities['data'] as $value) { $this->assertNotEquals('Meeting', $value['activity_type']); } } @@ -424,7 +430,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { /** * Test getActivities BAO method. */ - public function testGetActivitiesforAdminDashboard() { + public function testGetActivitiesForAdminDashboard() { $op = new PHPUnit_Extensions_Database_Operation_Insert(); $op->execute($this->_dbconn, $this->createFlatXMLDataSet( @@ -505,10 +511,11 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { public function testTargetCountforContactSummary() { $targetCount = 5; $contactId = $this->individualCreate(); + $targetContactIDs = array(); for ($i = 0; $i < $targetCount; $i++) { $targetContactIDs[] = $this->individualCreate(array(), $i); } - // create activities with 5 target contacts + // Create activities with 5 target contacts. $activityParams = array( 'source_contact_id' => $contactId, 'target_contact_id' => $targetContactIDs, @@ -703,4 +710,66 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { } } + /** + * CRM-20308: Test from email address when a 'copy of Activity' event occur + */ + public function testEmailAddressOfActivityCopy() { + // Case 1: assert the 'From' Email Address of source Actvity Contact ID + // create activity with source contact ID which has email address + $assigneeContactId = $this->individualCreate(); + $sourceContactParams = array( + 'first_name' => 'liz', + 'last_name' => 'hurleey', + 'email' => substr(sha1(rand()), 0, 7) . '@testemail.com', + ); + $sourceContactID = $this->individualCreate($sourceContactParams); + $sourceDisplayName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $sourceContactID, 'display_name'); + + // create an activity using API + $params = array( + 'source_contact_id' => $sourceContactID, + 'subject' => 'Scheduling Meeting ' . substr(sha1(rand()), 0, 4), + 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Meeting'), + 'assignee_contact_id' => array($assigneeContactId), + 'activity_date_time' => date('Ymd'), + ); + $activity = $this->callAPISuccess('Activity', 'create', $params); + + // Check that from address is in "Source-Display-Name " + $formAddress = CRM_Case_BAO_Case::getReceiptFrom($activity['id']); + $expectedFromAddress = sprintf("%s <%s>", $sourceDisplayName, $sourceContactParams['email']); + $this->assertEquals($expectedFromAddress, $formAddress); + + // Case 2: System Default From Address + // but first erase the email address of existing source contact ID + $withoutEmailParams = array( + 'email' => '', + ); + $sourceContactID = $this->individualCreate($withoutEmailParams); + $params = array( + 'source_contact_id' => $sourceContactID, + 'subject' => 'Scheduling Meeting ' . substr(sha1(rand()), 0, 4), + 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Meeting'), + 'activity_date_time' => date('Ymd'), + ); + $activity = $this->callAPISuccess('Activity', 'create', $params); + // fetch domain info + $domainInfo = $this->callAPISuccess('Domain', 'getsingle', array('id' => CRM_Core_Config::domainID())); + + $formAddress = CRM_Case_BAO_Case::getReceiptFrom($activity['id']); + if (!empty($domainInfo['from_email'])) { + $expectedFromAddress = sprintf("%s <%s>", $domainInfo['from_name'], $domainInfo['from_email']); + } + // Case 3: fetch default Organization Contact email address + elseif (!empty($domainInfo['domain_email'])) { + $expectedFromAddress = sprintf("%s <%s>", $domainInfo['name'], $domainInfo['domain_email']); + } + // TODO: due to unknown reason the following assertion fails on + // test.civicrm.org test build but works fine on local + // $this->assertEquals($expectedFromAddress, $formAddress); + + // TODO: Case 4 about checking the $formAddress on basis of logged contact ID respectively needs, + // to change the domain setting, which isn't straight forward in test environment + } + }