tests - add autogenerated comment blocks
[civicrm-core.git] / tests / phpunit / CRM / Contact / BAO / ContactType / ContactTest.php
CommitLineData
6a488035
TO
1<?php
2require_once 'CiviTest/CiviUnitTestCase.php';
aba1cd8b
EM
3
4/**
5 * Class CRM_Contact_BAO_ContactType_ContactTest
6 */
6a488035 7class CRM_Contact_BAO_ContactType_ContactTest extends CiviUnitTestCase {
aba1cd8b
EM
8 /**
9 * @return array
10 */
6a488035
TO
11 function get_info() {
12 return array(
13 'name' => 'Contact Subtype',
14 'description' => 'Test Contact for subtype.',
15 'group' => 'CiviCRM BAO Tests',
16 );
17 }
18
19 function setUp() {
20 parent::setUp();
21
22 $params = array(
23 'label' => 'indiv_student',
24 'name' => 'indiv_student',
25 // Individual
26 'parent_id' => 1,
27 'is_active' => 1,
28 );
29 $result = CRM_Contact_BAO_ContactType::add($params);
30 $this->student = $params['name'];
31
32 $params = array(
33 'label' => 'indiv_parent',
34 'name' => 'indiv_parent',
35 // Individual
36 'parent_id' => 1,
37 'is_active' => 1,
38 );
39 $result = CRM_Contact_BAO_ContactType::add($params);
40 $this->parent = $params['name'];
41
42
43 $params = array(
44 'label' => 'org_sponsor',
45 'name' => 'org_sponsor',
46 // Organization
47 'parent_id' => 3,
48 'is_active' => 1,
49 );
50 $result = CRM_Contact_BAO_ContactType::add($params);
51 $this->sponsor = $params['name'];
52
53 $params = array(
54 'label' => 'org_team',
55 'name' => 'org_team',
56 // Organization
57 'parent_id' => 3,
58 'is_active' => 1,
59 );
60 $result = CRM_Contact_BAO_ContactType::add($params);
61 $this->team = $params['name'];
62 }
63
64 function tearDown() {
65 $this->quickCleanup(array('civicrm_contact'));
66 $query = "
67DELETE FROM civicrm_contact_type
68 WHERE name IN ('{$this->student}','{$this->parent}','{$this->sponsor}', '{$this->team}');";
69 CRM_Core_DAO::executeQuery($query);
70 }
71
72 /**
73 * methods create Contact with valid data
74 * success expected
75 *
76 */
77 function testCreateContact() {
78 //check for Type:Individual
79 $params = array(
80 'first_name' => 'Anne',
81 'last_name' => 'Grant',
82 'contact_type' => 'Individual',
83 );
84 try {
85 $contact = CRM_Contact_BAO_Contact::add($params);
86 }
87 catch(Exception$expected) {}
88 $this->assertEquals($contact->first_name, 'Anne', 'In line ' . __LINE__);
89 $this->assertEquals($contact->contact_type, 'Individual', 'In line ' . __LINE__);
90 CRM_Contact_BAO_Contact::deleteContact($contact->id);
91
92 //check for Type:Organization
93 $params = array(
94 'organization_name' => 'Compumentor',
95 'contact_type' => 'Organization',
96 );
97 try {
98 $contact = CRM_Contact_BAO_Contact::add($params);
99 }
100 catch(Exception$expected) {}
101 $this->assertEquals($contact->organization_name, 'Compumentor', 'In line ' . __LINE__);
102 $this->assertEquals($contact->contact_type, 'Organization', 'In line ' . __LINE__);
103 CRM_Contact_BAO_Contact::deleteContact($contact->id);
104
105 //check for Type:Household
106 $params = array(
107 'household_name' => 'John Does home',
108 'contact_type' => 'Household',
109 );
110 try {
111 $contact = CRM_Contact_BAO_Contact::add($params);
112 }
113 catch(Exception$expected) {}
114 $this->assertEquals($contact->household_name, 'John Does home', 'In line ' . __LINE__);
115 $this->assertEquals($contact->contact_type, 'Household', 'In line ' . __LINE__);
116 CRM_Contact_BAO_Contact::deleteContact($contact->id);
117
118 //check for Type:Individual, Subtype:Student
119 $params = array(
120 'first_name' => 'Bill',
121 'last_name' => 'Adams',
122 'contact_type' => 'Individual',
123 'contact_sub_type' => $this->student,
124 );
125 try {
126 $contact = CRM_Contact_BAO_Contact::add($params);
127 }
128 catch(Exception$expected) {}
129 $this->assertEquals($contact->first_name, 'Bill', 'In line ' . __LINE__);
130 $this->assertEquals($contact->contact_type, 'Individual', 'In line ' . __LINE__);
131 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $contact->contact_sub_type), $this->student, 'In line ' . __LINE__);
132 CRM_Contact_BAO_Contact::deleteContact($contact->id);
133
134 //check for Type:Organization, Subtype:Sponsor
135 $params = array(
136 'organization_name' => 'Conservation Corp',
137 'contact_type' => 'Organization',
138 'contact_sub_type' => $this->sponsor,
139 );
140 try {
141 $contact = CRM_Contact_BAO_Contact::add($params);
142 }
143 catch(Exception$expected) {}
144 $this->assertEquals($contact->organization_name, 'Conservation Corp', 'In line ' . __LINE__);
145 $this->assertEquals($contact->contact_type, 'Organization', 'In line ' . __LINE__);
146 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $contact->contact_sub_type), $this->sponsor, 'In line ' . __LINE__);
147 CRM_Contact_BAO_Contact::deleteContact($contact->id);
148 }
149
150 /**
151 * update the contact with no subtype to a valid subtype
152 * success expected
153 */
154 function testUpdateContactNosubtypeToValid() {
155 $params = array(
156 'first_name' => 'Anne',
157 'last_name' => 'Grant',
158 'contact_type' => 'Individual',
159 );
160 try {
161 $contact = CRM_Contact_BAO_Contact::add($params);
162 }
163 catch(Exception$expected) {}
164 $updateParams = array(
165 'contact_sub_type' => $this->student,
166 'contact_type' => 'Individual',
167 'contact_id' => $contact->id,
168 );
169 try {
170 $updatedContact = CRM_Contact_BAO_Contact::add($updateParams);
171 }
172 catch(Exception$expected) {}
173 $this->assertEquals($updatedContact->id, $contact->id, 'In line ' . __LINE__);
174 $this->assertEquals($updatedContact->contact_type, 'Individual', 'In line ' . __LINE__);
175 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $updatedContact->contact_sub_type), $this->student, 'In line ' . __LINE__);
176 CRM_Contact_BAO_Contact::deleteContact($contact->id);
177
178 $params = array(
179 'organization_name' => 'Compumentor',
180 'contact_type' => 'Organization',
181 );
182 try {
183 $contact = CRM_Contact_BAO_Contact::add($params);
184 }
185 catch(Exception$expected) {}
186
187 $updateParams = array(
188 'contact_sub_type' => $this->sponsor,
189 'contact_type' => 'Organization',
190 'contact_id' => $contact->id,
191 );
192 try {
193 $updatedContact = CRM_Contact_BAO_Contact::add($updateParams);
194 }
195 catch(Exception$expected) {}
196 $this->assertEquals($updatedContact->id, $contact->id, 'In line ' . __LINE__);
197 $this->assertEquals($updatedContact->contact_type, 'Organization', 'In line ' . __LINE__);
198 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $updatedContact->contact_sub_type), $this->sponsor, 'In line ' . __LINE__);
199 CRM_Contact_BAO_Contact::deleteContact($contact->id);
200 }
201
202 /**
203 * update the contact with subtype to another valid subtype
204 * success expected
205 */
206 function testUpdateContactSubtype() {
207 $params = array(
208 'first_name' => 'Anne',
209 'last_name' => 'Grant',
210 'contact_type' => 'Individual',
211 'contact_sub_type' => $this->student,
212 );
213 try {
214 $contact = CRM_Contact_BAO_Contact::add($params);
215 }
216 catch(Exception$expected) {}
217
218 $updateParams = array(
219 'contact_sub_type' => $this->parent,
220 'contact_type' => 'Individual',
221 'contact_id' => $contact->id,
222 );
223 try {
224 $updatedContact = CRM_Contact_BAO_Contact::add($updateParams);
225 }
226 catch(Exception$expected) {}
227 $this->assertEquals($updatedContact->id, $contact->id, 'In line ' . __LINE__);
228 $this->assertEquals($updatedContact->contact_type, 'Individual', 'In line ' . __LINE__);
229 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $updatedContact->contact_sub_type), $this->parent, 'In line ' . __LINE__);
230 CRM_Contact_BAO_Contact::deleteContact($contact->id);
231
232
233 $params = array(
234 'organization_name' => 'Compumentor',
235 'contact_type' => 'Organization',
236 'contact_sub_type' => $this->sponsor,
237 );
238 try {
239 $contact = CRM_Contact_BAO_Contact::add($params);
240 }
241 catch(Exception$expected) {}
242
243 $updateParams = array(
244 'contact_sub_type' => $this->team,
245 'contact_type' => 'Organization',
246 'contact_id' => $contact->id,
247 );
248 try {
249 $updatedContact = CRM_Contact_BAO_Contact::add($updateParams);
250 }
251 catch(Exception$expected) {}
252
253 $this->assertEquals($updatedContact->id, $contact->id, 'In line ' . __LINE__);
254 $this->assertEquals($updatedContact->contact_type, 'Organization', 'In line ' . __LINE__);
255 $this->assertEquals(str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $updatedContact->contact_sub_type), $this->team, 'In line ' . __LINE__);
256 CRM_Contact_BAO_Contact::deleteContact($contact->id);
257
258
259 $params = array(
260 'first_name' => 'Anne',
261 'last_name' => 'Grant',
262 'contact_type' => 'Individual',
263 'contact_sub_type' => $this->student,
264 );
265 try {
266 $contact = CRM_Contact_BAO_Contact::add($params);
267 }
268 catch(Exception$expected) {}
269
270 $updateParams = array(
271 'contact_sub_type' => NULL,
272 'contact_type' => 'Individual',
273 'contact_id' => $contact->id,
274 );
275 try {
276 $updatedContact = CRM_Contact_BAO_Contact::add($updateParams);
277 }
278 catch(Exception$expected) {}
279
280 $this->assertEquals($updatedContact->id, $contact->id, 'In line ' . __LINE__);
281 $this->assertEquals($updatedContact->contact_type, 'Individual', 'In line ' . __LINE__);
282 $this->assertEquals($updatedContact->contact_sub_type, 'null', 'In line ' . __LINE__);
283 CRM_Contact_BAO_Contact::deleteContact($contact->id);
284 }
285}
286
287
288