X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FActivity%2FBAO%2FActivityTest.php;h=bbf70d73f68f380a1a8fd5fd85d034c2f538e707;hb=a0741dc66a56012dca28350f8c1ddaad5ec03918;hp=1f49256bb887c08bbec5813a9105500fed453206;hpb=850d8c7cf555cdb11176418b2d1ecd035eddcb14;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php index 1f49256bb8..bbf70d73f6 100644 --- a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php +++ b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php @@ -30,39 +30,6 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { parent::tearDown(); } - /** - * Setup or clean up SMS tests - * @param bool $teardown - * - * @throws \CiviCRM_API3_Exception - */ - public function setupForSmsTests($teardown = FALSE) { - require_once 'CiviTest/CiviTestSMSProvider.php'; - - // Option value params for CiviTestSMSProvider - $groupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'sms_provider_name', 'id', 'name'); - $params = array( - 'option_group_id' => $groupID, - 'label' => 'unittestSMS', - 'value' => 'unit.test.sms', - 'name' => 'CiviTestSMSProvider', - 'is_default' => 1, - 'is_active' => 1, - 'version' => 3, - ); - - if ($teardown) { - // Test completed, delete provider - $providerOptionValueResult = civicrm_api3('option_value', 'get', $params); - civicrm_api3('option_value', 'delete', array('id' => $providerOptionValueResult['id'])); - return; - } - - // Create an SMS provider "CiviTestSMSProvider". Civi handles "CiviTestSMSProvider" as a special case and allows it to be instantiated - // in CRM/Sms/Provider.php even though it is not an extension. - civicrm_api3('option_value', 'create', $params); - } - /** * Test case for create() method. */ @@ -331,12 +298,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Test getActivities BAO method for getting count */ public function testGetActivitiesCountforNonAdminDashboard() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); $params = array( 'contact_id' => 9, @@ -360,12 +322,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Test getActivities BAO method for getting count */ public function testGetActivitiesCountforContactSummary() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); $params = array( 'contact_id' => 9, @@ -387,12 +344,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * CRM-18706 - Test Include/Exclude Activity Filters */ public function testActivityFilters() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); Civi::settings()->set('preserve_activity_tab_filter', 1); $this->createLoggedInUser(); @@ -429,12 +381,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Test getActivities BAO method for getting count */ public function testGetActivitiesCountforContactSummaryWithNoActivities() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); $params = array( 'contact_id' => 17, @@ -501,12 +448,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Test getActivities BAO method. */ public function testGetActivitiesforNonAdminDashboard() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); $contactID = 9; $params = array( @@ -564,10 +506,34 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'contact_id' => $contactId, 'context' => 'activity', ); - foreach (array(CRM_Activity_BAO_Activity::getActivities($params)) as $activities) { - //verify target count - $this->assertEquals($targetCount, $activities[1]['target_contact_counter']); - $this->assertEquals([$targetContactIDs[0] => 'Anderson, Anthony'], $activities[1]['target_contact_name']); + $activities = CRM_Activity_BAO_Activity::getActivities($params); + //verify target count + $this->assertEquals($targetCount, $activities[1]['target_contact_count']); + $this->assertEquals([$targetContactIDs[0] => 'Anderson, Anthony'], $activities[1]['target_contact_name']); + $this->assertEquals('Anderson, Anthony', $activities[1]['source_contact_name']); + $this->assertEquals('Anderson, Anthony', $activities[1]['assignee_contact_name'][4]); + } + + /** + * Test getActivities BAO method. + */ + public function testGetActivitiesforContactSummaryWithSortOptions() { + $this->createTestActivities(); + $params = [ + 'contact_id' => 9, + 'admin' => FALSE, + 'caseId' => NULL, + 'context' => 'activity', + 'activity_type_id' => NULL, + 'offset' => 0, + 'rowCount' => 0, + 'sort' => 'source_contact_name desc', + ]; + + $activities = CRM_Activity_BAO_Activity::getActivities($params); + $alphaOrder = ['Test Contact 11', 'Test Contact 12', 'Test Contact 3', 'Test Contact 4', 'Test Contact 9']; + foreach ($activities as $activity) { + $this->assertEquals(array_pop($alphaOrder), $activity['source_contact_name']); } } @@ -575,13 +541,8 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { /** * Test getActivities BAO method. */ - public function testGetActivitiesforContactSummary() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + public function testGetActivitiesForContactSummary() { + $this->createTestActivities(); $contactID = 9; $params = array( @@ -592,39 +553,42 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'activity_type_id' => NULL, 'offset' => 0, 'rowCount' => 0, - 'sort' => NULL, ); //since we are loading activities from dataset, we know total number of activities for this contact // 5 activities, Contact Summary should show all activities $count = 5; - foreach (array(CRM_Activity_BAO_Activity::getActivities($params)) as $activities) { + $activities = CRM_Activity_BAO_Activity::getActivities($params); + $this->assertEquals($count, count($activities)); + foreach ($activities as $key => $value) { + $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); - $this->assertEquals($count, count($activities)); - - foreach ($activities as $key => $value) { - $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); - - if ($key > 8) { - $this->assertEquals($value['status_id'], 2, 'Verify all activities are scheduled.'); - } - else { - $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.'); - } + if ($key > 8) { + $this->assertEquals($value['status_id'], 2, 'Verify all activities are scheduled.'); + } + else { + $this->assertEquals($value['status_id'], 1, 'Verify all activities are scheduled.'); + } - if ($key > 8) { - $this->assertEquals($value['activity_type_id'], 1, 'Verify activity type is correct.'); - } - else { - $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.'); - } + if ($key === 12) { + $this->assertEquals($value['activity_type'], 'Bulk Email', 'Verify activity type is correct.'); + $this->assertEquals('(2 recipients)', $value['recipients']); + $targetContactID = key($value['target_contact_name']); + // The 2 targets have ids 10 & 11. Since they are not sorted it could be either on some systems. + $this->assertTrue(in_array($targetContactID, [10, 11])); + } + elseif ($key > 8) { + $this->assertEquals($value['activity_type_id'], 1, 'Verify activity type is correct.'); + } + else { + $this->assertEquals($value['activity_type_id'], 2, 'Verify activity type is correct.'); + } - if ($key == 3) { - $this->assertArrayHasKey($contactID, $value['target_contact_name']); - } - elseif ($key == 4) { - $this->assertArrayHasKey($contactID, $value['assignee_contact_name']); - } + if ($key == 3) { + $this->assertEquals([$contactID => 'Test Contact ' . $contactID], $value['target_contact_name']); + } + elseif ($key == 4) { + $this->assertArrayHasKey($contactID, $value['assignee_contact_name']); } } } @@ -633,12 +597,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Test getActivities BAO method. */ public function testGetActivitiesforContactSummaryWithActivities() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); // parameters for different test cases, check each array key for the specific test-case $testCases = array( @@ -763,12 +722,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { */ public function testByActivityDateAndStatus() { CRM_Core_Config::singleton()->userPermissionClass->permissions = ['view all contacts', 'access CiviCRM']; - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); // activity IDs catagorised by date $lastWeekActivities = array(1, 2, 3); @@ -1030,12 +984,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { * Set up for testing activity queries. */ protected function setUpForActivityDashboardTests() { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $op->execute($this->_dbconn, - $this->createFlatXMLDataSet( - dirname(__FILE__) . '/activities_for_dashboard_count.xml' - ) - ); + $this->createTestActivities(); $this->_params = array( 'contact_id' => NULL, @@ -1163,8 +1112,7 @@ $text public function testSendSMSWithoutPermission() { $dummy = NULL; $session = CRM_Core_Session::singleton(); - $config = &CRM_Core_Config::singleton(); - $config->userPermissionClass->permissions = array('access CiviCRM'); + CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM'); CRM_Activity_BAO_Activity::sendSMS( $dummy, @@ -1335,4 +1283,15 @@ $text return array($sent, $activityId, $success); } + protected function createTestActivities() { + $op = new PHPUnit_Extensions_Database_Operation_Insert(); + $op->execute($this->_dbconn, + $this->createFlatXMLDataSet( + dirname(__FILE__) . '/activities_for_dashboard_count.xml' + ) + ); + // Make changes to improve variation in php since the xml method is brittle & relies on option values being unchanged. + $this->callAPISuccess('Activity', 'create', ['id' => 12, 'activity_type_id' => 'Bulk Email']); + } + }