ILIAS  release_8 Revision v8.24
ilTermsOfServiceCriterionFormGUITest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
26{
28 {
29 $document = $this
30 ->getMockBuilder(ilTermsOfServiceDocument::class)
31 ->disableOriginalConstructor()
32 ->getMock();
33
34 $criterionAssignment = $this
35 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
36 ->disableOriginalConstructor()
37 ->onlyMethods(['getCriterionId'])
38 ->addMethods(['getId'])
39 ->getMock();
40
41 $criterionAssignment
42 ->method('getId')
43 ->willReturn(0);
44
45 $criterionAssignment
46 ->method('getCriterionId')
47 ->willReturn('');
48
49 $criterionTypeFactory = $this
50 ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
51 ->getMock();
52
53 $criterionType1 = $this
54 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
55 ->getMock();
56
57 $criterionType1
58 ->method('getTypeIdent')
59 ->willReturn('dummy1');
60
61 $criterionType1
62 ->method('ui')
63 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
64
65 $criterionType2 = $this
66 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
67 ->getMock();
68
69 $criterionType2
70 ->method('getTypeIdent')
71 ->willReturn('dummy2');
72
73 $criterionType2
74 ->method('ui')
75 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
76
77 $criterionTypeFactory
78 ->expects($this->once())
79 ->method('getTypesByIdentMap')
80 ->willReturn([
81 $criterionType1,
82 $criterionType2
83 ]);
84
85 $user = $this
86 ->getMockBuilder(ilObjUser::class)
87 ->disableOriginalConstructor()
88 ->getMock();
89
91 $document,
92 $criterionAssignment,
93 $criterionTypeFactory,
94 $user,
95 '',
96 'save',
97 'cancel'
98 );
99
100 $this->assertSame($criterionType1->getTypeIdent(), $form->getItemByPostVar('criterion')->getValue());
101 }
102
104 {
105 $document = $this
106 ->getMockBuilder(ilTermsOfServiceDocument::class)
107 ->disableOriginalConstructor()
108 ->getMock();
109
110 $criterionAssignment = $this
111 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
112 ->disableOriginalConstructor()
113 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
114 ->addMethods(['getId'])
115 ->getMock();
116
117 $criterionAssignment
118 ->method('getId')
119 ->willReturn(1);
120
121 $criterionAssignment
122 ->method('getCriterionId')
123 ->willReturn('dummy2');
124
125 $criterionAssignment
126 ->method('getCriterionValue')
127 ->willReturn(new ilTermsOfServiceCriterionConfig([]));
128
129 $criterionTypeFactory = $this
130 ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
131 ->getMock();
132
133 $criterionType1 = $this
134 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
135 ->getMock();
136
137 $criterionType1
138 ->method('getTypeIdent')
139 ->willReturn('dummy1');
140
141 $criterionType1
142 ->method('ui')
143 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
144
145 $criterionType2 = $this
146 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
147 ->getMock();
148
149 $criterionType2
150 ->method('getTypeIdent')
151 ->willReturn('dummy2');
152
153 $criterionType2
154 ->method('ui')
155 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
156
157 $criterionTypeFactory
158 ->expects($this->once())
159 ->method('getTypesByIdentMap')
160 ->willReturn([
161 $criterionType1,
162 $criterionType2
163 ]);
164
165 $user = $this
166 ->getMockBuilder(ilObjUser::class)
167 ->disableOriginalConstructor()
168 ->getMock();
169
171 $document,
172 $criterionAssignment,
173 $criterionTypeFactory,
174 $user,
175 '',
176 'save',
177 'cancel'
178 );
179
180 $this->assertSame($criterionType2->getTypeIdent(), $form->getItemByPostVar('criterion')->getValue());
181 }
182
184 {
185 $document = $this
186 ->getMockBuilder(ilTermsOfServiceDocument::class)
187 ->disableOriginalConstructor()
188 ->getMock();
189
190 $document
191 ->expects($this->once())
192 ->method('save');
193
194 $document
195 ->expects($this->once())
196 ->method('attachCriterion');
197
198 $criterionAssignment = $this
199 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
200 ->disableOriginalConstructor()
201 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
202 ->addMethods(['getId'])
203 ->getMock();
204
205 $criterionAssignment
206 ->method('getId')
207 ->willReturn(0);
208
209 $criterionAssignment
210 ->method('getCriterionId')
211 ->willReturn('');
212
213 $criterionTypeFactory = $this
214 ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
215 ->getMock();
216
217 $criterionType1 = $this
218 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
219 ->getMock();
220
221 $criterionType1
222 ->method('getTypeIdent')
223 ->willReturn('dummy1');
224
225 $criterionType1
226 ->method('ui')
227 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
228
229 $criterionType2 = $this
230 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
231 ->getMock();
232
233 $criterionType2
234 ->method('getTypeIdent')
235 ->willReturn('dummy2');
236
237 $criterionType2
238 ->method('ui')
239 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
240
241 $criterionTypeFactory
242 ->expects($this->once())
243 ->method('getTypesByIdentMap')
244 ->willReturn([
245 $criterionType1,
246 $criterionType2
247 ]);
248
249 $criterionTypeFactory
250 ->expects($this->once())
251 ->method('findByTypeIdent')
252 ->willReturn($criterionType1);
253
254 $user = $this
255 ->getMockBuilder(ilObjUser::class)
256 ->disableOriginalConstructor()
257 ->onlyMethods(['getId'])
258 ->getMock();
259
260 $user
261 ->method('getId')
262 ->willReturn(6);
263
264 $form = $this->getMockBuilder(ilTermsOfServiceCriterionFormGUI::class)
265 ->setConstructorArgs([
266 $document,
267 $criterionAssignment,
268 $criterionTypeFactory,
269 $user,
270 'action',
271 'save',
272 'cancel'
273 ])
274 ->onlyMethods(['checkInput'])
275 ->getMock();
276
277 $form
278 ->expects($this->once())
279 ->method('checkInput')
280 ->willReturn(true);
281
282 $form->setCheckInputCalled(true);
283
284 $this->assertTrue($form->saveObject());
285 $this->assertFalse($form->hasTranslatedError());
286 $this->assertEmpty($form->getTranslatedError());
287 }
288
290 {
291 $lng = $this->getLanguageMock();
292
293 $lng
294 ->method('txt')
295 ->willReturn('translation');
296
297 $this->setGlobalVariable('lng', $lng);
298
299 $document = $this
300 ->getMockBuilder(ilTermsOfServiceDocument::class)
301 ->disableOriginalConstructor()
302 ->getMock();
303
304 $document
305 ->expects($this->never())
306 ->method('save');
307
308 $document
309 ->expects($this->never())
310 ->method('attachCriterion');
311
312 $criterionAssignment = $this
313 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
314 ->disableOriginalConstructor()
315 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
316 ->addMethods(['getId'])
317 ->getMock();
318
319 $criterionAssignment
320 ->method('getId')
321 ->willReturn(1);
322
323 $criterionAssignment
324 ->method('getCriterionId')
325 ->willReturn('usr_global_role');
326
327 $criterionAssignment
328 ->method('getCriterionValue')
329 ->willReturn(new ilTermsOfServiceCriterionConfig(['role_id' => 4]));
330
331 $criterionTypeFactory = $this
332 ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
333 ->getMock();
334
335 $criterionType1 = $this
336 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
337 ->getMock();
338
339 $criterionType1
340 ->method('getTypeIdent')
341 ->willReturn('dummy1');
342
343 $criterionType1
344 ->method('ui')
345 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
346
347 $criterionType2 = $this
348 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
349 ->getMock();
350
351 $criterionType2
352 ->method('getTypeIdent')
353 ->willReturn('dummy2');
354
355 $criterionTypeGui2 = $this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock();
356
357 $criterionTypeGui2
358 ->method('getConfigByForm')
359 ->willReturn($criterionAssignment->getCriterionValue());
360
361 $criterionType2
362 ->method('ui')
363 ->willReturn($criterionTypeGui2);
364
365 $criterionTypeFactory
366 ->expects($this->once())
367 ->method('getTypesByIdentMap')
368 ->willReturn([
369 $criterionType1,
370 $criterionType2
371 ]);
372
373 $criterionTypeFactory
374 ->expects($this->exactly(2))
375 ->method('findByTypeIdent')
376 ->willReturnOnConsecutiveCalls(
377 $this->throwException(new ilTermsOfServiceCriterionTypeNotFoundException('')),
378 $criterionType1
379 );
380
381 $anotherCriterionAssignment = $this
382 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
383 ->disableOriginalConstructor()
384 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
385 ->addMethods(['getId'])
386 ->getMock();
387
388 $anotherCriterionAssignment
389 ->method('getId')
390 ->willReturn(2);
391
392 $anotherCriterionAssignment
393 ->method('getCriterionId')
394 ->willReturn('usr_global_role');
395
396 $anotherCriterionAssignment
397 ->method('getCriterionValue')
398 ->willReturn(new ilTermsOfServiceCriterionConfig(['role_id' => 4]));
399
400 $document
401 ->expects($this->once())
402 ->method('criteria')
403 ->willReturn([$anotherCriterionAssignment]);
404
405 $user = $this
406 ->getMockBuilder(ilObjUser::class)
407 ->disableOriginalConstructor()
408 ->onlyMethods(['getId'])
409 ->getMock();
410
411 $user
412 ->method('getId')
413 ->willReturn(6);
414
415 $form = $this->getMockBuilder(ilTermsOfServiceCriterionFormGUI::class)
416 ->setConstructorArgs([
417 $document,
418 $criterionAssignment,
419 $criterionTypeFactory,
420 $user,
421 'action',
422 'save',
423 'cancel'
424 ])
425 ->onlyMethods(['checkInput'])
426 ->getMock();
427
428 $form
429 ->expects($this->exactly(2))
430 ->method('checkInput')
431 ->willReturn(true);
432
433 $form->setCheckInputCalled(true);
434
435 $this->assertFalse(
436 $form->saveObject(),
437 'Failed asserting form cannot be saved selected criterion type was not found'
438 );
439 $this->assertTrue($form->hasTranslatedError());
440 $this->assertNotEmpty($form->getTranslatedError());
441
442 $this->assertFalse(
443 $form->saveObject(),
444 'Failed asserting form cannot be saved selected criterion type was already assigned to document'
445 );
446 $this->assertTrue($form->hasTranslatedError());
447 $this->assertNotEmpty($form->getTranslatedError());
448 }
449}
Class ilTermsOfServiceBaseTest.
setGlobalVariable(string $name, $value)
Class ilTermsOfServiceCriterionConfig.
Class ilTermsOfServiceCriterionFormGUITest.
$lng