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