b115d5f6641acf806cbdffc8b1e915a9b9dffcfd
3 namespace api\v
4\Action
;
6 use Civi\Api4\CustomField
;
7 use Civi\Api4\CustomGroup
;
12 class BasicCustomFieldTest
extends BaseCustomValueTest
{
14 public function testWithSingleField() {
16 $customGroup = CustomGroup
::create()
17 ->setCheckPermissions(FALSE)
18 ->addValue('name', 'MyContactFields')
19 ->addValue('extends', 'Contact')
24 ->setCheckPermissions(FALSE)
25 ->addValue('label', 'FavColor')
26 ->addValue('custom_group_id', $customGroup['id'])
27 ->addValue('html_type', 'Text')
28 ->addValue('data_type', 'String')
31 $contactId = Contact
::create()
32 ->setCheckPermissions(FALSE)
33 ->addValue('first_name', 'Johann')
34 ->addValue('last_name', 'Tester')
35 ->addValue('contact_type', 'Individual')
36 ->addValue('MyContactFields.FavColor', 'Red')
40 $contact = Contact
::get()
41 ->setCheckPermissions(FALSE)
42 ->addSelect('first_name')
43 ->addSelect('MyContactFields.FavColor')
44 ->addWhere('id', '=', $contactId)
45 ->addWhere('MyContactFields.FavColor', '=', 'Red')
49 $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
52 ->addWhere('id', '=', $contactId)
53 ->addValue('MyContactFields.FavColor', 'Blue')
56 $contact = Contact
::get()
57 ->setCheckPermissions(FALSE)
58 ->addSelect('MyContactFields.FavColor')
59 ->addWhere('id', '=', $contactId)
63 $this->assertEquals('Blue', $contact['MyContactFields.FavColor']);
66 public function testWithTwoFields() {
68 $customGroup = CustomGroup
::create()
69 ->setCheckPermissions(FALSE)
70 ->addValue('name', 'MyContactFields')
71 ->addValue('extends', 'Contact')
76 ->setCheckPermissions(FALSE)
77 ->addValue('label', 'FavColor')
78 ->addValue('custom_group_id', $customGroup['id'])
79 ->addValue('html_type', 'Text')
80 ->addValue('data_type', 'String')
84 ->setCheckPermissions(FALSE)
85 ->addValue('label', 'FavFood')
86 ->addValue('custom_group_id', $customGroup['id'])
87 ->addValue('html_type', 'Text')
88 ->addValue('data_type', 'String')
91 $contactId1 = Contact
::create()
92 ->setCheckPermissions(FALSE)
93 ->addValue('first_name', 'Johann')
94 ->addValue('last_name', 'Tester')
95 ->addValue('MyContactFields.FavColor', 'Red')
96 ->addValue('MyContactFields.FavFood', 'Cherry')
100 $contactId2 = Contact
::create()
101 ->setCheckPermissions(FALSE)
102 ->addValue('first_name', 'MaryLou')
103 ->addValue('last_name', 'Tester')
104 ->addValue('MyContactFields.FavColor', 'Purple')
105 ->addValue('MyContactFields.FavFood', 'Grapes')
109 $contact = Contact
::get()
110 ->setCheckPermissions(FALSE)
111 ->addSelect('first_name')
112 ->addSelect('MyContactFields.FavColor')
113 ->addSelect('MyContactFields.FavFood')
114 ->addWhere('id', '=', $contactId1)
115 ->addWhere('MyContactFields.FavColor', '=', 'Red')
116 ->addWhere('MyContactFields.FavFood', '=', 'Cherry')
120 $this->assertArrayHasKey('MyContactFields.FavColor', $contact);
121 $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
124 ->addWhere('id', '=', $contactId1)
125 ->addValue('MyContactFields.FavColor', 'Blue')
128 $contact = Contact
::get()
129 ->setCheckPermissions(FALSE)
130 ->addSelect('MyContactFields.FavColor')
131 ->addWhere('id', '=', $contactId1)
135 $this->assertEquals('Blue', $contact['MyContactFields.FavColor']);
137 $search = Contact
::get()
138 ->setCheckPermissions(FALSE)
139 ->addClause('OR', ['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes'])
145 $this->assertEquals([$contactId1, $contactId2], array_keys((array) $search));
147 $search = Contact
::get()
148 ->setCheckPermissions(FALSE)
149 ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
155 $this->assertNotContains($contactId2, array_keys((array) $search));
157 $search = Contact
::get()
158 ->setCheckPermissions(FALSE)
159 ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
165 $this->assertContains($contactId1, array_keys((array) $search));
166 $this->assertNotContains($contactId2, array_keys((array) $search));
168 $search = Contact
::get()
169 ->setCheckPermissions(FALSE)
170 ->setWhere([['NOT', ['OR', [['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes']]]]])
176 $this->assertNotContains($contactId1, array_keys((array) $search));
177 $this->assertNotContains($contactId2, array_keys((array) $search));