Commit | Line | Data |
---|---|---|
e19323c9 TO |
1 | <?php |
2 | ||
aba1cd8b EM |
3 | /** |
4 | * Class CRM_Case_XMLRepositoryTest | |
acb109b7 | 5 | * @group headless |
aba1cd8b | 6 | */ |
e19323c9 | 7 | class 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 | } |