2 require_once 'CiviTest/CiviUnitTestCase.php';
5 * Class CRM_Contact_BAO_ContactType_ContactTest
7 class CRM_Contact_BAO_ContactType_ContactTest
extends CiviUnitTestCase
{
13 'label' => 'indiv_student',
14 'name' => 'indiv_student',
19 $result = CRM_Contact_BAO_ContactType
::add($params);
20 $this->student
= $params['name'];
23 'label' => 'indiv_parent',
24 'name' => 'indiv_parent',
29 $result = CRM_Contact_BAO_ContactType
::add($params);
30 $this->parent
= $params['name'];
34 'label' => 'org_sponsor',
35 'name' => 'org_sponsor',
40 $result = CRM_Contact_BAO_ContactType
::add($params);
41 $this->sponsor
= $params['name'];
44 'label' => 'org_team',
50 $result = CRM_Contact_BAO_ContactType
::add($params);
51 $this->team
= $params['name'];
55 $this->quickCleanup(array('civicrm_contact'));
57 DELETE FROM civicrm_contact_type
58 WHERE name IN ('{$this->student}','{$this->parent}','{$this->sponsor}', '{$this->team}');";
59 CRM_Core_DAO
::executeQuery($query);
63 * Methods create Contact with valid data
67 function testCreateContact() {
68 //check for Type:Individual
70 'first_name' => 'Anne',
71 'last_name' => 'Grant',
72 'contact_type' => 'Individual',
75 $contact = CRM_Contact_BAO_Contact
::add($params);
77 catch(Exception
$expected) {}
78 $this->assertEquals($contact->first_name
, 'Anne', 'In line ' . __LINE__
);
79 $this->assertEquals($contact->contact_type
, 'Individual', 'In line ' . __LINE__
);
80 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
82 //check for Type:Organization
84 'organization_name' => 'Compumentor',
85 'contact_type' => 'Organization',
88 $contact = CRM_Contact_BAO_Contact
::add($params);
90 catch(Exception
$expected) {}
91 $this->assertEquals($contact->organization_name
, 'Compumentor', 'In line ' . __LINE__
);
92 $this->assertEquals($contact->contact_type
, 'Organization', 'In line ' . __LINE__
);
93 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
95 //check for Type:Household
97 'household_name' => 'John Does home',
98 'contact_type' => 'Household',
101 $contact = CRM_Contact_BAO_Contact
::add($params);
103 catch(Exception
$expected) {}
104 $this->assertEquals($contact->household_name
, 'John Does home', 'In line ' . __LINE__
);
105 $this->assertEquals($contact->contact_type
, 'Household', 'In line ' . __LINE__
);
106 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
108 //check for Type:Individual, Subtype:Student
110 'first_name' => 'Bill',
111 'last_name' => 'Adams',
112 'contact_type' => 'Individual',
113 'contact_sub_type' => $this->student
,
116 $contact = CRM_Contact_BAO_Contact
::add($params);
118 catch(Exception
$expected) {}
119 $this->assertEquals($contact->first_name
, 'Bill', 'In line ' . __LINE__
);
120 $this->assertEquals($contact->contact_type
, 'Individual', 'In line ' . __LINE__
);
121 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $contact->contact_sub_type
), $this->student
, 'In line ' . __LINE__
);
122 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
124 //check for Type:Organization, Subtype:Sponsor
126 'organization_name' => 'Conservation Corp',
127 'contact_type' => 'Organization',
128 'contact_sub_type' => $this->sponsor
,
131 $contact = CRM_Contact_BAO_Contact
::add($params);
133 catch(Exception
$expected) {}
134 $this->assertEquals($contact->organization_name
, 'Conservation Corp', 'In line ' . __LINE__
);
135 $this->assertEquals($contact->contact_type
, 'Organization', 'In line ' . __LINE__
);
136 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $contact->contact_sub_type
), $this->sponsor
, 'In line ' . __LINE__
);
137 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
141 * Update the contact with no subtype to a valid subtype
144 function testUpdateContactNosubtypeToValid() {
146 'first_name' => 'Anne',
147 'last_name' => 'Grant',
148 'contact_type' => 'Individual',
151 $contact = CRM_Contact_BAO_Contact
::add($params);
153 catch(Exception
$expected) {}
154 $updateParams = array(
155 'contact_sub_type' => $this->student
,
156 'contact_type' => 'Individual',
157 'contact_id' => $contact->id
,
160 $updatedContact = CRM_Contact_BAO_Contact
::add($updateParams);
162 catch(Exception
$expected) {}
163 $this->assertEquals($updatedContact->id
, $contact->id
, 'In line ' . __LINE__
);
164 $this->assertEquals($updatedContact->contact_type
, 'Individual', 'In line ' . __LINE__
);
165 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $updatedContact->contact_sub_type
), $this->student
, 'In line ' . __LINE__
);
166 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
169 'organization_name' => 'Compumentor',
170 'contact_type' => 'Organization',
173 $contact = CRM_Contact_BAO_Contact
::add($params);
175 catch(Exception
$expected) {}
177 $updateParams = array(
178 'contact_sub_type' => $this->sponsor
,
179 'contact_type' => 'Organization',
180 'contact_id' => $contact->id
,
183 $updatedContact = CRM_Contact_BAO_Contact
::add($updateParams);
185 catch(Exception
$expected) {}
186 $this->assertEquals($updatedContact->id
, $contact->id
, 'In line ' . __LINE__
);
187 $this->assertEquals($updatedContact->contact_type
, 'Organization', 'In line ' . __LINE__
);
188 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $updatedContact->contact_sub_type
), $this->sponsor
, 'In line ' . __LINE__
);
189 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
193 * Update the contact with subtype to another valid subtype
196 function testUpdateContactSubtype() {
198 'first_name' => 'Anne',
199 'last_name' => 'Grant',
200 'contact_type' => 'Individual',
201 'contact_sub_type' => $this->student
,
204 $contact = CRM_Contact_BAO_Contact
::add($params);
206 catch(Exception
$expected) {}
208 $updateParams = array(
209 'contact_sub_type' => $this->parent
,
210 'contact_type' => 'Individual',
211 'contact_id' => $contact->id
,
214 $updatedContact = CRM_Contact_BAO_Contact
::add($updateParams);
216 catch(Exception
$expected) {}
217 $this->assertEquals($updatedContact->id
, $contact->id
, 'In line ' . __LINE__
);
218 $this->assertEquals($updatedContact->contact_type
, 'Individual', 'In line ' . __LINE__
);
219 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $updatedContact->contact_sub_type
), $this->parent
, 'In line ' . __LINE__
);
220 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
224 'organization_name' => 'Compumentor',
225 'contact_type' => 'Organization',
226 'contact_sub_type' => $this->sponsor
,
229 $contact = CRM_Contact_BAO_Contact
::add($params);
231 catch(Exception
$expected) {}
233 $updateParams = array(
234 'contact_sub_type' => $this->team
,
235 'contact_type' => 'Organization',
236 'contact_id' => $contact->id
,
239 $updatedContact = CRM_Contact_BAO_Contact
::add($updateParams);
241 catch(Exception
$expected) {}
243 $this->assertEquals($updatedContact->id
, $contact->id
, 'In line ' . __LINE__
);
244 $this->assertEquals($updatedContact->contact_type
, 'Organization', 'In line ' . __LINE__
);
245 $this->assertEquals(str_replace(CRM_Core_DAO
::VALUE_SEPARATOR
, '', $updatedContact->contact_sub_type
), $this->team
, 'In line ' . __LINE__
);
246 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);
250 'first_name' => 'Anne',
251 'last_name' => 'Grant',
252 'contact_type' => 'Individual',
253 'contact_sub_type' => $this->student
,
256 $contact = CRM_Contact_BAO_Contact
::add($params);
258 catch(Exception
$expected) {}
260 $updateParams = array(
261 'contact_sub_type' => NULL,
262 'contact_type' => 'Individual',
263 'contact_id' => $contact->id
,
266 $updatedContact = CRM_Contact_BAO_Contact
::add($updateParams);
268 catch(Exception
$expected) {}
270 $this->assertEquals($updatedContact->id
, $contact->id
, 'In line ' . __LINE__
);
271 $this->assertEquals($updatedContact->contact_type
, 'Individual', 'In line ' . __LINE__
);
272 $this->assertEquals($updatedContact->contact_sub_type
, 'null', 'In line ' . __LINE__
);
273 CRM_Contact_BAO_Contact
::deleteContact($contact->id
);