Merge pull request #4693 from jaapjansma/CRM-15702
[civicrm-core.git] / tests / phpunit / CRM / Case / XMLRepositoryTest.php
1 <?php
2
3 require_once 'CiviTest/CiviUnitTestCase.php';
4
5 /**
6 * Class CRM_Case_XMLRepositoryTest
7 */
8 class CRM_Case_XMLRepositoryTest extends CiviUnitTestCase {
9 protected $fixtures = array();
10
11 protected function setUp() {
12 parent::setUp();
13 $this->fixtures['CaseTypeWithSingleActivityType'] = '
14 <CaseType>
15 <name>CaseTypeWithSingleActivityType</name>
16 <ActivityTypes>
17 <ActivityType>
18 <name>Single Activity Type</name>
19 <max_instances>1</max_instances>
20 </ActivityType>
21 </ActivityTypes>
22 </CaseType>
23 ';
24 $this->fixtures['CaseTypeWithTwoActivityTypes'] = '
25 <CaseType>
26 <name>CaseTypeWithTwoActivityTypes</name>
27 <ActivityTypes>
28 <ActivityType>
29 <name>First Activity Type</name>
30 <max_instances>1</max_instances>
31 </ActivityType>
32 <ActivityType>
33 <name>Second Activity Type</name>
34 </ActivityType>
35 </ActivityTypes>
36 </CaseType>
37 ';
38 $this->fixtures['CaseTypeWithThreeActivityTypes'] = '
39 <CaseType>
40 <name>CaseTypeWithThreeActivityTypes</name>
41 <ActivityTypes>
42 <ActivityType>
43 <name>First Activity Type</name>
44 <max_instances>1</max_instances>
45 </ActivityType>
46 <ActivityType>
47 <name>Second Activity Type</name>
48 </ActivityType>
49 <ActivityType>
50 <name>Third Activity Type</name>
51 </ActivityType>
52 </ActivityTypes>
53 </CaseType>
54 ';
55 $this->fixtures['CaseTypeWithSingleRole'] = '
56 <CaseType>
57 <name>CaseTypeWithSingleRole</name>
58 <CaseRoles>
59 <RelationshipType>
60 <name>Single Role</name>
61 <creator>1</creator>
62 </RelationshipType>
63 </CaseRoles>
64 </CaseType>
65 ';
66 $this->fixtures['CaseTypeWithTwoRoles'] = '
67 <CaseType>
68 <name>CaseTypeWithTwoRoles</name>
69 <CaseRoles>
70 <RelationshipType>
71 <name>First Role</name>
72 <creator>1</creator>
73 </RelationshipType>
74 <RelationshipType>
75 <name>Second Role</name>
76 </RelationshipType>
77 </CaseRoles>
78 </CaseType>
79 ';
80 $this->fixtures['CaseTypeWithThreeRoles'] = '
81 <CaseType>
82 <name>CaseTypeWithThreeRoles</name>
83 <CaseRoles>
84 <RelationshipType>
85 <name>First Role</name>
86 <creator>1</creator>
87 </RelationshipType>
88 <RelationshipType>
89 <name>Second Role</name>
90 </RelationshipType>
91 <RelationshipType>
92 <name>Third Role</name>
93 </RelationshipType>
94 </CaseRoles>
95 </CaseType>
96 ';
97
98 }
99
100 function testGetAllDeclaredActivityTypes() {
101 $repo = new CRM_Case_XMLRepository(
102 array('CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'),
103 array(
104 'CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoActivityTypes']),
105 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeActivityTypes']),
106 /* healthful noise: */
107 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole']),
108 )
109 );
110
111 // omitted: 'Single Activity Type'
112 $expected = array('First Activity Type', 'Second Activity Type', 'Third Activity Type');
113 $actual = $repo->getAllDeclaredActivityTypes();
114 $this->assertEquals($expected, $actual);
115 }
116
117 function testGetAllDeclaredRelationshipTypes() {
118 $repo = new CRM_Case_XMLRepository(
119 array('CaseTypeWithTwoRoles', 'CaseTypeWithThreeRoles', 'CaseTypeWithSingleActivityType'),
120 array(
121 'CaseTypeWithTwoRoles' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoRoles']),
122 'CaseTypeWithThreeRoles' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeRoles']),
123 /* healthful noise: */
124 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleActivityType']),
125 )
126 );
127 // omitted: 'Single Role'
128 $expected = array('First Role', 'Second Role', 'Third Role');
129 $actual = $repo->getAllDeclaredRelationshipTypes();
130 $this->assertEquals($expected, $actual);
131 }
132
133 function testGetActivityReferenceCount_1() {
134 $repo = new CRM_Case_XMLRepository(
135 array('CaseTypeWithSingleActivityType'),
136 array(
137 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleActivityType']),
138 /* healthful noise: */
139 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole']),
140 )
141 );
142
143 $this->assertEquals(1, $repo->getActivityReferenceCount('Single Activity Type'));
144 $this->assertEquals(0, $repo->getActivityReferenceCount('First Activity Type'));
145 $this->assertEquals(0, $repo->getActivityReferenceCount('Second Activity Type'));
146 $this->assertEquals(0, $repo->getActivityReferenceCount('Third Activity Type'));
147 }
148
149 function testGetActivityReferenceCount_23() {
150 $repo = new CRM_Case_XMLRepository(
151 array('CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'),
152 array(
153 'CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoActivityTypes']),
154 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeActivityTypes']),
155 /* noise: */
156 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole']),
157 )
158 );
159
160 $this->assertEquals(0, $repo->getActivityReferenceCount('Single Activity Type'));
161 $this->assertEquals(2, $repo->getActivityReferenceCount('First Activity Type'));
162 $this->assertEquals(2, $repo->getActivityReferenceCount('Second Activity Type'));
163 $this->assertEquals(1, $repo->getActivityReferenceCount('Third Activity Type'));
164 }
165
166 function testGetRoleReferenceCount_1() {
167 $repo = new CRM_Case_XMLRepository(
168 array('CaseTypeWithSingleRole', 'CaseTypeWithSingleActivityType'),
169 array(
170 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole']),
171 /* healthful noise: */
172 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleActivityType']),
173 )
174 );
175
176 $this->assertEquals(1, $repo->getRelationshipReferenceCount('Single Role'));
177 $this->assertEquals(0, $repo->getRelationshipReferenceCount('First Role'));
178 $this->assertEquals(0, $repo->getRelationshipReferenceCount('Second Role'));
179 $this->assertEquals(0, $repo->getRelationshipReferenceCount('Third Role'));
180 }
181
182 function testGetRoleReferenceCount_23() {
183 $repo = new CRM_Case_XMLRepository(
184 array('CaseTypeWithTwoRoles', 'CaseTypeWithThreeRoles', 'CaseTypeWithSingleActivityType'),
185 array(
186 'CaseTypeWithTwoRoles' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoRoles']),
187 'CaseTypeWithThreeRoles' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeRoles']),
188 /* healthful noise: */
189 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleActivityType']),
190 )
191 );
192
193 $this->assertEquals(0, $repo->getRelationshipReferenceCount('Single Role'));
194 $this->assertEquals(2, $repo->getRelationshipReferenceCount('First Role'));
195 $this->assertEquals(2, $repo->getRelationshipReferenceCount('Second Role'));
196 $this->assertEquals(1, $repo->getRelationshipReferenceCount('Third Role'));
197 }
198 }