Commit | Line | Data |
---|---|---|
6a488035 | 1 | <?php |
aba1cd8b EM |
2 | |
3 | /** | |
4 | * Class CRM_Contact_BAO_ContactType_ContactTypeTest | |
acb109b7 | 5 | * @group headless |
aba1cd8b | 6 | */ |
6a488035 | 7 | class 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 | } |