From 1453c6db862950c135452bd36d20aa7f0e95c795 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Thu, 23 Apr 2020 13:50:25 -0400 Subject: [PATCH] OptionValues - Munge custom value names and return names in validate context Fixes a couple core bugs, where option value names were not being munged by default, and custom field options were not being returned correctly in the 'validate' context. This is the core change as part of APIV4 work See https://lab.civicrm.org/dev/core/-/issues/1705 --- CRM/Core/BAO/CustomField.php | 2 +- CRM/Core/BAO/OptionValue.php | 2 +- tests/phpunit/Civi/CCase/SequenceListenerTest.php | 10 +++++----- tests/phpunit/api/v3/CustomValueTest.php | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 8152bf31ac..4293acf293 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -223,7 +223,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { if (!empty($this->option_group_id)) { $options = CRM_Core_OptionGroup::valuesByID( - $this->option_group_id, FALSE, FALSE, FALSE, 'label', !($context == 'validate' || $context == 'get') + $this->option_group_id, FALSE, FALSE, FALSE, $context == 'validate' ? 'name' : 'label', !($context == 'validate' || $context == 'get') ); } elseif ($this->data_type === 'StateProvince') { diff --git a/CRM/Core/BAO/OptionValue.php b/CRM/Core/BAO/OptionValue.php index 3f4031b98d..d12967b938 100644 --- a/CRM/Core/BAO/OptionValue.php +++ b/CRM/Core/BAO/OptionValue.php @@ -59,7 +59,7 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue { $params['label'] = $params['name']; } if (CRM_Utils_Array::value('name', $params, NULL) === NULL) { - $params['name'] = $params['label']; + $params['name'] = CRM_Utils_String::titleToVar($params['label']); } if (CRM_Utils_Array::value('weight', $params, NULL) === NULL) { $params['weight'] = self::getDefaultWeight($params); diff --git a/tests/phpunit/Civi/CCase/SequenceListenerTest.php b/tests/phpunit/Civi/CCase/SequenceListenerTest.php index 026b57556a..1d3afb246e 100644 --- a/tests/phpunit/Civi/CCase/SequenceListenerTest.php +++ b/tests/phpunit/Civi/CCase/SequenceListenerTest.php @@ -70,14 +70,14 @@ class SequenceListenerTest extends \CiviCaseTestCase { \CRM_Utils_Time::setTime('2013-11-30 03:00:00'); $this->callApiSuccess('Activity', 'create', [ 'id' => self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'id'), - 'status_id' => $actStatuses['Skip Activity'], + 'status_id' => $actStatuses['Skip_Activity'], ]); $analyzer->flush(); $this->assertEquals($caseStatuses['Open'], self::ag($analyzer->getCase(), 'status_id')); $this->assertApproxTime('2013-11-30 01:00:00', self::ag($analyzer->getSingleActivity('Medical evaluation'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Medical evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 02:00:00', self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'activity_date_time')); - $this->assertEquals($actStatuses['Skip Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); + $this->assertEquals($actStatuses['Skip_Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 03:00:00', self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'activity_date_time')); $this->assertEquals($actStatuses['Scheduled'], self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'status_id')); @@ -94,7 +94,7 @@ class SequenceListenerTest extends \CiviCaseTestCase { $this->assertApproxTime('2013-11-30 01:00:00', self::ag($analyzer->getSingleActivity('Medical evaluation'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Medical evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 02:00:00', self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'activity_date_time')); - $this->assertEquals($actStatuses['Skip Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); + $this->assertEquals($actStatuses['Skip_Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 03:00:00', self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'activity_date_time')); $this->assertEquals($actStatuses['Scheduled'], self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'status_id')); $this->assertApproxTime('2013-11-30 04:00:00', self::ag($analyzer->getSingleActivity('Follow up'), 'activity_date_time')); @@ -110,7 +110,7 @@ class SequenceListenerTest extends \CiviCaseTestCase { $this->assertApproxTime('2013-11-30 01:00:00', self::ag($analyzer->getSingleActivity('Medical evaluation'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Medical evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 02:00:00', self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'activity_date_time')); - $this->assertEquals($actStatuses['Skip Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); + $this->assertEquals($actStatuses['Skip_Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 03:00:00', self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'status_id')); $this->assertApproxTime('2013-11-30 04:00:00', self::ag($analyzer->getSingleActivity('Follow up'), 'activity_date_time')); @@ -127,7 +127,7 @@ class SequenceListenerTest extends \CiviCaseTestCase { $this->assertApproxTime('2013-11-30 01:00:00', self::ag($analyzer->getSingleActivity('Medical evaluation'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Medical evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 02:00:00', self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'activity_date_time')); - $this->assertEquals($actStatuses['Skip Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); + $this->assertEquals($actStatuses['Skip_Activity'], self::ag($analyzer->getSingleActivity('Mental health evaluation'), 'status_id')); $this->assertApproxTime('2013-11-30 03:00:00', self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'activity_date_time')); $this->assertEquals($actStatuses['Completed'], self::ag($analyzer->getSingleActivity('Secure temporary housing'), 'status_id')); $this->assertApproxTime('2013-11-30 04:00:00', self::ag($analyzer->getSingleActivity('Follow up'), 'activity_date_time')); diff --git a/tests/phpunit/api/v3/CustomValueTest.php b/tests/phpunit/api/v3/CustomValueTest.php index e7bb8d2a0a..02c16401c4 100644 --- a/tests/phpunit/api/v3/CustomValueTest.php +++ b/tests/phpunit/api/v3/CustomValueTest.php @@ -397,9 +397,9 @@ class api_v3_CustomValueTest extends CiviUnitTestCase { $this->callAPISuccess('OptionValue', 'create', [ 'value' => 'one-modified', 'option_group_id' => $selectField['option_group_id'], - 'name' => 'string 1', + 'label' => 'string 1', 'options' => [ - 'match-mandatory' => ['option_group_id', 'name'], + 'match-mandatory' => ['option_group_id', 'label'], ], ]); -- 2.25.1