3 * +--------------------------------------------------------------------+
4 * | CiviCRM version 4.6 |
5 * +--------------------------------------------------------------------+
6 * | Copyright CiviCRM LLC (c) 2004-2014 |
7 * +--------------------------------------------------------------------+
8 * | This file is a part of CiviCRM. |
10 * | CiviCRM is free software; you can copy, modify, and distribute it |
11 * | under the terms of the GNU Affero General Public License |
12 * | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 * | CiviCRM is distributed in the hope that it will be useful, but |
15 * | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 * | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 * | See the GNU Affero General Public License for more details. |
19 * | You should have received a copy of the GNU Affero General Public |
20 * | License and the CiviCRM Licensing Exception along |
21 * | with this program; if not, contact CiviCRM LLC |
22 * | at info[AT]civicrm[DOT]org. If you have questions about the |
23 * | GNU Affero General Public License or the licensing of CiviCRM, |
24 * | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 * +--------------------------------------------------------------------+
28 require_once 'CiviTest/CiviUnitTestCase.php';
31 * Class api_v3_CustomValueTest
33 class api_v3_CustomValueTest
extends CiviUnitTestCase
{
34 protected $_apiversion = 3;
35 protected $individual;
39 public $DBResetRequired = FALSE;
41 public function setUp() {
43 $this->individual
= $this->individualCreate();
44 $this->params
= array(
45 'entity_id' => $this->individual
,
47 $this->ids
['single'] = $this->entityCustomGroupWithSingleFieldCreate('mySingleField', 'Contacts');
48 $this->ids
['multi'] = $this->CustomGroupMultipleCreateWithFields();
49 $this->ids
['multi2'] = $this->CustomGroupMultipleCreateWithFields(array('title' => 'group2'));
52 public function tearDown() {
53 $tablesToTruncate = array(
55 'civicrm_custom_field',
56 'civicrm_custom_group',
60 // true tells quickCleanup to drop any tables that might have been created in the test
61 $this->quickCleanup($tablesToTruncate, TRUE);
64 public function testCreateCustomValue() {
66 'custom_' . $this->ids
['single']['custom_field_id'] => 'customString'
69 $result = $this->callAPIAndDocument('custom_value', 'create', $params, __FUNCTION__
, __FILE__
);
70 $this->assertEquals(1, $result['count'], 'In line ' . __LINE__
);
71 $result = $this->callAPISuccess('custom_value', 'get', $params);
74 public function testGetMultipleCustomValues() {
76 $description = "/*this demonstrates the use of CustomValue get";
79 'first_name' => 'abc3',
80 'last_name' => 'xyz3',
81 'contact_type' => 'Individual',
82 'email' => 'man3@yahoo.com',
83 'custom_' . $this->ids
['single']['custom_field_id'] => "value 1",
84 'custom_' . $this->ids
['multi']['custom_field_id'][0] => "value 2",
85 'custom_' . $this->ids
['multi']['custom_field_id'][1] => "warm beer",
86 'custom_' . $this->ids
['multi']['custom_field_id'][2] => "fl* w*",
87 'custom_' . $this->ids
['multi2']['custom_field_id'][2] => "vegemite",
90 $result = $this->callAPISuccess('Contact', 'create', $params);
91 $contact_id = $result['id'];
92 $firstCustomField = $this->ids
['multi']['custom_field_id'][0];
93 $secondCustomField = $this->ids
['multi2']['custom_field_id'][0];
94 $thirdCustomField = $this->ids
['multi2']['custom_field_id'][1];
95 $createParams = array(
96 'contact_type' => 'Individual',
98 'custom_' . $firstCustomField => "value 3",
99 'custom_' . $secondCustomField => "coffee",
100 'custom_' . $thirdCustomField => "value 4",
102 $result = $this->callAPISuccess('Contact', 'create', $createParams);
105 'id' => $result['id'],
106 'entity_id' => $result['id'],
109 $result = $this->callAPIAndDocument('CustomValue', 'Get', $params, __FUNCTION__
, __FILE__
, $description);
110 $params['format.field_names'] = 1;
111 $resultformatted = $this->callAPIAndDocument('CustomValue', 'Get', $params, __FUNCTION__
, __FILE__
, "utilises field names", 'formatFieldName');
112 // delete the contact
113 $this->callAPISuccess('contact', 'delete', array('id' => $contact_id));
114 $this->assertEquals('coffee', $result['values'][$secondCustomField]['2']);
115 $this->assertEquals('coffee', $result['values'][$secondCustomField]['latest']);
116 $this->assertEquals($secondCustomField, $result['values'][$secondCustomField]['id']);
117 $this->assertEquals('defaultValue', $result['values'][$secondCustomField]['1']);
118 $this->assertEquals($contact_id, $result['values'][$secondCustomField]['entity_id']);
119 $this->assertEquals('value 1', $result['values'][$this->ids
['single']['custom_field_id']]['0']);
120 $this->assertEquals('value 1', $result['values'][$this->ids
['single']['custom_field_id']]['latest']);
121 $this->assertEquals('value 1', $resultformatted['values']['mySingleField']['latest']);
122 $this->assertEquals('', $result['values'][$thirdCustomField]['1']);
123 $this->assertEquals('value 4', $result['values'][$thirdCustomField]['2']);
126 public function testMultipleCustomValues() {
128 'first_name' => 'abc3',
129 'last_name' => 'xyz3',
130 'contact_type' => 'Individual',
131 'email' => 'man3@yahoo.com',
132 'custom_' . $this->ids
['single']['custom_field_id'] => "value 1",
133 'custom_' . $this->ids
['multi']['custom_field_id'][0] . '-1' => "multi value 1",
134 'custom_' . $this->ids
['multi']['custom_field_id'][0] . '-2' => "multi value 2",
135 'custom_' . $this->ids
['multi']['custom_field_id'][1] => "second multi value 1",
138 $result = $this->callAPISuccess('Contact', 'create', $params);
139 $contact_id = $result['id'];
140 $firstCustomField = $this->ids
['multi']['custom_field_id'][1];
141 $secondCustomField = $this->ids
['single']['custom_field_id'];
142 $thirdCustomField = $this->ids
['multi']['custom_field_id'][0];
144 $createParams = array(
145 'contact_type' => 'Individual',
147 'custom_' . $firstCustomField . '-1' => "second multi value 2",
148 'custom_' . $firstCustomField . '-2' => "second multi value 3",
150 $result = $this->callAPISuccess('Contact', 'create', $createParams);
153 'id' => $result['id'],
154 'entity_id' => $result['id'],
157 $result = $this->callAPISuccess('CustomValue', 'Get', $params);
158 // delete the contact
159 $this->callAPISuccess('contact', 'delete', array('id' => $contact_id));
161 $this->assertEquals($contact_id, $result['values'][$secondCustomField]['entity_id']);
162 $this->assertEquals('value 1', $result['values'][$secondCustomField]['latest']);
163 $this->assertEquals('value 1', $result['values'][$secondCustomField][0]);
165 $this->assertEquals($contact_id, $result['values'][$thirdCustomField]['entity_id']);
166 $this->assertEquals('multi value 1', $result['values'][$thirdCustomField][1]);
167 $this->assertEquals('multi value 2', $result['values'][$thirdCustomField][2]);
169 $this->assertEquals($contact_id, $result['values'][$firstCustomField]['entity_id']);
170 $this->assertEquals('second multi value 1', $result['values'][$firstCustomField][1]);
171 $this->assertEquals('', $result['values'][$firstCustomField][2]);
172 $this->assertEquals('second multi value 2', $result['values'][$firstCustomField][3]);
173 $this->assertEquals('second multi value 3', $result['values'][$firstCustomField][4]);
174 $this->assertEquals('second multi value 3', $result['values'][$firstCustomField]['latest']);