From a413c3db48b1934ea39023949eae035cc2ea852b Mon Sep 17 00:00:00 2001 From: eileen Date: Fri, 17 Jul 2020 11:00:46 +1200 Subject: [PATCH] Use PrematureExit exception instead of weird hack in tests Passing is_unit_test to a function to avoid the civiExit routine has been superceded by catching PrematureExitExceptions --- CRM/Activity/Page/AJAX.php | 11 ++--- CRM/Custom/Page/AJAX.php | 5 --- CRM/Group/Page/AJAX.php | 5 --- .../phpunit/CRM/Activity/BAO/ActivityTest.php | 26 ++++++++---- tests/phpunit/CRM/Custom/Page/AJAXTest.php | 15 +++++-- tests/phpunit/CRM/Group/Page/AjaxTest.php | 41 ++++++++++++++----- 6 files changed, 65 insertions(+), 38 deletions(-) diff --git a/CRM/Activity/Page/AJAX.php b/CRM/Activity/Page/AJAX.php index 1b07ef68a3..f678f49dd1 100644 --- a/CRM/Activity/Page/AJAX.php +++ b/CRM/Activity/Page/AJAX.php @@ -379,7 +379,7 @@ class CRM_Activity_Page_AJAX { /** * Get activities for the contact. * - * @return array + * @throws \CRM_Core_Exception */ public static function getContactActivity() { $requiredParameters = [ @@ -420,10 +420,10 @@ class CRM_Activity_Page_AJAX { unset($optionalParameters['context']); foreach ($optionalParameters as $searchField => $dataType) { $formSearchField = $searchField; - if ($searchField == 'activity_type_id') { + if ($searchField === 'activity_type_id') { $formSearchField = 'activity_type_filter_id'; } - elseif ($searchField == 'activity_type_exclude_id') { + elseif ($searchField === 'activity_type_exclude_id') { $formSearchField = 'activity_type_exclude_filter_id'; } if (!empty($params[$searchField])) { @@ -431,7 +431,7 @@ class CRM_Activity_Page_AJAX { if (in_array($searchField, ['activity_date_time_low', 'activity_date_time_high'])) { $activityFilter['activity_date_time_relative'] = 0; } - elseif ($searchField == 'activity_status_id') { + elseif ($searchField === 'activity_status_id') { $activityFilter['status_id'] = explode(',', $activityFilter[$searchField]); } } @@ -439,9 +439,6 @@ class CRM_Activity_Page_AJAX { Civi::contactSettings()->set('activity_tab_filter', $activityFilter); } - if (!empty($_GET['is_unit_test'])) { - return [$activities, $activityFilter]; - } CRM_Utils_JSON::output($activities); } diff --git a/CRM/Custom/Page/AJAX.php b/CRM/Custom/Page/AJAX.php index 3b56de1adb..8ae9281cc7 100644 --- a/CRM/Custom/Page/AJAX.php +++ b/CRM/Custom/Page/AJAX.php @@ -93,7 +93,6 @@ class CRM_Custom_Page_AJAX { /** * Get list of Multi Record Fields. - * */ public static function getMultiRecordFieldList() { @@ -139,10 +138,6 @@ class CRM_Custom_Page_AJAX { $multiRecordFields['recordsTotal'] = $totalRecords; $multiRecordFields['recordsFiltered'] = $totalRecords; - if (!empty($_GET['is_unit_test'])) { - return $multiRecordFields; - } - CRM_Utils_JSON::output($multiRecordFields); } diff --git a/CRM/Group/Page/AJAX.php b/CRM/Group/Page/AJAX.php index 55428b5ef6..b314d5cb61 100644 --- a/CRM/Group/Page/AJAX.php +++ b/CRM/Group/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -64,10 +63,6 @@ class CRM_Group_Page_AJAX { } } - if (!empty($_GET['is_unit_test'])) { - return $groups; - } - CRM_Utils_JSON::output($groups); } diff --git a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php index ece7b501bb..20848b06d0 100644 --- a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php +++ b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php @@ -463,13 +463,18 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { 'cid' => 9, 'context' => 'activity', 'activity_type_id' => 1, - 'is_unit_test' => 1, ]; $expectedFilters = [ 'activity_type_filter_id' => 1, ]; - list($activities, $activityFilter) = CRM_Activity_Page_AJAX::getContactActivity(); + try { + CRM_Activity_Page_AJAX::getContactActivity(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $activityFilter = Civi::contactSettings()->get('activity_tab_filter'); + $activities = $e->errorData; + } //Assert whether filters are correctly set. $this->checkArrayEquals($expectedFilters, $activityFilter); // This should include activities of type Meeting only. @@ -479,7 +484,13 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { unset($_GET['activity_type_id']); $_GET['activity_type_exclude_id'] = $expectedFilters['activity_type_exclude_filter_id'] = 1; - list($activities, $activityFilter) = CRM_Activity_Page_AJAX::getContactActivity(); + try { + CRM_Activity_Page_AJAX::getContactActivity(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $activityFilter = Civi::contactSettings()->get('activity_tab_filter'); + $activities = $e->errorData; + } $this->assertEquals(['activity_type_exclude_filter_id' => 1], $activityFilter); // None of the activities should be of type Meeting. foreach ($activities['data'] as $value) { @@ -525,7 +536,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { // with no contact ID and there should be 8 schedule activities shown on dashboard $count = 8; foreach ([$activitiesNew] as $activities) { - $this->assertEquals($count, count($activities)); + $this->assertCount($count, $activities); foreach ($activities as $key => $value) { $this->assertEquals($value['subject'], "subject {$key}", 'Verify activity subject is correct.'); @@ -537,10 +548,9 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { // Now check that we get the scheduled meeting, if civicaseShowCaseActivities is set. $this->setShowCaseActivitiesInCore(TRUE); $activitiesNew = CRM_Activity_BAO_Activity::getActivities($this->_params); - $this->assertEquals(9, count($activitiesNew)); + $this->assertCount(9, $activitiesNew); // Scan through to find the meeting. - $this->assertTrue(in_array('test meeting activity', array_column($activitiesNew, 'subject')), - "failed to find scheduled case Meeting activity"); + $this->assertContains('test meeting activity', array_column($activitiesNew, 'subject'), "failed to find scheduled case Meeting activity"); // Reset to default $this->setShowCaseActivitiesInCore(FALSE); } @@ -553,7 +563,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase { $this->setUpForActivityDashboardTests(); foreach ([CRM_Activity_BAO_Activity::getActivities($this->_params)] as $activities) { // Skipped until we get back to the upgraded version properly. - $this->assertEquals(0, count($activities)); + $this->assertCount(0, $activities); } } diff --git a/tests/phpunit/CRM/Custom/Page/AJAXTest.php b/tests/phpunit/CRM/Custom/Page/AJAXTest.php index 7d6ffc8435..35518957d8 100644 --- a/tests/phpunit/CRM/Custom/Page/AJAXTest.php +++ b/tests/phpunit/CRM/Custom/Page/AJAXTest.php @@ -54,9 +54,13 @@ class CRM_Custom_Page_AJAXTest extends CiviUnitTestCase { $_GET = [ 'cid' => $contactId, 'cgid' => $ids['custom_group_id'], - 'is_unit_test' => TRUE, ]; - $multiRecordFields = CRM_Custom_Page_AJAX::getMultiRecordFieldList(); + try { + CRM_Custom_Page_AJAX::getMultiRecordFieldList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $multiRecordFields = $e->errorData; + } //check sorting foreach ($customFields as $fieldId) { @@ -72,7 +76,12 @@ class CRM_Custom_Page_AJAXTest extends CiviUnitTestCase { 'dir' => 'desc', ], ]; - $sortedRecords = CRM_Custom_Page_AJAX::getMultiRecordFieldList(); + try { + CRM_Custom_Page_AJAX::getMultiRecordFieldList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $sortedRecords = $e->errorData; + } $this->assertEquals(3, $sortedRecords['recordsTotal']); $this->assertEquals(3, $multiRecordFields['recordsTotal']); diff --git a/tests/phpunit/CRM/Group/Page/AjaxTest.php b/tests/phpunit/CRM/Group/Page/AjaxTest.php index 5325d28072..8a88946e4d 100644 --- a/tests/phpunit/CRM/Group/Page/AjaxTest.php +++ b/tests/phpunit/CRM/Group/Page/AjaxTest.php @@ -34,7 +34,6 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { 'rowCount' => 50, 'sort' => NULL, 'parentsOnly' => FALSE, - 'is_unit_test' => TRUE, ]; $this->hookClass = CRM_Utils_Hook::singleton(); $this->createLoggedInUser(); @@ -90,15 +89,25 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { $obj = new CRM_Group_Page_AJAX(); //filter with title - $_GET['title'] = "not-me-active"; - $groups = $obj->getGroupList(); + $_GET['title'] = 'not-me-active'; + try { + CRM_Group_Page_AJAX::getGroupList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $groups = $e->errorData; + } $this->assertEquals(1, $groups['recordsTotal']); $this->assertEquals('not-me-active', $groups['data'][0]['title']); unset($_GET['title']); // check on status $_GET['status'] = 2; - $groups = $obj->getGroupList(); + try { + CRM_Group_Page_AJAX::getGroupList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $groups = $e->errorData; + } foreach ($groups['data'] as $key => $val) { $this->assertEquals('crm-entity disabled', $val['DT_RowClass']); } @@ -544,8 +553,12 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { // Load the Manage Group page code and we should get a count from our // group because the cache is fresh. $_GET = $this->_params; - $obj = new CRM_Group_Page_AJAX(); - $groups = $obj->getGroupList(); + try { + CRM_Group_Page_AJAX::getGroupList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $groups = $e->errorData; + } // Make sure we returned our smart group and ensure the count is accurate. $found = FALSE; @@ -566,8 +579,12 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { // Load the Manage Group page code. $_GET = $this->_params; - $obj = new CRM_Group_Page_AJAX(); - $groups = $obj->getGroupList(); + try { + CRM_Group_Page_AJAX::getGroupList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + $groups = $e->errorData; + } // Make sure the smart group reports unknown count. $count_is_unknown = FALSE; @@ -607,8 +624,12 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { // Load the Manage Group page code. $_GET = $this->_params; - $obj = new CRM_Group_Page_AJAX(); - $groups = $obj->getGroupList(); + try { + CRM_Group_Page_AJAX::getGroupList(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + // Perhaps this was just testing valid sql... + } // Ensure we did not regenerate the cache. $sql = 'SELECT DATE_FORMAT(cache_date, "%Y%m%d%H%i%s") AS cache_date ' . -- 2.25.1