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