4 * Class CRM_Core_BAO_CustomValueTableTest
7 class CRM_Core_BAO_CustomValueTableTest
extends CiviUnitTestCase
{
9 public function tearDown(): void
{
10 $this->quickCleanup(['civicrm_file', 'civicrm_entity_file'], TRUE);
15 * Test store function for country.
17 public function testStoreCountry() {
19 $contactID = $this->individualCreate();
20 $customGroup = $this->customGroupCreate();
22 'custom_group_id' => $customGroup['id'],
23 'data_type' => 'Country',
24 'html_type' => 'Select Country',
25 'default_value' => '',
28 $customField = $this->customFieldCreate($fields);
31 $customField['id'] => [
34 'custom_field_id' => $customField['id'],
35 'custom_group_id' => $customGroup['id'],
36 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
37 'column_name' => $customField['values'][$customField['id']]['column_name'],
42 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
46 * Test store function for file.
48 public function testStoreFile() {
49 $contactID = $this->individualCreate();
50 $file = $this->callAPISuccess('File', 'create', ['uri' => 'dummy_data']);
51 $customGroup = $this->customGroupCreate();
53 'custom_group_id' => $customGroup['id'],
54 'data_type' => 'File',
55 'html_type' => 'File',
56 'default_value' => '',
59 $customField = $this->customFieldCreate($fields);
62 $customField['id'] => [
63 'value' => 'i/contact_house.png',
65 'custom_field_id' => $customField['id'],
66 'custom_group_id' => $customGroup['id'],
67 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
68 'column_name' => $customField['values'][$customField['id']]['column_name'],
69 'file_id' => $file['id'],
73 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
77 * Test store function for state province.
79 public function testStoreStateProvince(): void
{
80 $contactID = $this->individualCreate();
81 $customGroup = $this->customGroupCreate();
83 'custom_group_id' => $customGroup['id'],
84 'data_type' => 'StateProvince',
85 'html_type' => 'Select',
86 'default_value' => '',
89 $customField = $this->customFieldCreate($fields);
92 $customField['id'] => [
94 'type' => 'StateProvince',
95 'custom_field_id' => $customField['id'],
96 'custom_group_id' => $customGroup['id'],
97 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
98 'column_name' => $customField['values'][$customField['id']]['column_name'],
103 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
107 * Test store function for date.
109 public function testStoreDate(): void
{
111 $contactID = $this->individualCreate();
112 $customGroup = $this->customGroupCreate();
114 'custom_group_id' => $customGroup['id'],
115 'data_type' => 'Date',
116 'html_type' => 'Select Date',
117 'default_value' => '',
120 $customField = $this->customFieldCreate($fields);
123 $customField['id'] => [
124 'value' => '20080608000000',
126 'custom_field_id' => $customField['id'],
127 'custom_group_id' => $customGroup['id'],
128 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
129 'column_name' => $customField['values'][$customField['id']]['column_name'],
134 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
138 * Test store function for rich text editor.
140 public function testStoreRichTextEditor(): void
{
142 $contactID = $this->individualCreate();
143 $customGroup = $this->customGroupCreate();
145 'custom_group_id' => $customGroup['id'],
146 'html_type' => 'RichTextEditor',
147 'data_type' => 'Memo',
150 $customField = $this->customFieldCreate($fields);
153 $customField['id'] => [
154 'value' => '<p><strong>This is a <u>test</u></p>',
156 'custom_field_id' => $customField['id'],
157 'custom_group_id' => $customGroup['id'],
158 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
159 'column_name' => $customField['values'][$customField['id']]['column_name'],
164 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
168 * Test store function for multiselect int.
170 * @throws \API_Exception
172 public function testStoreMultiSelectInt(): void
{
173 $contactID = $this->individualCreate();
174 $customGroup = $this->customGroupCreate();
176 'custom_group_id' => $customGroup['id'],
177 'data_type' => 'Int',
178 'html_type' => 'Multi-Select',
183 'default_value' => '',
186 $customField = $this->customFieldCreate($fields);
190 $customField['id'] => [
191 'value' => CRM_Core_DAO
::VALUE_SEPARATOR
. '1' . CRM_Core_DAO
::VALUE_SEPARATOR
. '2' . CRM_Core_DAO
::VALUE_SEPARATOR
,
193 'custom_field_id' => $customField['id'],
194 'custom_group_id' => $customGroup['id'],
195 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
196 'column_name' => $customField['values'][$customField['id']]['column_name'],
202 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
204 $customData = \Civi\Api4\Contact
::get(FALSE)
205 ->addSelect('new_custom_group.Custom_Field')
206 ->addWhere('id', '=', $contactID)
207 ->execute()->first();
208 $this->assertEquals([1, 2], $customData['new_custom_group.Custom_Field']);
212 * Test getEntityValues function for stored value.
214 public function testGetEntityValues(): void
{
216 $contactID = $this->individualCreate();
217 $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
219 'custom_group_id' => $customGroup['id'],
220 'html_type' => 'RichTextEditor',
221 'data_type' => 'Memo',
224 $customField = $this->customFieldCreate($fields);
227 $customField['id'] => [
228 'value' => '<p><strong>This is a <u>test</u></p>',
230 'custom_field_id' => $customField['id'],
231 'custom_group_id' => $customGroup['id'],
232 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
233 'column_name' => $customField['values'][$customField['id']]['column_name'],
238 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
240 $entityValues = CRM_Core_BAO_CustomValueTable
::getEntityValues($contactID, 'Individual');
242 $this->assertEquals('<p><strong>This is a <u>test</u></p>', $entityValues[$customField['id']],
243 'Checking same for returned value.'
247 public function testCustomGroupMultiple(): void
{
248 $contactID = $this->individualCreate();
249 $customGroup = $this->customGroupCreate();
252 'custom_group_id' => $customGroup['id'],
253 'data_type' => 'String',
254 'html_type' => 'Text',
257 $customField = $this->customFieldCreate($fields);
260 'entityID' => $contactID,
261 'custom_' . $customField['id'] . '_-1' => 'First String',
263 $error = CRM_Core_BAO_CustomValueTable
::setValues($params);
266 'entityID' => $contactID,
267 'custom_' . $customField['id'] => 1,
269 $result = CRM_Core_BAO_CustomValueTable
::getValues($newParams);
271 $this->assertEquals($params['custom_' . $customField['id'] . '_-1'], $result['custom_' . $customField['id']]);
272 $this->assertEquals($params['entityID'], $result['entityID']);