Merge pull request #15843 from totten/master-simplehead
[civicrm-core.git] / tests / phpunit / api / v4 / Action / BasicCustomFieldTest.php
CommitLineData
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
22namespace api\v4\Action;
23
24use Civi\Api4\Contact;
25use Civi\Api4\CustomField;
26use Civi\Api4\CustomGroup;
27
28/**
29 * @group headless
30 */
31class 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}