Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
7d61e75f | 4 | | Copyright CiviCRM LLC. All rights reserved. | |
6a488035 | 5 | | | |
7d61e75f TO |
6 | | This work is published under the GNU AGPLv3 license with some | |
7 | | permitted exceptions and without any warranty. For full license | | |
8 | | and copyright information, see https://civicrm.org/licensing | | |
6a488035 | 9 | +--------------------------------------------------------------------+ |
d25dd0ee | 10 | */ |
6a488035 TO |
11 | |
12 | /** | |
13 | * | |
14 | * @package CRM | |
ca5cec67 | 15 | * @copyright CiviCRM LLC https://civicrm.org/licensing |
6a488035 TO |
16 | */ |
17 | ||
4cbe18b8 EM |
18 | /** |
19 | * Class CRM_Core_BAO_CustomValueTest | |
acb109b7 | 20 | * @group headless |
4cbe18b8 | 21 | */ |
6a488035 | 22 | class CRM_Core_BAO_CustomValueTest extends CiviUnitTestCase { |
39b959db | 23 | |
00be9182 | 24 | public function testTypeCheckWithValidInput() { |
6a488035 | 25 | |
9099cab3 | 26 | $values = [ |
6a488035 TO |
27 | 'Memo' => 'Test1', |
28 | 'String' => 'Test', | |
29 | 'Int' => 1, | |
30 | 'Float' => 10.00, | |
31 | 'Date' => '2008-06-24', | |
6c6e6187 | 32 | 'Boolean' => TRUE, |
6a488035 TO |
33 | 'StateProvince' => 'California', |
34 | 'Country' => 'US', | |
35 | 'Link' => 'http://civicrm.org', | |
9099cab3 | 36 | ]; |
6a488035 TO |
37 | foreach ($values as $type => $value) { |
38 | $valid = CRM_Core_BAO_CustomValue::typecheck($type, $value); | |
39 | if ($type == 'Date') { | |
40 | $this->assertEquals($valid, '2008-06-24', 'Checking type ' . $type . ' for returned CustomField Type.'); | |
41 | } | |
42 | else { | |
6c6e6187 | 43 | $this->assertEquals($valid, TRUE, 'Checking type ' . $type . ' for returned CustomField Type.'); |
6a488035 TO |
44 | } |
45 | } | |
46 | } | |
47 | ||
00be9182 | 48 | public function testTypeCheckWithInvalidInput() { |
9099cab3 | 49 | $values = ['check1' => 'chk']; |
6a488035 TO |
50 | foreach ($values as $type => $value) { |
51 | $valid = CRM_Core_BAO_CustomValue::typecheck($type, $value); | |
52 | $this->assertEquals($valid, NULL, 'Checking invalid type for returned CustomField Type.'); | |
53 | } | |
54 | } | |
55 | ||
00be9182 | 56 | public function testTypeCheckWithWrongInput() { |
9099cab3 | 57 | $values = [ |
6a488035 TO |
58 | 'String' => 1, |
59 | 'Boolean' => 'US', | |
9099cab3 | 60 | ]; |
6a488035 TO |
61 | foreach ($values as $type => $value) { |
62 | $valid = CRM_Core_BAO_CustomValue::typecheck($type, $value); | |
63 | $this->assertEquals($valid, NULL, 'Checking type ' . $type . ' for returned CustomField Type.'); | |
64 | } | |
65 | } | |
66 | ||
00be9182 | 67 | public function testTypeToFieldWithValidInput() { |
9099cab3 | 68 | $values = [ |
6a488035 TO |
69 | 'String' => 'char_data', |
70 | 'File' => 'char_data', | |
71 | 'Boolean' => 'int_data', | |
72 | 'Int' => 'int_data', | |
73 | 'StateProvince' => 'int_data', | |
74 | 'Country' => 'int_data', | |
75 | 'Float' => 'float_data', | |
76 | 'Memo' => 'memo_data', | |
77 | 'Money' => 'decimal_data', | |
78 | 'Date' => 'date_data', | |
79 | 'Link' => 'char_data', | |
9099cab3 | 80 | ]; |
6a488035 TO |
81 | |
82 | foreach ($values as $type => $value) { | |
83 | $valid = CRM_Core_BAO_CustomValue::typeToField($type); | |
84 | $this->assertEquals($valid, $value, 'Checking type ' . $type . ' for returned CustomField Type.'); | |
85 | } | |
86 | } | |
87 | ||
00be9182 | 88 | public function testTypeToFieldWithWrongInput() { |
9099cab3 | 89 | $values = [ |
6a488035 TO |
90 | 'String' => 'memo_data', |
91 | 'File' => 'date_data', | |
92 | 'Boolean' => 'char_data', | |
9099cab3 | 93 | ]; |
6a488035 TO |
94 | foreach ($values as $type => $value) { |
95 | $valid = CRM_Core_BAO_CustomValue::typeToField($type); | |
96 | $this->assertNotEquals($valid, $value, 'Checking type ' . $type . ' for returned CustomField Type.'); | |
97 | } | |
98 | } | |
99 | ||
71dfa06c | 100 | public function testFixCustomFieldValue() { |
9099cab3 | 101 | $customGroup = $this->customGroupCreate(['extends' => 'Individual']); |
9099cab3 | 102 | $params = [ |
2fd2f7b8 | 103 | 'email' => 'abc@example.com', |
9099cab3 | 104 | ]; |
6a488035 | 105 | |
71dfa06c MD |
106 | foreach ([ |
107 | [ | |
108 | 'custom_group_id' => $customGroup['id'], | |
109 | 'data_type' => 'Memo', | |
110 | 'html_type' => 'TextArea', | |
111 | 'default_value' => '', | |
112 | 'search_value' => '%note%', | |
113 | 'expected_value' => ['LIKE' => '%note%'], | |
114 | ], | |
115 | [ | |
116 | 'custom_group_id' => $customGroup['id'], | |
117 | 'data_type' => 'String', | |
118 | 'html_type' => 'Autocomplete-Select', | |
119 | 'default_value' => '', | |
120 | 'search_value' => 'R,Y', | |
121 | 'expected_value' => ['IN' => ['R', 'Y']], | |
122 | 'option_values' => [ | |
123 | [ | |
124 | 'label' => 'Red', | |
125 | 'value' => 'R', | |
126 | 'weight' => 1, | |
127 | 'is_active' => 1, | |
128 | ], | |
129 | [ | |
130 | 'label' => 'Yellow', | |
131 | 'value' => 'Y', | |
132 | 'weight' => 2, | |
133 | 'is_active' => 1, | |
134 | ], | |
135 | [ | |
136 | 'label' => 'Green', | |
137 | 'value' => 'G', | |
138 | 'weight' => 3, | |
139 | 'is_active' => 1, | |
140 | ], | |
141 | ], | |
142 | ], | |
143 | ] as $field) { | |
144 | $id = $this->customFieldCreate($field)['id']; | |
145 | $customKey = 'custom_' . $id; | |
146 | $params[$customKey] = $field['search_value']; | |
147 | CRM_Core_BAO_CustomValue::fixCustomFieldValue($params); | |
148 | $this->assertEquals($params[$customKey], $field['expected_value'], 'Checking the returned value of type ' . $field['data_type']); | |
149 | ||
150 | // delete created custom field | |
151 | $this->customFieldDelete($id); | |
152 | } | |
6a488035 | 153 | |
23ead872 | 154 | $this->customGroupDelete($customGroup['id']); |
6a488035 TO |
155 | } |
156 | ||
7991e3b2 | 157 | public function testFixCustomFieldValueWithEmptyParams() { |
9099cab3 | 158 | $params = []; |
7991e3b2 | 159 | $result = CRM_Core_BAO_CustomValue::fixCustomFieldValue($params); |
6a488035 TO |
160 | $this->assertEquals($result, NULL, 'Checking the returned value of type Memo.'); |
161 | } | |
96025800 | 162 | |
6a488035 | 163 | } |