Commit | Line | Data |
---|---|---|
19b53e5b C |
1 | <?php |
2 | ||
380f3545 TO |
3 | /* |
4 | +--------------------------------------------------------------------+ | |
7d61e75f | 5 | | Copyright CiviCRM LLC. All rights reserved. | |
380f3545 | 6 | | | |
7d61e75f TO |
7 | | This work is published under the GNU AGPLv3 license with some | |
8 | | permitted exceptions and without any warranty. For full license | | |
9 | | and copyright information, see https://civicrm.org/licensing | | |
380f3545 TO |
10 | +--------------------------------------------------------------------+ |
11 | */ | |
12 | ||
13 | /** | |
14 | * | |
15 | * @package CRM | |
ca5cec67 | 16 | * @copyright CiviCRM LLC https://civicrm.org/licensing |
380f3545 TO |
17 | * $Id$ |
18 | * | |
19 | */ | |
20 | ||
21 | ||
19b53e5b C |
22 | namespace api\v4\Action; |
23 | ||
24 | use Civi\Api4\Contact; | |
25 | use Civi\Api4\CustomField; | |
26 | use Civi\Api4\CustomGroup; | |
27 | ||
28 | /** | |
29 | * @group headless | |
30 | */ | |
31 | class BasicCustomFieldTest extends BaseCustomValueTest { | |
32 | ||
33 | public function testWithSingleField() { | |
34 | ||
35 | $customGroup = CustomGroup::create() | |
36 | ->setCheckPermissions(FALSE) | |
37 | ->addValue('name', 'MyContactFields') | |
38 | ->addValue('extends', 'Contact') | |
39 | ->execute() | |
40 | ->first(); | |
41 | ||
42 | CustomField::create() | |
43 | ->setCheckPermissions(FALSE) | |
44 | ->addValue('label', 'FavColor') | |
45 | ->addValue('custom_group_id', $customGroup['id']) | |
46 | ->addValue('html_type', 'Text') | |
47 | ->addValue('data_type', 'String') | |
48 | ->execute(); | |
49 | ||
50 | $contactId = Contact::create() | |
51 | ->setCheckPermissions(FALSE) | |
52 | ->addValue('first_name', 'Johann') | |
53 | ->addValue('last_name', 'Tester') | |
54 | ->addValue('contact_type', 'Individual') | |
55 | ->addValue('MyContactFields.FavColor', 'Red') | |
56 | ->execute() | |
57 | ->first()['id']; | |
58 | ||
59 | $contact = Contact::get() | |
60 | ->setCheckPermissions(FALSE) | |
61 | ->addSelect('first_name') | |
62 | ->addSelect('MyContactFields.FavColor') | |
63 | ->addWhere('id', '=', $contactId) | |
64 | ->addWhere('MyContactFields.FavColor', '=', 'Red') | |
65 | ->execute() | |
66 | ->first(); | |
67 | ||
68 | $this->assertEquals('Red', $contact['MyContactFields.FavColor']); | |
69 | ||
70 | Contact::update() | |
71 | ->addWhere('id', '=', $contactId) | |
72 | ->addValue('MyContactFields.FavColor', 'Blue') | |
73 | ->execute(); | |
74 | ||
75 | $contact = Contact::get() | |
76 | ->setCheckPermissions(FALSE) | |
77 | ->addSelect('MyContactFields.FavColor') | |
78 | ->addWhere('id', '=', $contactId) | |
79 | ->execute() | |
80 | ->first(); | |
81 | ||
82 | $this->assertEquals('Blue', $contact['MyContactFields.FavColor']); | |
83 | } | |
84 | ||
85 | public function testWithTwoFields() { | |
86 | ||
87 | $customGroup = CustomGroup::create() | |
88 | ->setCheckPermissions(FALSE) | |
89 | ->addValue('name', 'MyContactFields') | |
90 | ->addValue('extends', 'Contact') | |
91 | ->execute() | |
92 | ->first(); | |
93 | ||
94 | CustomField::create() | |
95 | ->setCheckPermissions(FALSE) | |
96 | ->addValue('label', 'FavColor') | |
97 | ->addValue('custom_group_id', $customGroup['id']) | |
98 | ->addValue('html_type', 'Text') | |
99 | ->addValue('data_type', 'String') | |
100 | ->execute(); | |
101 | ||
102 | CustomField::create() | |
103 | ->setCheckPermissions(FALSE) | |
104 | ->addValue('label', 'FavFood') | |
105 | ->addValue('custom_group_id', $customGroup['id']) | |
106 | ->addValue('html_type', 'Text') | |
107 | ->addValue('data_type', 'String') | |
108 | ->execute(); | |
109 | ||
110 | $contactId1 = Contact::create() | |
111 | ->setCheckPermissions(FALSE) | |
112 | ->addValue('first_name', 'Johann') | |
113 | ->addValue('last_name', 'Tester') | |
114 | ->addValue('MyContactFields.FavColor', 'Red') | |
115 | ->addValue('MyContactFields.FavFood', 'Cherry') | |
116 | ->execute() | |
117 | ->first()['id']; | |
118 | ||
119 | $contactId2 = Contact::create() | |
120 | ->setCheckPermissions(FALSE) | |
121 | ->addValue('first_name', 'MaryLou') | |
122 | ->addValue('last_name', 'Tester') | |
123 | ->addValue('MyContactFields.FavColor', 'Purple') | |
124 | ->addValue('MyContactFields.FavFood', 'Grapes') | |
125 | ->execute() | |
126 | ->first()['id']; | |
127 | ||
128 | $contact = Contact::get() | |
129 | ->setCheckPermissions(FALSE) | |
130 | ->addSelect('first_name') | |
131 | ->addSelect('MyContactFields.FavColor') | |
132 | ->addSelect('MyContactFields.FavFood') | |
133 | ->addWhere('id', '=', $contactId1) | |
134 | ->addWhere('MyContactFields.FavColor', '=', 'Red') | |
135 | ->addWhere('MyContactFields.FavFood', '=', 'Cherry') | |
136 | ->execute() | |
137 | ->first(); | |
138 | ||
139 | $this->assertArrayHasKey('MyContactFields.FavColor', $contact); | |
140 | $this->assertEquals('Red', $contact['MyContactFields.FavColor']); | |
141 | ||
142 | Contact::update() | |
143 | ->addWhere('id', '=', $contactId1) | |
144 | ->addValue('MyContactFields.FavColor', 'Blue') | |
145 | ->execute(); | |
146 | ||
147 | $contact = Contact::get() | |
148 | ->setCheckPermissions(FALSE) | |
149 | ->addSelect('MyContactFields.FavColor') | |
150 | ->addWhere('id', '=', $contactId1) | |
151 | ->execute() | |
152 | ->first(); | |
153 | ||
154 | $this->assertEquals('Blue', $contact['MyContactFields.FavColor']); | |
155 | ||
156 | $search = Contact::get() | |
157 | ->setCheckPermissions(FALSE) | |
158 | ->addClause('OR', ['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes']) | |
159 | ->addSelect('id') | |
160 | ->addOrderBy('id') | |
161 | ->execute() | |
162 | ->indexBy('id'); | |
163 | ||
164 | $this->assertEquals([$contactId1, $contactId2], array_keys((array) $search)); | |
165 | ||
166 | $search = Contact::get() | |
167 | ->setCheckPermissions(FALSE) | |
168 | ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes']) | |
169 | ->addSelect('id') | |
170 | ->addOrderBy('id') | |
171 | ->execute() | |
172 | ->indexBy('id'); | |
173 | ||
174 | $this->assertNotContains($contactId2, array_keys((array) $search)); | |
175 | ||
176 | $search = Contact::get() | |
177 | ->setCheckPermissions(FALSE) | |
178 | ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes']) | |
179 | ->addSelect('id') | |
180 | ->addOrderBy('id') | |
181 | ->execute() | |
182 | ->indexBy('id'); | |
183 | ||
184 | $this->assertContains($contactId1, array_keys((array) $search)); | |
185 | $this->assertNotContains($contactId2, array_keys((array) $search)); | |
186 | ||
187 | $search = Contact::get() | |
188 | ->setCheckPermissions(FALSE) | |
189 | ->setWhere([['NOT', ['OR', [['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes']]]]]) | |
190 | ->addSelect('id') | |
191 | ->addOrderBy('id') | |
192 | ->execute() | |
193 | ->indexBy('id'); | |
194 | ||
195 | $this->assertNotContains($contactId1, array_keys((array) $search)); | |
196 | $this->assertNotContains($contactId2, array_keys((array) $search)); | |
197 | } | |
198 | ||
199 | } |