4 * Class CRM_Core_BAO_CustomValueTableTest
7 class CRM_Core_BAO_CustomValueTableTest
extends CiviUnitTestCase
{
10 * Test store function for country.
12 public function testStoreCountry() {
14 $contactID = $this->individualCreate();
15 $customGroup = $this->customGroupCreate();
17 'custom_group_id' => $customGroup['id'],
18 'data_type' => 'Country',
19 'html_type' => 'Select Country',
20 'default_value' => '',
23 $customField = $this->customFieldCreate($fields);
26 $customField['id'] => [
29 'custom_field_id' => $customField['id'],
30 'custom_group_id' => $customGroup['id'],
31 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
32 'column_name' => $customField['values'][$customField['id']]['column_name'],
37 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
39 $this->customFieldDelete($customField['id']);
40 $this->customGroupDelete($customGroup['id']);
41 $this->contactDelete($contactID);
45 * Test store function for file.
47 public function testStoreFile() {
48 $contactID = $this->individualCreate();
49 $file = $this->callAPISuccess('File', 'create', ['uri' => 'dummy_data']);
50 $customGroup = $this->customGroupCreate();
52 'custom_group_id' => $customGroup['id'],
53 'data_type' => 'File',
54 'html_type' => 'File',
55 'default_value' => '',
58 $customField = $this->customFieldCreate($fields);
61 $customField['id'] => [
62 'value' => 'i/contact_house.png',
64 'custom_field_id' => $customField['id'],
65 'custom_group_id' => $customGroup['id'],
66 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
67 'column_name' => $customField['values'][$customField['id']]['column_name'],
68 'file_id' => $file['id'],
72 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
74 $this->customFieldDelete($customField['id']);
75 $this->customGroupDelete($customGroup['id']);
76 $this->contactDelete($contactID);
80 * Test store function for state province.
82 public function testStoreStateProvince() {
83 $contactID = $this->individualCreate();
84 $customGroup = $this->customGroupCreate();
86 'custom_group_id' => $customGroup['id'],
87 'data_type' => 'StateProvince',
88 'html_type' => 'Select',
89 'default_value' => '',
92 $customField = $this->customFieldCreate($fields);
95 $customField['id'] => [
97 'type' => 'StateProvince',
98 'custom_field_id' => $customField['id'],
99 'custom_group_id' => $customGroup['id'],
100 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
101 'column_name' => $customField['values'][$customField['id']]['column_name'],
106 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
108 $this->customFieldDelete($customField['id']);
109 $this->customGroupDelete($customGroup['id']);
110 $this->contactDelete($contactID);
114 * Test store function for date.
116 public function testStoreDate() {
118 $contactID = $this->individualCreate();
119 $customGroup = $this->customGroupCreate();
121 'custom_group_id' => $customGroup['id'],
122 'data_type' => 'Date',
123 'html_type' => 'Select Date',
124 'default_value' => '',
127 $customField = $this->customFieldCreate($fields);
130 $customField['id'] => [
131 'value' => '20080608000000',
133 'custom_field_id' => $customField['id'],
134 'custom_group_id' => $customGroup['id'],
135 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
136 'column_name' => $customField['values'][$customField['id']]['column_name'],
141 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
143 $this->customFieldDelete($customField['id']);
144 $this->customGroupDelete($customGroup['id']);
145 $this->contactDelete($contactID);
149 * Test store function for rich text editor.
151 public function testStoreRichTextEditor() {
153 $contactID = $this->individualCreate();
154 $customGroup = $this->customGroupCreate();
156 'custom_group_id' => $customGroup['id'],
157 'html_type' => 'RichTextEditor',
158 'data_type' => 'Memo',
161 $customField = $this->customFieldCreate($fields);
164 $customField['id'] => [
165 'value' => '<p><strong>This is a <u>test</u></p>',
167 'custom_field_id' => $customField['id'],
168 'custom_group_id' => $customGroup['id'],
169 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
170 'column_name' => $customField['values'][$customField['id']]['column_name'],
175 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
177 $this->customFieldDelete($customField['id']);
178 $this->customGroupDelete($customGroup['id']);
179 $this->contactDelete($contactID);
183 * Test store function for multiselect int.
185 public function testStoreMultiSelectInt() {
186 $contactID = $this->individualCreate();
187 $customGroup = $this->customGroupCreate();
189 'custom_group_id' => $customGroup['id'],
190 'data_type' => 'Int',
191 'html_type' => 'Multi-Select',
196 'default_value' => '',
199 $customField = $this->customFieldCreate($fields);
203 $customField['id'] => [
204 'value' => CRM_Core_DAO
::VALUE_SEPARATOR
. '1' . CRM_Core_DAO
::VALUE_SEPARATOR
. '2' . CRM_Core_DAO
::VALUE_SEPARATOR
,
206 'custom_field_id' => $customField['id'],
207 'custom_group_id' => $customGroup['id'],
208 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
209 'column_name' => $customField['values'][$customField['id']]['column_name'],
215 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
217 $customData = \Civi\Api4\Contact
::get(FALSE)
218 ->addSelect('new_custom_group.Custom_Field')
219 ->addWhere('id', '=', $contactID)
220 ->execute()->first();
221 $this->assertEquals([1, 2], $customData['new_custom_group.Custom_Field']);
223 $this->customFieldDelete($customField['id']);
224 $this->customGroupDelete($customGroup['id']);
225 $this->contactDelete($contactID);
229 * Test getEntityValues function for stored value.
231 public function testGetEntityValues() {
234 $contactID = $this->individualCreate();
235 $customGroup = $this->customGroupCreate(['extends' => 'Individual']);
237 'custom_group_id' => $customGroup['id'],
238 'html_type' => 'RichTextEditor',
239 'data_type' => 'Memo',
242 $customField = $this->customFieldCreate($fields);
245 $customField['id'] => [
246 'value' => '<p><strong>This is a <u>test</u></p>',
248 'custom_field_id' => $customField['id'],
249 'custom_group_id' => $customGroup['id'],
250 'table_name' => $customGroup['values'][$customGroup['id']]['table_name'],
251 'column_name' => $customField['values'][$customField['id']]['column_name'],
256 CRM_Core_BAO_CustomValueTable
::store($params, 'civicrm_contact', $contactID);
258 $entityValues = CRM_Core_BAO_CustomValueTable
::getEntityValues($contactID, 'Individual');
260 $this->assertEquals($entityValues[$customField['id']], '<p><strong>This is a <u>test</u></p>',
261 'Checking same for returned value.'
263 $this->customFieldDelete($customField['id']);
264 $this->customGroupDelete($customGroup['id']);
265 $this->contactDelete($contactID);
268 public function testCustomGroupMultiple() {
270 $contactID = $this->individualCreate();
271 $customGroup = $this->customGroupCreate();
274 'custom_group_id' => $customGroup['id'],
275 'data_type' => 'String',
276 'html_type' => 'Text',
279 $customField = $this->customFieldCreate($fields);
282 'entityID' => $contactID,
283 'custom_' . $customField['id'] . '_-1' => 'First String',
285 $error = CRM_Core_BAO_CustomValueTable
::setValues($params);
288 'entityID' => $contactID,
289 'custom_' . $customField['id'] => 1,
291 $result = CRM_Core_BAO_CustomValueTable
::getValues($newParams);
293 $this->assertEquals($params['custom_' . $customField['id'] . '_-1'], $result['custom_' . $customField['id']]);
294 $this->assertEquals($params['entityID'], $result['entityID']);
296 $this->customFieldDelete($customField['id']);
297 $this->customGroupDelete($customGroup['id']);
298 $this->contactDelete($contactID);