From c4bfbde35f7848645ada6cb6f2066f2c2b639606 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sat, 11 Jan 2020 13:21:24 -0500 Subject: [PATCH] Add caseType test --- CRM/Case/BAO/CaseType.php | 4 ++-- tests/phpunit/api/v3/CaseTypeTest.php | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CRM/Case/BAO/CaseType.php b/CRM/Case/BAO/CaseType.php index 415a079a14..a65deb470b 100644 --- a/CRM/Case/BAO/CaseType.php +++ b/CRM/Case/BAO/CaseType.php @@ -167,7 +167,7 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { foreach ($definition['caseRoles'] as $values) { $xmlFile .= "\n"; foreach ($values as $key => $value) { - $xmlFile .= "<{$key}>" . (is_array($value) ? implode(',', array_map(['\CRM_Case_BAO_CaseType', 'encodeXmlString'], $value)) : self::encodeXmlString($value)) . "\n"; + $xmlFile .= "<{$key}>" . ($key == 'groups' ? implode(',', array_map(['\CRM_Case_BAO_CaseType', 'encodeXmlString'], (array) $value)) : self::encodeXmlString($value)) . "\n"; } $xmlFile .= "\n"; } @@ -180,7 +180,7 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { if (!empty($definition['activityAsgmtGrps'])) { $xmlFile .= "\n"; - foreach ($definition['activityAsgmtGrps'] as $value) { + foreach ((array) $definition['activityAsgmtGrps'] as $value) { $xmlFile .= "$value\n"; } $xmlFile .= "\n"; diff --git a/tests/phpunit/api/v3/CaseTypeTest.php b/tests/phpunit/api/v3/CaseTypeTest.php index 22476c745e..6039285761 100644 --- a/tests/phpunit/api/v3/CaseTypeTest.php +++ b/tests/phpunit/api/v3/CaseTypeTest.php @@ -241,4 +241,31 @@ class api_v3_CaseTypeTest extends CiviCaseTestCase { $this->assertEquals($template['definition']['statuses'], array_values($result['values'])); } + public function testDefinitionGroups() { + $gid1 = $this->groupCreate(['name' => 'testDefinitionGroups1', 'title' => 'testDefinitionGroups1']); + $gid2 = $this->groupCreate(['name' => 'testDefinitionGroups2', 'title' => 'testDefinitionGroups2']); + $def = $this->fixtures['Application_with_Definition']; + $def['definition']['caseRoles'][] = [ + 'name' => 'Second role', + 'groups' => ['testDefinitionGroups1', 'testDefinitionGroups2'], + ]; + $def['definition']['caseRoles'][] = [ + 'name' => 'Third role', + 'groups' => 'testDefinitionGroups2', + ]; + $def['definition']['activityAsgmtGrps'] = $gid1; + $createCaseType = $this->callAPISuccess('CaseType', 'create', $def); + $caseType = $this->callAPISuccess('CaseType', 'getsingle', ['id' => $createCaseType['id']]); + + // Assert the group id got converted to array with name not id + $this->assertEquals(['testDefinitionGroups1'], $caseType['definition']['activityAsgmtGrps']); + + // Assert multiple groups are stored + $this->assertEquals(['testDefinitionGroups1', 'testDefinitionGroups2'], $caseType['definition']['caseRoles'][1]['groups']); + + // Assert single group got converted to array + $this->assertEquals(['testDefinitionGroups2'], $caseType['definition']['caseRoles'][2]['groups']); + + } + } -- 2.25.1