From 0ab5635068ec89f28f37189ab54cac42e71814ae Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 12 Mar 2017 21:59:37 -0400 Subject: [PATCH] CRM-20102 - Tests --- CRM/Case/BAO/Case.php | 5 ++-- api/v3/Case.php | 4 +-- tests/phpunit/api/v3/CaseTest.php | 48 +++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 8a8ecc6606..b240d85e8b 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1214,10 +1214,9 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c public static function getRelatedContacts($caseID, $skipDetails = FALSE) { $caseRoles = array(); if (!$skipDetails) { - $caseInfo = civicrm_api('Case', 'getsingle', array( + $caseInfo = civicrm_api3('Case', 'getsingle', array( 'id' => $caseID, - 'version' => 3, - 'return' => array('case_type_id', 'case_type_id.definition'), + 'return' => array('case_type_id', 'case_type_id.name', 'case_type_id.definition'), )); if (!empty($caseInfo['case_type_id.definition']['caseRoles'])) { $caseRoles = CRM_Utils_Array::rekey($caseInfo['case_type_id.definition']['caseRoles'], 'name'); diff --git a/api/v3/Case.php b/api/v3/Case.php index fe5e96c73b..ebecf78666 100644 --- a/api/v3/Case.php +++ b/api/v3/Case.php @@ -425,8 +425,8 @@ function _civicrm_api3_case_read(&$case, $options) { list($xml) = CRM_Utils_XML::parseString($case['case_type_id.definition']); } else { - $caseType = !empty($case['case_type_id']) ? $case['case_type_id'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $case['id'], 'case_type_id'); - $caseTypeName = !empty($case['case_type_id.name']) ? $case['case_type_id.name'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $caseType['id'], 'name'); + $caseTypeId = !empty($case['case_type_id']) ? $case['case_type_id'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $case['id'], 'case_type_id'); + $caseTypeName = !empty($case['case_type_id.name']) ? $case['case_type_id.name'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $caseTypeId, 'name'); $xml = CRM_Case_XMLRepository::singleton()->retrieve($caseTypeName); } $case['case_type_id.definition'] = array(); diff --git a/tests/phpunit/api/v3/CaseTest.php b/tests/phpunit/api/v3/CaseTest.php index 7504a95cf8..7cf8a86744 100644 --- a/tests/phpunit/api/v3/CaseTest.php +++ b/tests/phpunit/api/v3/CaseTest.php @@ -435,4 +435,52 @@ class api_v3_CaseTest extends CiviCaseTestCase { $this->assertEquals($case1['id'], $result['id']); } + public function testCaseGetWithRoles() { + $case1 = $this->callAPISuccess('Case', 'create', array( + 'contact_id' => 17, + 'subject' => "Test case with roles", + 'case_type_id' => $this->caseTypeId, + 'status_id' => "Open", + )); + $result = $this->callAPISuccessGetSingle('Case', array( + 'id' => $case1['id'], + 'status_id' => "Open", + 'return' => array('contacts'), + )); + foreach ($result['contacts'] as $contact) { + if ($contact['role'] == 'Client') { + $this->assertEquals(17, $contact['contact_id']); + } + elseif ($contact['role'] == 'Homeless Services Coordinator') { + $this->assertEquals(1, $contact['creator']); + $this->assertEquals(1, $contact['manager']); + } + } + } + + public function testCaseGetWithDefinition() { + $case1 = $this->callAPISuccess('Case', 'create', array( + 'contact_id' => 17, + 'subject' => "Test case with definition", + 'case_type_id' => $this->caseTypeId, + 'status_id' => "Open", + )); + $result1 = $this->callAPISuccessGetSingle('Case', array( + 'id' => $case1['id'], + 'status_id' => "Open", + 'return' => array('case_type_id.definition'), + )); + $result2 = $this->callAPISuccessGetSingle('Case', array( + 'id' => $case1['id'], + 'status_id' => "Open", + 'return' => array('case_type_id', 'case_type_id.definition'), + )); + $this->assertEquals($result1['case_type_id.definition'], $result2['case_type_id.definition']); + $def = $result1['case_type_id.definition']; + $this->assertEquals(array('name' => 'Open Case', 'max_instances' => 1), $def['activityTypes'][0]); + $this->assertNotEmpty($def['activitySets'][0]['activityTypes']); + $this->assertNotEmpty($def['caseRoles'][0]['manager']); + $this->assertNotEmpty($def['caseRoles'][0]['creator']); + } + } -- 2.25.1