Merge pull request #8547 from xurizaemon/patch-2
[civicrm-core.git] / tests / phpunit / CRM / Core / BAO / CustomValueTableMultipleTest.php
1 <?php
2
3 /**
4 * Class CRM_Core_BAO_CustomValueTableMultipleTest
5 * @group headless
6 */
7 class CRM_Core_BAO_CustomValueTableMultipleTest extends CiviUnitTestCase {
8
9 public function setUp() {
10 parent::setUp();
11 }
12
13 public function testCustomGroupMultipleSingle() {
14 $contactID = $this->individualCreate();
15 $customGroup = $this->customGroupCreate(array('is_multiple' => 1));
16 $fields = array(
17 'custom_group_id' => $customGroup['id'],
18 'dataType' => 'String',
19 'htmlType' => 'Text',
20 );
21 $customField = $this->customFieldCreate($fields);
22
23 $params = array(
24 'entityID' => $contactID,
25 "custom_{$customField['id']}_-1" => 'First String',
26 );
27 CRM_Core_BAO_CustomValueTable::setValues($params);
28
29 $newParams = array(
30 'entityID' => $contactID,
31 "custom_{$customField['id']}" => 1,
32 );
33 $result = CRM_Core_BAO_CustomValueTable::getValues($newParams);
34
35 $this->assertEquals($params["custom_{$customField['id']}_-1"], $result["custom_{$customField['id']}_1"]);
36 $this->assertEquals($params['entityID'], $result['entityID']);
37
38 $this->customFieldDelete($customField['id']);
39 $this->customGroupDelete($customGroup['id']);
40 $this->contactDelete($contactID);
41 }
42
43 public function testCustomGroupMultipleDouble() {
44 $contactID = $this->individualCreate();
45 $customGroup = $this->customGroupCreate(array('is_multiple' => 1));
46 $fields = array(
47 'custom_group_id' => $customGroup['id'],
48 'dataType' => 'String',
49 'htmlType' => 'Text',
50 );
51 $customField = $this->customFieldCreate($fields);
52
53 $params = array(
54 'entityID' => $contactID,
55 "custom_{$customField['id']}_-1" => 'First String',
56 "custom_{$customField['id']}_-2" => 'Second String',
57 );
58 CRM_Core_BAO_CustomValueTable::setValues($params);
59
60 $newParams = array(
61 'entityID' => $contactID,
62 "custom_{$customField['id']}" => 1,
63 );
64 $result = CRM_Core_BAO_CustomValueTable::getValues($newParams);
65
66 $this->assertEquals($params["custom_{$customField['id']}_-1"], $result["custom_{$customField['id']}_1"]);
67 $this->assertEquals($params["custom_{$customField['id']}_-2"], $result["custom_{$customField['id']}_2"]);
68 $this->assertEquals($params['entityID'], $result['entityID']);
69
70 $this->customFieldDelete($customField['id']);
71 $this->customGroupDelete($customGroup['id']);
72 $this->contactDelete($contactID);
73 }
74
75 public function testCustomGroupMultipleUpdate() {
76 $contactID = $this->individualCreate();
77 $customGroup = $this->customGroupCreate(array('is_multiple' => 1));
78 $fields = array(
79 'custom_group_id' => $customGroup['id'],
80 'dataType' => 'String',
81 'htmlType' => 'Text',
82 );
83 $customField = $this->customFieldCreate($fields);
84
85 $params = array(
86 'entityID' => $contactID,
87 "custom_{$customField['id']}_-1" => 'First String',
88 "custom_{$customField['id']}_-2" => 'Second String',
89 "custom_{$customField['id']}_-3" => 'Third String',
90 );
91 CRM_Core_BAO_CustomValueTable::setValues($params);
92
93 $newParams = array(
94 'entityID' => $contactID,
95 "custom_{$customField['id']}_1" => 'Updated First String',
96 "custom_{$customField['id']}_3" => 'Updated Third String',
97 );
98 CRM_Core_BAO_CustomValueTable::setValues($newParams);
99
100 $getParams = array(
101 'entityID' => $contactID,
102 "custom_{$customField['id']}" => 1,
103 );
104 $result = CRM_Core_BAO_CustomValueTable::getValues($getParams);
105
106 $this->assertEquals($newParams["custom_{$customField['id']}_1"], $result["custom_{$customField['id']}_1"]);
107 $this->assertEquals($params["custom_{$customField['id']}_-2"], $result["custom_{$customField['id']}_2"]);
108 $this->assertEquals($newParams["custom_{$customField['id']}_3"], $result["custom_{$customField['id']}_3"]);
109 $this->assertEquals($params['entityID'], $result['entityID']);
110
111 $this->customFieldDelete($customField['id']);
112 $this->customGroupDelete($customGroup['id']);
113 $this->contactDelete($contactID);
114 }
115
116 public function testCustomGroupMultipleOldFormat() {
117 $contactID = $this->individualCreate();
118 $customGroup = $this->customGroupCreate(array('is_multiple' => 1));
119 $fields = array(
120 'custom_group_id' => $customGroup['id'],
121 'dataType' => 'String',
122 'htmlType' => 'Text',
123 );
124 $customField = $this->customFieldCreate($fields);
125
126 $params = array(
127 'entityID' => $contactID,
128 "custom_{$customField['id']}" => 'First String',
129 );
130 CRM_Core_BAO_CustomValueTable::setValues($params);
131
132 $newParams = array(
133 'entityID' => $contactID,
134 "custom_{$customField['id']}" => 1,
135 );
136 $result = CRM_Core_BAO_CustomValueTable::getValues($newParams);
137
138 $this->assertEquals($params["custom_{$customField['id']}"], $result["custom_{$customField['id']}_1"]);
139 $this->assertEquals($params['entityID'], $result['entityID']);
140
141 $this->customFieldDelete($customField['id']);
142 $this->customGroupDelete($customGroup['id']);
143 $this->contactDelete($contactID);
144 }
145
146 }