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