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