4 require_once 'CiviTest/CiviUnitTestCase.php';
6 class api_v3_OptionValueTest
extends CiviUnitTestCase
{
7 protected $_apiversion;
8 public $_eNoticeCompliant = TRUE;
10 $this->_apiversion
= 3;
14 function tearDown() {}
16 public function testGetOptionValueByID() {
17 $result = civicrm_api('option_value', 'get', array('id' => 1, 'version' => $this->_apiversion
));
18 $this->assertEquals(0, $result['is_error'], 'In line ' . __LINE__
);
19 $this->assertEquals(1, $result['count'], 'In line ' . __LINE__
);
20 $this->assertEquals(1, $result['id'], 'In line ' . __LINE__
);
23 public function testGetOptionValueByValue() {
24 $result = civicrm_api('option_value', 'get', array('option_group_id' => 1, 'value' => '1', 'version' => $this->_apiversion
));
25 $this->assertEquals(0, $result['is_error'], 'In line ' . __LINE__
);
26 $this->assertEquals(1, $result['count'], 'In line ' . __LINE__
);
27 $this->assertEquals(1, $result['id'], 'In line ' . __LINE__
);
33 function testGetOptionValueLimit() {
35 'version' => $this->_apiversion
,
37 $result = civicrm_api('option_value', 'getcount', $params);
38 $this->assertGreaterThan(1, $result, "Check more than one exists In line " . __LINE__
);
39 $params['options']['limit'] = 1;
40 $result = civicrm_api('option_value', 'getcount', $params);
41 $this->assertEquals(1, $result, "Check only 1 retrieved " . __LINE__
);
47 function testGetOptionValueOffSet() {
49 $result = civicrm_api('option_value', 'getcount', array(
50 'option_group_id' => 1,
52 'version' => $this->_apiversion
,
54 $result2 = civicrm_api('option_value', 'getcount', array(
55 'option_group_id' => 1,
57 'version' => $this->_apiversion
,
58 'options' => array('offset' => 1),
60 $this->assertGreaterThan($result2, $result);
66 function testGetSingleValueOptionValueSort() {
67 $description = "demonstrates use of Sort param (available in many api functions). Also, getsingle";
68 $subfile = 'SortOption';
69 $result = civicrm_api('option_value', 'getsingle', array(
70 'option_group_id' => 1,
71 'version' => $this->_apiversion
,
73 'sort' => 'label ASC',
78 'option_group_id' => 1,
79 'version' => $this->_apiversion
,
81 'sort' => 'label DESC',
85 $result2 = civicrm_api('option_value', 'getsingle', $params);
86 $this->documentMe($params, $result2, __FUNCTION__
, __FILE__
, $description, $subfile);
87 $this->assertGreaterThan($result['label'], $result2['label']);
91 * Try to emulate a pagination: fetch the first page of 10 options, then fetch the second page with an offset of 9 (instead of 10) and check the start of the second page is the end of the 1st one.
93 function testGetValueOptionPagination() {
95 $page1 = civicrm_api('option_value', 'get', array('options' => array('limit' => $pageSize),
96 'version' => $this->_apiversion
,
98 $page2 = civicrm_api('option_value', 'get', array(
99 'options' => array('limit' => $pageSize,
100 // if you use it for pagination, option.offset=pageSize*pageNumber
101 'offset' => $pageSize - 1,
103 'version' => $this->_apiversion
,
105 $this->assertEquals($pageSize, $page1['count'], "Check only 10 retrieved in the 1st page " . __LINE__
);
106 $this->assertEquals($pageSize, $page2['count'], "Check only 10 retrieved in the 2nd page " . __LINE__
);
108 $last = array_pop($page1['values']);
109 $first = array_shift($page2['values']);
111 $this->assertEquals($first, $last, "the first item of the second page should be the last of the 1st page" . __LINE__
);
114 public function testGetOptionGroup() {
115 $params = array('option_group_id' => 1, 'version' => $this->_apiversion
);
116 $result = civicrm_api('option_value', 'get', $params);
117 $this->documentMe($params, $result, __FUNCTION__
, __FILE__
);
118 $this->assertEquals(0, $result['is_error'], 'In line ' . __LINE__
);
119 $this->assertGreaterThan(1, $result['count'], 'In line ' . __LINE__
);
122 * test that using option_group_name returns more than 1 & less than all
127 public function testGetOptionGroupByName() {
128 $activityTypesParams = array('option_group_name' => 'activity_type', 'version' => $this->_apiversion
, 'option.limit' => 100);
129 $params = array('version' => $this->_apiversion
, 'option.limit' => 100);
130 $activityTypes = civicrm_api('option_value', 'get', $activityTypesParams);
131 $result = civicrm_api('option_value', 'get', $params);
132 $this->assertEquals(0, $result['is_error'], 'In line ' . __LINE__
);
133 $this->assertGreaterThan(1, $activityTypes['count'], 'In line ' . __LINE__
);
134 $this->assertGreaterThan($activityTypes['count'], $result['count'], 'In line ' . __LINE__
);
136 public function testGetOptionDoesNotExist() {
137 $result = civicrm_api('option_value', 'get', array('label' => 'FSIGUBSFGOMUUBSFGMOOUUBSFGMOOBUFSGMOOIIB', 'version' => $this->_apiversion
));
138 $this->assertEquals(0, $result['is_error'], 'In line ' . __LINE__
);
139 $this->assertEquals(0, $result['count'], 'In line ' . __LINE__
);
142 * Check that domain_id is honoured
144 public function testCreateOptionSpecifyDomain() {
145 $result = civicrm_api('option_group', 'get', array(
146 'name' => 'from_email_address',
148 'version' => $this->_apiversion
,
149 'api.option_value.create' => array('domain_id' => 2, 'name' => 'my@y.com'),
151 $this->assertAPISuccess($result);
152 $optionValueId = $result['values'][0]['api.option_value.create']['id'];
153 $domain_id = civicrm_api('option_value', 'getvalue', array(
154 'id' => $optionValueId,
155 'version' => $this->_apiversion
,
156 'return' => 'domain_id',
158 $this->assertEquals(2, $domain_id);
161 * Check that component_id is honoured
163 public function testCreateOptionSpecifyComponentID() {
164 $result = civicrm_api('option_group', 'get', array(
165 'name' => 'from_email_address',
167 'version' => $this->_apiversion
,
168 'api.option_value.create' => array('component_id' => 2, 'name' => 'my@y.com'),
170 $this->assertAPISuccess($result);
171 $optionValueId = $result['values'][0]['api.option_value.create']['id'];
172 $component_id = civicrm_api('option_value', 'getvalue', array(
173 'id' => $optionValueId,
174 'version' => $this->_apiversion
,
175 'return' => 'component_id',
177 $this->assertEquals(2, $component_id);
180 * Check that component continues to be honoured
182 public function testCreateOptionSpecifyComponent() {
183 $result = civicrm_api('option_group', 'get', array(
184 'name' => 'from_email_address',
186 'version' => $this->_apiversion
,
187 'api.option_value.create' => array(
188 'component_id' => 'CiviContribute',
193 $this->assertAPISuccess($result);
194 $optionValueId = $result['values'][0]['api.option_value.create']['id'];
195 $component_id = civicrm_api('option_value', 'getvalue', array(
196 'id' => $optionValueId,
197 'version' => $this->_apiversion
,
198 'return' => 'component_id',
200 $this->assertEquals(2, $component_id);
203 * Check that component string is honoured
205 public function testCreateOptionSpecifyComponentString() {
206 $result = civicrm_api('option_group', 'get', array(
207 'name' => 'from_email_address',
209 'version' => $this->_apiversion
,
210 'api.option_value.create' => array(
211 'component_id' => 'CiviContribute',
212 'name' => 'my@y.com'),
215 $this->assertAPISuccess($result);
216 $optionValueId = $result['values'][0]['api.option_value.create']['id'];
217 $component_id = civicrm_api('option_value', 'getvalue', array(
218 'id' => $optionValueId,
219 'version' => $this->_apiversion
,
220 'return' => 'component_id',
222 $this->assertEquals(2, $component_id);
225 * Check that domain_id is honoured
227 public function testCRM12133CreateOptionWeightNoValue() {
228 $optionGroup = civicrm_api(
229 'option_group', 'get', array(
232 'version' => $this->_apiversion
,
234 $this->assertAPISuccess($optionGroup);
236 'option_group_id' => $optionGroup['id'],
237 'label' => 'my@y.com',
238 'version' => $this->_apiversion
,
241 $optionValue = civicrm_api('option_value', 'create', $params);
242 $this->assertAPISuccess($optionValue);
243 $params['weight'] = 4;
244 $optionValue2 = civicrm_api('option_value', 'create', $params );
245 $this->assertAPISuccess($optionValue2);
246 $options = civicrm_api('option_value', 'get', array('version' => 3, 'option_group_id' => $optionGroup['id']));
247 $this->assertNotEquals($options['values'][$optionValue['id']]['value'], $options['values'][$optionValue2['id']]['value']);
250 civicrm_api('option_value', 'delete', array('version' => 3, 'id' => $optionValue['id']));
251 civicrm_api('option_value', 'delete', array('version' => 3, 'id' => $optionValue2['id']));
255 * Check that domain_id is honoured
257 public function testCreateOptionNoName() {
258 $optionGroup = civicrm_api('option_group', 'get', array(
261 'version' => $this->_apiversion
,
264 $params = array('option_group_id' => $optionGroup['id'], 'label' => 'my@y.com', 'version' => $this->_apiversion
);
265 $optionValue = civicrm_api('option_value', 'create', $params);
266 $this->assertAPISuccess($optionValue);
267 $this->getAndCheck($params, $optionValue['id'], 'option_value');
270 * Check that pseudoconstant reflects new value added
273 public function testCRM11876CreateOptionPseudoConstantUpdated() {
274 $optionGroupID = civicrm_api('option_group', 'getvalue', array(
275 'version' => $this->_apiversion
,
276 'name' => 'payment_instrument',
279 $apiResult = civicrm_api('option_value', 'create', array(
280 'option_group_id' => $optionGroupID,
282 'version' => $this->_apiversion
,
285 $this->assertAPISuccess($apiResult);
286 $fields = civicrm_api('contribution', 'getoptions', array(
287 'version' => $this->_apiversion
,
288 'field' => 'payment_instrument',
291 $this->assertTrue(in_array('newest', $fields['values']));
292 $deleteResult = civicrm_api('option_value', 'delete', array('id' => $apiResult['id'], 'version' => $this->_apiversion
));
293 $this->assertAPISuccess($deleteResult);
294 $fields = civicrm_api('contribution', 'getoptions', array(
295 'version' => $this->_apiversion
,
296 'field' => 'payment_instrument',
299 $this->assertFalse(in_array('newest', $fields['values']));