Skip to content

Commit

Permalink
Merge pull request #15335 from jitendrapurohit/13365-test
Browse files Browse the repository at this point in the history
Add getdisplayvalue api with unit test.
  • Loading branch information
colemanw authored Sep 27, 2019
2 parents 30a3000 + afbd0c2 commit 53e64ff
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
47 changes: 47 additions & 0 deletions api/v3/CustomValue.php
Original file line number Diff line number Diff line change
Expand Up @@ -394,3 +394,50 @@ function civicrm_api3_custom_value_gettree($params) {
}
return civicrm_api3_create_success($result, $params, 'CustomValue', 'gettree');
}

/**
* CustomValue.getdisplayvalue API specification
*
* @param array $spec description of fields supported by this API call
*/
function _civicrm_api3_custom_value_getdisplayvalue_spec(&$spec) {
$spec['entity_id'] = [
'title' => 'Entity Id',
'description' => 'Id of entity',
'type' => CRM_Utils_Type::T_INT,
'api.required' => 1,
];
$spec['custom_field_id'] = [
'title' => 'Custom Field ID',
'description' => 'Id of custom field',
'type' => CRM_Utils_Type::T_INT,
'api.required' => 1,
];
$spec['custom_field_value'] = [
'title' => 'Custom Field value',
'description' => 'Specify the value of the custom field to return as displayed value',
'type' => CRM_Utils_Type::T_STRING,
'api.required' => 0,
];
}

/**
* CustomValue.getdisplayvalue API
*
* @param array $params
*
* @return array API result
* @throws \CiviCRM_API3_Exception
*/
function civicrm_api3_custom_value_getdisplayvalue($params) {
if (empty($params['custom_field_value'])) {
$params['custom_field_value'] = civicrm_api3('CustomValue', 'getsingle', [
'return' => ["custom_{$params['custom_field_id']}"],
'entity_id' => $params['entity_id'],
]);
$params['custom_field_value'] = $params['custom_field_value']['latest'];
}
$values[$params['custom_field_id']]['display'] = CRM_Core_BAO_CustomField::displayValue($params['custom_field_value'], $params['custom_field_id'], CRM_Utils_Array::value('entity_id', $params));
$values[$params['custom_field_id']]['raw'] = $params['custom_field_value'];
return civicrm_api3_create_success($values, $params, 'CustomValue', 'getdisplayvalue');
}
31 changes: 31 additions & 0 deletions tests/phpunit/api/v3/CustomValueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -620,4 +620,35 @@ public function testGetCustomValueReturnMultipleList() {
$this->assertEquals(count($customFieldValues), $result['count']);
}

/**
* Test getdisplayvalue api and verify if it returns
* the custom text for display.
*/
public function testGetDisplayValue() {
list($cid, $customFieldValues) = $this->_testGetCustomValueMultiple();
foreach ($customFieldValues as $field => $value) {
list(, $customFieldID) = explode("_", $field);
$result = $this->callAPISuccess('CustomValue', 'getdisplayvalue', [
'entity_id' => $cid,
'custom_field_id' => $customFieldID,
]);
$expectedValue = [
'display' => $value,
'raw' => $value,
];
$this->checkArrayEquals($result['values'][$customFieldID], $expectedValue);

$customDisplayValue = $this->callAPISuccess('CustomValue', 'getdisplayvalue', [
'entity_id' => $cid,
'custom_field_id' => $customFieldID,
'custom_field_value' => "Test Custom Display - {$value}",
]);
$expectedValue = [
'display' => "Test Custom Display - {$value}",
'raw' => "Test Custom Display - {$value}",
];
$this->checkArrayEquals($customDisplayValue['values'][$customFieldID], $expectedValue);
}
}

}

0 comments on commit 53e64ff

Please sign in to comment.