Merge pull request #13837 from eileenmcnaughton/event_conf
[civicrm-core.git] / tests / phpunit / CRM / Contact / BAO / ContactType / ContactTypeTest.php
CommitLineData
6a488035 1<?php
aba1cd8b
EM
2
3/**
4 * Class CRM_Contact_BAO_ContactType_ContactTypeTest
acb109b7 5 * @group headless
aba1cd8b 6 */
6a488035 7class CRM_Contact_BAO_ContactType_ContactTypeTest extends CiviUnitTestCase {
6a488035 8
00be9182 9 public function setUp() {
6a488035 10 parent::setUp();
92fcb95f 11 $labelsub1 = 'sub1_individual' . substr(sha1(rand()), 0, 7);
41e1fa31 12 $params = [
6a488035
TO
13 'label' => $labelsub1,
14 'name' => $labelsub1,
15 // Individual
16 'parent_id' => 1,
17 'is_active' => 1,
41e1fa31 18 ];
6a488035
TO
19 $result = CRM_Contact_BAO_ContactType::add($params);
20 $this->subTypesIndividual[] = $params['name'];
21
92fcb95f 22 $labelsub2 = 'sub2_individual' . substr(sha1(rand()), 0, 7);
41e1fa31 23 $params = [
6a488035
TO
24 'label' => $labelsub2,
25 'name' => $labelsub2,
26 // Individual
27 'parent_id' => 1,
28 'is_active' => 1,
41e1fa31 29 ];
6a488035
TO
30 $result = CRM_Contact_BAO_ContactType::add($params);
31 $this->subTypesIndividual[] = $params['name'];
32
92fcb95f 33 $labelsub = 'sub_organization' . substr(sha1(rand()), 0, 7);
41e1fa31 34 $params = [
6a488035
TO
35 'label' => $labelsub,
36 'name' => $labelsub,
37 // Organization
38 'parent_id' => 3,
39 'is_active' => 1,
41e1fa31 40 ];
6a488035
TO
41 $result = CRM_Contact_BAO_ContactType::add($params);
42 $this->subTypesOrganization[] = $params['name'];
43
92fcb95f 44 $labelhousehold = 'sub_household' . substr(sha1(rand()), 0, 7);
41e1fa31 45 $params = [
6a488035
TO
46 'label' => $labelhousehold,
47 'name' => $labelhousehold,
48 // Household
49 'parent_id' => 2,
50 'is_active' => 1,
41e1fa31 51 ];
6a488035
TO
52 $result = CRM_Contact_BAO_ContactType::add($params);
53 $this->subTypesHousehold[] = $params['name'];
54 }
55
c490a46a 56 /**
100fef9d 57 * Test contactTypes() and subTypes() methods with valid data
c490a46a
CW
58 * success expected
59 */
00be9182 60 public function testGetMethods() {
6a488035
TO
61
62 // check all contact types
41e1fa31 63 $contactTypes = ['Individual', 'Organization', 'Household'];
6a488035
TO
64 $result = CRM_Contact_BAO_ContactType::contactTypes('Individual');
65 foreach ($contactTypes as $type) {
a15773db 66 $this->assertEquals(in_array($type, $result), TRUE);
6a488035
TO
67 }
68
69 // check for type:Individual
70 $result = CRM_Contact_BAO_ContactType::subTypes('Individual');
71 foreach ($result as $subtype) {
72 $subTypeName = in_array($subtype, $this->subTypesIndividual);
73 if (!empty($subTypeName)) {
a15773db 74 $this->assertEquals($subTypeName, TRUE);
6a488035 75 }
a15773db
TM
76 $this->assertEquals(in_array($subtype, $this->subTypesOrganization), FALSE);
77 $this->assertEquals(in_array($subtype, $this->subTypesHousehold), FALSE);
6a488035
TO
78 }
79
80 // check for type:Organization
81 $result = CRM_Contact_BAO_ContactType::subTypes('Organization');
82 foreach ($result as $subtype) {
a15773db 83 $this->assertEquals(in_array($subtype, $this->subTypesIndividual), FALSE);
6a488035
TO
84 $subTypeName = in_array($subtype, $this->subTypesOrganization);
85 if (!empty($subTypeName)) {
a15773db 86 $this->assertEquals($subTypeName, TRUE);
6a488035
TO
87 }
88 $subTypeName = in_array($subTypeName, $this->subTypesHousehold);
89 if (empty($subTypeName)) {
a15773db 90 $this->assertEquals($subTypeName, FALSE);
6a488035
TO
91 }
92 }
93
94 // check for type:Household
95 $result = CRM_Contact_BAO_ContactType::subTypes('Household');
96 foreach ($result as $subtype) {
a15773db
TM
97 $this->assertEquals(in_array($subtype, $this->subTypesIndividual), FALSE);
98 $this->assertEquals(in_array($subtype, $this->subTypesOrganization), FALSE);
99 $this->assertEquals(in_array($subtype, $this->subTypesHousehold), TRUE);
6a488035
TO
100 }
101
102 // check for all conatct types
103 $result = CRM_Contact_BAO_ContactType::subTypes();
104 foreach ($this->subTypesIndividual as $subtype) {
a15773db 105 $this->assertEquals(in_array($subtype, $result), TRUE);
6a488035
TO
106 }
107 foreach ($this->subTypesOrganization as $subtype) {
a15773db 108 $this->assertEquals(in_array($subtype, $result), TRUE);
6a488035
TO
109 }
110 foreach ($this->subTypesHousehold as $subtype) {
a15773db 111 $this->assertEquals(in_array($subtype, $result), TRUE);
6a488035
TO
112 }
113 }
114
c490a46a 115 /**
100fef9d 116 * Test subTypes() methods with invalid data
c490a46a 117 */
00be9182 118 public function testGetMethodsInvalid() {
6a488035
TO
119
120 $params = 'invalid';
121 $result = CRM_Contact_BAO_ContactType::subTypes($params);
a15773db 122 $this->assertEquals(empty($result), TRUE);
6a488035 123
41e1fa31 124 $params = ['invalid'];
6a488035 125 $result = CRM_Contact_BAO_ContactType::subTypes($params);
a15773db 126 $this->assertEquals(empty($result), TRUE);
6a488035
TO
127 }
128
c490a46a 129 /**
100fef9d 130 * Test add() methods with valid data
c490a46a
CW
131 * success expected
132 */
00be9182 133 public function testAdd() {
6a488035 134
41e1fa31 135 $params = [
6a488035
TO
136 'label' => 'indiviSubType',
137 'name' => 'indiviSubType',
138 'parent_id' => 1,
139 'is_active' => 1,
41e1fa31 140 ];
6a488035 141 $result = CRM_Contact_BAO_ContactType::add($params);
ba4a1892
TM
142 $this->assertEquals($result->label, $params['label']);
143 $this->assertEquals($result->name, $params['name']);
144 $this->assertEquals($result->parent_id, $params['parent_id']);
145 $this->assertEquals($result->is_active, $params['is_active']);
6a488035
TO
146 CRM_Contact_BAO_ContactType::del($result->id);
147
41e1fa31 148 $params = [
6a488035
TO
149 'label' => 'householdSubType',
150 'name' => 'householdSubType',
151 'parent_id' => 2,
152 'is_active' => 0,
41e1fa31 153 ];
6a488035 154 $result = CRM_Contact_BAO_ContactType::add($params);
ba4a1892
TM
155 $this->assertEquals($result->label, $params['label']);
156 $this->assertEquals($result->name, $params['name']);
157 $this->assertEquals($result->parent_id, $params['parent_id']);
158 $this->assertEquals($result->is_active, $params['is_active']);
6a488035
TO
159 CRM_Contact_BAO_ContactType::del($result->id);
160 }
161
c490a46a 162 /**
100fef9d 163 * Test add() with invalid data
c490a46a 164 */
00be9182 165 public function testAddInvalid1() {
6a488035
TO
166
167 // parent id does not exist in db
41e1fa31 168 $params = [
6a488035
TO
169 'label' => 'subType',
170 'name' => 'subType',
e4f46be0 171 // non existent
6a488035
TO
172 'parent_id' => 100,
173 'is_active' => 1,
41e1fa31 174 ];
6a488035 175 $result = CRM_Contact_BAO_ContactType::add($params);
a15773db 176 $this->assertEquals($result, NULL);
6a488035
TO
177 }
178
00be9182 179 public function testAddInvalid2() {
6a488035
TO
180
181 // params does not have name and label keys
41e1fa31 182 $params = [
6a488035
TO
183 'parent_id' => 1,
184 'is_active' => 1,
41e1fa31 185 ];
6a488035 186 $result = CRM_Contact_BAO_ContactType::add($params);
a15773db 187 $this->assertEquals($result, NULL);
6a488035
TO
188 }
189
00be9182 190 public function testAddInvalid3() {
6a488035
TO
191
192 // params does not have parent_id
41e1fa31 193 $params = [
6a488035
TO
194 'label' => 'subType',
195 'name' => 'subType',
196 'is_active' => 1,
41e1fa31 197 ];
6a488035
TO
198 $result = CRM_Contact_BAO_ContactType::add($params);
199 $this->assertEquals($result, NULL, 'In line' . __LINE__);
200 }
201
c490a46a 202 /**
100fef9d 203 * Test del() with valid data
c490a46a
CW
204 * success expected
205 */
00be9182 206 public function testDel() {
6a488035 207
41e1fa31 208 $params = [
6a488035
TO
209 'label' => 'indiviSubType',
210 'name' => 'indiviSubType',
211 'parent_id' => 1,
212 'is_active' => 1,
41e1fa31 213 ];
6a488035
TO
214 $subtype = CRM_Contact_BAO_ContactType::add($params);
215
216 $del = CRM_Contact_BAO_ContactType::del($subtype->id);
217 $result = CRM_Contact_BAO_ContactType::subTypes();
a15773db
TM
218 $this->assertEquals($del, TRUE);
219 $this->assertEquals(in_array($subtype->name, $result), TRUE);
6a488035
TO
220 }
221
c490a46a 222 /**
100fef9d 223 * Test del() with invalid data
c490a46a 224 */
00be9182 225 public function testDelInvalid() {
6a488035
TO
226
227 $del = CRM_Contact_BAO_ContactType::del(NULL);
a15773db 228 $this->assertEquals($del, FALSE);
6a488035 229 }
96025800 230
6a488035 231}