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