From 72a3d8bcc9185dbd7470bcb65f0b6d264bd034c9 Mon Sep 17 00:00:00 2001 From: demeritcowboy Date: Sun, 14 Jun 2020 17:45:10 -0400 Subject: [PATCH] replace call to function that doesn't cache properly --- CRM/Case/XMLProcessor/Process.php | 2 +- .../CRM/Case/XMLProcessor/ProcessTest.php | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/CRM/Case/XMLProcessor/Process.php b/CRM/Case/XMLProcessor/Process.php index 9307f2bb90..d1f63c975b 100644 --- a/CRM/Case/XMLProcessor/Process.php +++ b/CRM/Case/XMLProcessor/Process.php @@ -253,7 +253,7 @@ class CRM_Case_XMLProcessor_Process extends CRM_Case_XMLProcessor { * @return array */ public function activityTypes($activityTypesXML, $maxInst = FALSE, $isLabel = FALSE, $maskAction = FALSE) { - $activityTypes = &$this->allActivityTypes(TRUE, TRUE); + $activityTypes = CRM_Case_PseudoConstant::caseActivityType(TRUE, TRUE); $result = []; foreach ($activityTypesXML as $activityTypeXML) { foreach ($activityTypeXML as $recordXML) { diff --git a/tests/phpunit/CRM/Case/XMLProcessor/ProcessTest.php b/tests/phpunit/CRM/Case/XMLProcessor/ProcessTest.php index db7144d592..bc24f4c670 100644 --- a/tests/phpunit/CRM/Case/XMLProcessor/ProcessTest.php +++ b/tests/phpunit/CRM/Case/XMLProcessor/ProcessTest.php @@ -427,4 +427,78 @@ class CRM_Case_XMLProcessor_ProcessTest extends CiviCaseTestCase { ]; } + /** + * Test XMLProcessor activityTypes() + */ + public function testXmlProcessorActivityTypes() { + // First change an activity's label since we also test getting the labels. + // @todo Having a brain freeze or something - can't do this in one step? + $activity_type_id = $this->callApiSuccess('OptionValue', 'get', [ + 'option_group_id' => 'activity_type', + 'name' => 'Medical evaluation', + ])['id']; + $this->callApiSuccess('OptionValue', 'create', [ + 'id' => $activity_type_id, + 'label' => 'Medical evaluation changed', + ]); + + $p = new CRM_Case_XMLProcessor_Process(); + $xml = $p->retrieve('housing_support'); + + // Test getting the `name`s + $activityTypes = $p->activityTypes($xml->ActivityTypes, FALSE, FALSE, FALSE); + $this->assertEquals( + [ + 13 => 'Open Case', + 55 => 'Medical evaluation', + 56 => 'Mental health evaluation', + 57 => 'Secure temporary housing', + 60 => 'Income and benefits stabilization', + 58 => 'Long-term housing plan', + 14 => 'Follow up', + 15 => 'Change Case Type', + 16 => 'Change Case Status', + 18 => 'Change Case Start Date', + 25 => 'Link Cases', + ], + $activityTypes + ); + + // While we're here and have the `name`s check the editable types in + // Settings.xml which is something that gets called reasonably often + // thru CRM_Case_XMLProcessor_Process::activityTypes(). + $activityTypeValues = array_flip($activityTypes); + $xml = $p->retrieve('Settings'); + $settings = $p->activityTypes($xml->ActivityTypes, FALSE, FALSE, 'edit'); + $this->assertEquals( + [ + 'edit' => [ + 0 => $activityTypeValues['Change Case Status'], + 1 => $activityTypeValues['Change Case Start Date'], + ], + ], + $settings + ); + + // Now get `label`s + $xml = $p->retrieve('housing_support'); + $activityTypes = $p->activityTypes($xml->ActivityTypes, FALSE, TRUE, FALSE); + $this->assertEquals( + [ + 13 => 'Open Case', + 55 => 'Medical evaluation changed', + 56 => 'Mental health evaluation', + 57 => 'Secure temporary housing', + 60 => 'Income and benefits stabilization', + 58 => 'Long-term housing plan', + 14 => 'Follow up', + 15 => 'Change Case Type', + 16 => 'Change Case Status', + 18 => 'Change Case Start Date', + 25 => 'Link Cases', + ], + $activityTypes + ); + } + } -- 2.25.1