4 * Class CRM_Case_XMLRepositoryTest
7 class CRM_Case_XMLRepositoryTest
extends CiviUnitTestCase
{
8 protected $fixtures = [];
10 protected function setUp(): void
{
12 $this->fixtures
['CaseTypeWithSingleActivityType'] = '
14 <name>CaseTypeWithSingleActivityType</name>
17 <name>Single Activity Type</name>
18 <max_instances>1</max_instances>
23 $this->fixtures
['CaseTypeWithTwoActivityTypes'] = '
25 <name>CaseTypeWithTwoActivityTypes</name>
28 <name>First Activity Type</name>
29 <max_instances>1</max_instances>
32 <name>Second Activity Type</name>
37 $this->fixtures
['CaseTypeWithThreeActivityTypes'] = '
39 <name>CaseTypeWithThreeActivityTypes</name>
42 <name>First Activity Type</name>
43 <max_instances>1</max_instances>
46 <name>Second Activity Type</name>
49 <name>Third Activity Type</name>
54 $this->fixtures
['CaseTypeWithSingleRole'] = '
56 <name>CaseTypeWithSingleRole</name>
59 <name>Single Role</name>
65 $this->fixtures
['CaseTypeWithTwoRoles'] = '
67 <name>CaseTypeWithTwoRoles</name>
70 <name>First Role</name>
74 <name>Second Role</name>
79 $this->fixtures
['CaseTypeWithThreeRoles'] = '
81 <name>CaseTypeWithThreeRoles</name>
84 <name>First Role</name>
88 <name>Second Role</name>
91 <name>Third Role</name>
99 public function testGetAllDeclaredActivityTypes() {
100 $repo = new CRM_Case_XMLRepository(
101 ['CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'],
103 'CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures
['CaseTypeWithTwoActivityTypes']),
104 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures
['CaseTypeWithThreeActivityTypes']),
105 /* healthful noise: */
106 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleRole']),
110 // omitted: 'Single Activity Type'
111 $expected = ['First Activity Type', 'Second Activity Type', 'Third Activity Type'];
112 $actual = $repo->getAllDeclaredActivityTypes();
113 $this->assertEquals($expected, $actual);
116 public function testGetAllDeclaredRelationshipTypes() {
117 $repo = new CRM_Case_XMLRepository(
118 ['CaseTypeWithTwoRoles', 'CaseTypeWithThreeRoles', 'CaseTypeWithSingleActivityType'],
120 'CaseTypeWithTwoRoles' => new SimpleXMLElement($this->fixtures
['CaseTypeWithTwoRoles']),
121 'CaseTypeWithThreeRoles' => new SimpleXMLElement($this->fixtures
['CaseTypeWithThreeRoles']),
122 /* healthful noise: */
123 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleActivityType']),
126 // omitted: 'Single Role'
127 $expected = ['First Role', 'Second Role', 'Third Role'];
128 $actual = $repo->getAllDeclaredRelationshipTypes();
129 $this->assertEquals($expected, $actual);
132 public function testGetActivityReferenceCount_1() {
133 $repo = new CRM_Case_XMLRepository(
134 ['CaseTypeWithSingleActivityType'],
136 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleActivityType']),
137 /* healthful noise: */
138 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleRole']),
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'));
148 public function testGetActivityReferenceCount_23() {
149 $repo = new CRM_Case_XMLRepository(
150 ['CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'],
152 'CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures
['CaseTypeWithTwoActivityTypes']),
153 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures
['CaseTypeWithThreeActivityTypes']),
155 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleRole']),
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'));
165 public function testGetRoleReferenceCount_1() {
166 $repo = new CRM_Case_XMLRepository(
167 ['CaseTypeWithSingleRole', 'CaseTypeWithSingleActivityType'],
169 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleRole']),
170 /* healthful noise: */
171 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleActivityType']),
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'));
181 public function testGetRoleReferenceCount_23() {
182 $repo = new CRM_Case_XMLRepository(
183 ['CaseTypeWithTwoRoles', 'CaseTypeWithThreeRoles', 'CaseTypeWithSingleActivityType'],
185 'CaseTypeWithTwoRoles' => new SimpleXMLElement($this->fixtures
['CaseTypeWithTwoRoles']),
186 'CaseTypeWithThreeRoles' => new SimpleXMLElement($this->fixtures
['CaseTypeWithThreeRoles']),
187 /* healthful noise: */
188 'CaseTypeWithSingleActivityType' => new SimpleXMLElement($this->fixtures
['CaseTypeWithSingleActivityType']),
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'));