4 * Class CRM_Contact_BAO_ContactType_ContactTypeTest
7 class CRM_Contact_BAO_ContactType_ContactTypeTest
extends CiviUnitTestCase
{
9 public function setUp() {
11 $labelsub1 = 'sub1_individual' . substr(sha1(rand()), 0, 7);
13 'label' => $labelsub1,
19 $result = CRM_Contact_BAO_ContactType
::add($params);
20 $this->subTypesIndividual
[] = $params['name'];
22 $labelsub2 = 'sub2_individual' . substr(sha1(rand()), 0, 7);
24 'label' => $labelsub2,
30 $result = CRM_Contact_BAO_ContactType
::add($params);
31 $this->subTypesIndividual
[] = $params['name'];
33 $labelsub = 'sub_organization' . substr(sha1(rand()), 0, 7);
41 $result = CRM_Contact_BAO_ContactType
::add($params);
42 $this->subTypesOrganization
[] = $params['name'];
44 $labelhousehold = 'sub_household' . substr(sha1(rand()), 0, 7);
46 'label' => $labelhousehold,
47 'name' => $labelhousehold,
52 $result = CRM_Contact_BAO_ContactType
::add($params);
53 $this->subTypesHousehold
[] = $params['name'];
57 * Test contactTypes() and subTypes() methods with valid data
60 public function testGetMethods() {
62 // check all contact types
63 $contactTypes = ['Individual', 'Organization', 'Household'];
64 $result = CRM_Contact_BAO_ContactType
::contactTypes('Individual');
65 foreach ($contactTypes as $type) {
66 $this->assertEquals(in_array($type, $result), TRUE);
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)) {
74 $this->assertEquals($subTypeName, TRUE);
76 $this->assertEquals(in_array($subtype, $this->subTypesOrganization
), FALSE);
77 $this->assertEquals(in_array($subtype, $this->subTypesHousehold
), FALSE);
80 // check for type:Organization
81 $result = CRM_Contact_BAO_ContactType
::subTypes('Organization');
82 foreach ($result as $subtype) {
83 $this->assertEquals(in_array($subtype, $this->subTypesIndividual
), FALSE);
84 $subTypeName = in_array($subtype, $this->subTypesOrganization
);
85 if (!empty($subTypeName)) {
86 $this->assertEquals($subTypeName, TRUE);
88 $subTypeName = in_array($subTypeName, $this->subTypesHousehold
);
89 if (empty($subTypeName)) {
90 $this->assertEquals($subTypeName, FALSE);
94 // check for type:Household
95 $result = CRM_Contact_BAO_ContactType
::subTypes('Household');
96 foreach ($result as $subtype) {
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);
102 // check for all conatct types
103 $result = CRM_Contact_BAO_ContactType
::subTypes();
104 foreach ($this->subTypesIndividual
as $subtype) {
105 $this->assertEquals(in_array($subtype, $result), TRUE);
107 foreach ($this->subTypesOrganization
as $subtype) {
108 $this->assertEquals(in_array($subtype, $result), TRUE);
110 foreach ($this->subTypesHousehold
as $subtype) {
111 $this->assertEquals(in_array($subtype, $result), TRUE);
116 * Test subTypes() methods with invalid data
118 public function testGetMethodsInvalid() {
121 $result = CRM_Contact_BAO_ContactType
::subTypes($params);
122 $this->assertEquals(empty($result), TRUE);
124 $params = ['invalid'];
125 $result = CRM_Contact_BAO_ContactType
::subTypes($params);
126 $this->assertEquals(empty($result), TRUE);
130 * Test add() methods with valid data
133 public function testAdd() {
136 'label' => 'indiviSubType',
137 'name' => 'indiviSubType',
141 $result = CRM_Contact_BAO_ContactType
::add($params);
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']);
146 CRM_Contact_BAO_ContactType
::del($result->id
);
149 'label' => 'householdSubType',
150 'name' => 'householdSubType',
154 $result = CRM_Contact_BAO_ContactType
::add($params);
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']);
159 CRM_Contact_BAO_ContactType
::del($result->id
);
163 * Test add() with invalid data
165 public function testAddInvalid1() {
167 // parent id does not exist in db
169 'label' => 'subType',
175 $result = CRM_Contact_BAO_ContactType
::add($params);
176 $this->assertEquals($result, NULL);
179 public function testAddInvalid2() {
181 // params does not have name and label keys
186 $result = CRM_Contact_BAO_ContactType
::add($params);
187 $this->assertEquals($result, NULL);
190 public function testAddInvalid3() {
192 // params does not have parent_id
194 'label' => 'subType',
198 $result = CRM_Contact_BAO_ContactType
::add($params);
199 $this->assertEquals($result, NULL, 'In line' . __LINE__
);
203 * Test del() with valid data.
205 public function testDel() {
208 'label' => 'indiviSubType',
209 'name' => 'indiviSubType',
213 $subtype = CRM_Contact_BAO_ContactType
::add($params);
214 $result = CRM_Contact_BAO_ContactType
::subTypes();
215 $this->assertEquals(TRUE, in_array($subtype->name
, $result, TRUE));
216 $this->callAPISuccess('ContactType', 'delete', ['id' => $subtype->id
]);
218 $result = CRM_Contact_BAO_ContactType
::subTypes();
219 $this->assertEquals(FALSE, in_array($subtype->name
, $result, TRUE));
223 * Test del() with invalid data
225 public function testDelInvalid() {
227 $del = CRM_Contact_BAO_ContactType
::del(NULL);
228 $this->assertEquals($del, FALSE);