Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | require_once 'CiviTest/CiviUnitTestCase.php'; | |
3 | class 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 |