ILIAS  release_8 Revision v8.24
ilTermsOfServiceDocumentFormGUITest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
27
33{
35 {
36 $document = $this
37 ->getMockBuilder(ilTermsOfServiceDocument::class)
38 ->disableOriginalConstructor()
39 ->addMethods(['getId'])
40 ->getMock();
41
42 $purifier = $this
43 ->getMockBuilder(ilHtmlPurifierInterface::class)
44 ->getMock();
45
46 $user = $this
47 ->getMockBuilder(ilObjUser::class)
48 ->disableOriginalConstructor()
49 ->getMock();
50
51 $fs = $this
52 ->getMockBuilder(Filesystem::class)
53 ->getMock();
54
55 $fu = $this
56 ->getMockBuilder(FileUpload::class)
57 ->getMock();
58
60 $document,
61 $purifier,
62 $user,
63 $fs,
64 $fu,
65 'action',
66 'save',
67 'cancel',
68 true
69 );
70
71 $this->assertTrue(
72 $form->getItemByPostVar('document')->getRequired(),
73 'Failed asserting document upload is required for new documents'
74 );
75
76 $this->assertCount(
77 2,
78 $form->getCommandButtons(),
79 'Failed asserting save and cancel buttons are given if form is editable'
80 );
81 $this->assertArrayHasKey(
82 0,
83 $form->getCommandButtons(),
84 'Failed asserting save and cancel buttons are given if form is editable'
85 );
86 $this->assertArrayHasKey(
87 1,
88 $form->getCommandButtons(),
89 'Failed asserting save and cancel buttons are given if form is editable'
90 );
91 $this->assertSame(
92 'save',
93 $form->getCommandButtons()[0]['cmd'],
94 'Failed asserting save and cancel buttons are given if form is editable'
95 );
96 $this->assertSame(
97 'cancel',
98 $form->getCommandButtons()[1]['cmd'],
99 'Failed asserting save and cancel buttons are given if form is editable'
100 );
101
103 $document,
104 $purifier,
105 $user,
106 $fs,
107 $fu,
108 'action',
109 'save',
110 'cancel',
111 false
112 );
113
114 $this->assertCount(
115 1,
116 $form->getCommandButtons(),
117 'Failed asserting only cancel button is given if form is not editable'
118 );
119 $this->assertArrayHasKey(
120 0,
121 $form->getCommandButtons(),
122 'Failed asserting only cancel button is given if form is not editable'
123 );
124 $this->assertSame(
125 'cancel',
126 $form->getCommandButtons()[0]['cmd'],
127 'Failed asserting only cancel button is given if form is not editable'
128 );
129 }
130
132 {
133 $document = $this
134 ->getMockBuilder(ilTermsOfServiceDocument::class)
135 ->disableOriginalConstructor()
136 ->onlyMethods(['fetchAllCriterionAssignments'])
137 ->addMethods(['getId'])
138 ->getMock();
139
140 $document
141 ->method('fetchAllCriterionAssignments');
142
143 $purifier = $this
144 ->getMockBuilder(ilHtmlPurifierInterface::class)
145 ->getMock();
146
147 $uploadResult = new UploadResult(
148 'phpunit',
149 1024,
150 'text/xml',
151 $this->getMockBuilder(ImmutableStringMap::class)->getMock(),
152 new ProcessingStatus(ProcessingStatus::OK, 'uploaded'),
153 '/tmp'
154 );
155
156 $user = $this
157 ->getMockBuilder(ilObjUser::class)
158 ->disableOriginalConstructor()
159 ->onlyMethods(['getId'])
160 ->getMock();
161
162 $user
163 ->expects($this->exactly(2))
164 ->method('getId')
165 ->willReturn(6);
166
167 $fs = $this
168 ->getMockBuilder(Filesystem::class)
169 ->getMock();
170
171 $fs
172 ->expects($this->exactly(2))
173 ->method('has')
174 ->with('/agreements/' . $uploadResult->getName())
175 ->willReturn(true);
176
177 $fs
178 ->expects($this->exactly(2))
179 ->method('read')
180 ->with('/agreements/' . $uploadResult->getName())
181 ->willReturn('phpunit');
182
183 $purifier
184 ->expects($this->atLeast(1))
185 ->method('purify')
186 ->with('phpunit')
187 ->willReturnArgument(0);
188
189 $fs
190 ->expects($this->exactly(2))
191 ->method('delete')
192 ->with('/agreements/' . $uploadResult->getName());
193
194 $fu = $this
195 ->getMockBuilder(FileUpload::class)
196 ->onlyMethods([
197 'moveFilesTo',
198 'uploadSizeLimit',
199 'register',
200 'hasBeenProcessed',
201 'hasUploads',
202 'process',
203 'getResults',
204 'moveOneFileTo'
205 ])
206 ->getMock();
207
208 $fu
209 ->method('hasUploads')
210 ->willReturn(true);
211
212 $fu
213 ->expects($this->exactly(2))
214 ->method('hasBeenProcessed')
215 ->willReturn(false);
216
217 $fu
218 ->expects($this->exactly(2))
219 ->method('process');
220
221 $fu
222 ->expects($this->exactly(2))
223 ->method('getResults')
224 ->willReturn([
225 0 => $uploadResult
226 ]);
227
228 $fu
229 ->expects($this->exactly(2))
230 ->method('moveOneFileTo')
231 ->with(
232 $uploadResult,
233 '/agreements',
234 Location::TEMPORARY,
235 $this->isEmpty(),
236 $this->isTrue()
237 );
238
239 $this->setGlobalVariable('upload', $fu);
240
241 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
242 $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
243
244 $expectedSortingValueExistingDocuments = 10;
245
246 $documentConnector
247 ->expects($this->once())
248 ->method('readSet')
249 ->willReturnCallback(function () use ($expectedSortingValueExistingDocuments) {
250 return [
251 [
252 'id' => 666,
253 'title' => 'another',
254 'sorting' => $expectedSortingValueExistingDocuments - 1,
255 ]
256 ];
257 });
258 $documentConnector->method('affectedRows')->willReturn(1);
259
260 $criterionConnector
261 ->expects($this->once())
262 ->method('readSet')
263 ->willReturn([]);
264
265 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
267 arConnectorMap::register($document, $documentConnector);
268
269 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
270 ->setConstructorArgs([
271 $document,
272 $purifier,
273 $user,
274 $fs,
275 $fu,
276 'action',
277 'save',
278 'cancel',
279 true
280 ])
281 ->onlyMethods(['checkInput'])
282 ->getMock();
283
284 $form
285 ->expects($this->once())
286 ->method('checkInput')
287 ->willReturn(true);
288
289 $_FILES['document'] = [];
290
291 $form->setCheckInputCalled(true);
292
293 $this->assertTrue($form->saveObject());
294 $this->assertFalse($form->hasTranslatedError());
295 $this->assertEmpty($form->getTranslatedError());
296 $this->assertSame(
297 $expectedSortingValueExistingDocuments,
298 $document->getSorting(),
299 'Failed asserting that the sorting of the new document equals the maximum incremented by one when other documents exist'
300 );
301
302 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
303
304 $documentConnector
305 ->expects($this->once())
306 ->method('readSet')
307 ->willReturnCallback(function () {
308 return [];
309 });
310
311 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
312
313 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
314 ->setConstructorArgs([
315 $document,
316 $purifier,
317 $user,
318 $fs,
319 $fu,
320 'action',
321 'save',
322 'cancel',
323 true
324 ])
325 ->onlyMethods(['checkInput'])
326 ->getMock();
327
328 $form
329 ->expects($this->once())
330 ->method('checkInput')
331 ->willReturn(true);
332
333 $form->setCheckInputCalled(true);
334
335 $this->assertTrue($form->saveObject());
336 $this->assertFalse($form->hasTranslatedError());
337 $this->assertEmpty($form->getTranslatedError());
338 $this->assertSame(
339 1,
340 $document->getSorting(),
341 'Failed asserting that the sorting of the new document equals 1 when no other document exists'
342 );
343 }
344
346 {
347 $document = $this
348 ->getMockBuilder(ilTermsOfServiceDocument::class)
349 ->disableOriginalConstructor()
350 ->addMethods(['getId'])
351 ->getMock();
352
353 $document
354 ->method('getId')
355 ->willReturn(1);
356
357 $purifier = $this
358 ->getMockBuilder(ilHtmlPurifierInterface::class)
359 ->getMock();
360
361 $user = $this
362 ->getMockBuilder(ilObjUser::class)
363 ->disableOriginalConstructor()
364 ->onlyMethods(['getId'])
365 ->getMock();
366
367 $fs = $this
368 ->getMockBuilder(Filesystem::class)
369 ->getMock();
370
371 $fu = $this
372 ->getMockBuilder(FileUpload::class)
373 ->getMock();
374
376 $document,
377 $purifier,
378 $user,
379 $fs,
380 $fu,
381 'action',
382 'save',
383 'cancel',
384 true
385 );
386
387 $this->assertFalse(
388 $form->getItemByPostVar('document')->getRequired(),
389 'Failed asserting document upload is not required for existing documents'
390 );
391 }
392
394 {
395 $expectedSorting = 10;
396
397 $document = $this
398 ->getMockBuilder(ilTermsOfServiceDocument::class)
399 ->disableOriginalConstructor()
400 ->onlyMethods(['fetchAllCriterionAssignments'])
401 ->getMock();
402
403 $document->setId(4711);
404 $document->setTitle('phpunit');
405 $document->setSorting($expectedSorting);
406
407 $purifier = $this
408 ->getMockBuilder(ilHtmlPurifierInterface::class)
409 ->getMock();
410
411 $user = $this
412 ->getMockBuilder(ilObjUser::class)
413 ->disableOriginalConstructor()
414 ->onlyMethods(['getId'])
415 ->getMock();
416
417 $user
418 ->expects($this->once())
419 ->method('getId')
420 ->willReturn(6);
421
422 $fs = $this
423 ->getMockBuilder(Filesystem::class)
424 ->getMock();
425
426 $fu = $this
427 ->getMockBuilder(FileUpload::class)
428 ->onlyMethods([
429 'moveFilesTo',
430 'uploadSizeLimit',
431 'register',
432 'hasBeenProcessed',
433 'hasUploads',
434 'process',
435 'getResults',
436 'moveOneFileTo'
437 ])
438 ->getMock();
439
440 $fu
441 ->method('hasUploads')
442 ->willReturn(false);
443
444 $this->setGlobalVariable('upload', $fu);
445
446 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
447 $documentConnector->method('affectedRows')->willReturn(0);
448
449 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
450 arConnectorMap::register($document, $documentConnector);
451
452 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
453 ->setConstructorArgs([
454 $document,
455 $purifier,
456 $user,
457 $fs,
458 $fu,
459 'action',
460 'save',
461 'cancel',
462 true
463 ])
464 ->onlyMethods(['checkInput'])
465 ->getMock();
466
467 $form
468 ->expects($this->once())
469 ->method('checkInput')
470 ->willReturn(true);
471
472 $form->setCheckInputCalled(true);
473
474 $this->assertTrue($form->saveObject());
475 $this->assertFalse($form->hasTranslatedError());
476 $this->assertEmpty($form->getTranslatedError());
477 $this->assertSame(
478 $expectedSorting,
479 $document->getSorting(),
480 'Failed asserting that the sorting of the existing document has not been changed'
481 );
482 }
483
485 {
486 $lng = $this->getLanguageMock();
487
488 $lng
489 ->method('txt')
490 ->willReturn('translation');
491
492 $this->setGlobalVariable('lng', $lng);
493
494 $document = $this
495 ->getMockBuilder(ilTermsOfServiceDocument::class)
496 ->disableOriginalConstructor()
497 ->onlyMethods(['fetchAllCriterionAssignments'])
498 ->addMethods(['getId'])
499 ->getMock();
500
501 $purifier = $this
502 ->getMockBuilder(ilHtmlPurifierInterface::class)
503 ->getMock();
504
505 $user = $this
506 ->getMockBuilder(ilObjUser::class)
507 ->disableOriginalConstructor()
508 ->getMock();
509
510 $fu = $this
511 ->getMockBuilder(FileUpload::class)
512 ->onlyMethods([
513 'moveFilesTo',
514 'uploadSizeLimit',
515 'register',
516 'hasBeenProcessed',
517 'hasUploads',
518 'process',
519 'getResults',
520 'moveOneFileTo'
521 ])
522 ->getMock();
523
524 $fu
525 ->expects($this->atLeast(3))
526 ->method('hasUploads')
527 ->willReturn(true);
528
529 $fu
530 ->expects($this->atLeast(3))
531 ->method('hasBeenProcessed')
532 ->willReturn(false);
533
534 $fu
535 ->expects($this->exactly(3))
536 ->method('process');
537
538 $uploadResult = new UploadResult(
539 'phpunit',
540 1024,
541 'text/xml',
542 $this->getMockBuilder(ImmutableStringMap::class)->getMock(),
543 new ProcessingStatus(ProcessingStatus::OK, 'uploaded'),
544 '/tmp'
545 );
546
547 $uploadFailingResult = new UploadResult(
548 'phpunit',
549 1024,
550 'text/xml',
551 $this->getMockBuilder(ImmutableStringMap::class)->getMock(),
552 new ProcessingStatus(ProcessingStatus::REJECTED, 'not uploaded'),
553 '/tmp'
554 );
555
556 $fu
557 ->expects($this->exactly(3))
558 ->method('getResults')
559 ->willReturnOnConsecutiveCalls(
560 [false],
561 [0 => $uploadFailingResult],
562 [0 => $uploadResult]
563 );
564
565 $fs = $this
566 ->getMockBuilder(Filesystem::class)
567 ->getMock();
568
569 $fs
570 ->expects($this->once())
571 ->method('has')
572 ->with('/agreements/' . $uploadResult->getName())
573 ->willReturn(false);
574
575 $this->setGlobalVariable('upload', $fu);
576
577 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
578
579 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
580 arConnectorMap::register($document, $documentConnector);
581
582 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
583 ->setConstructorArgs([
584 $document,
585 $purifier,
586 $user,
587 $fs,
588 $fu,
589 'action',
590 'save',
591 'cancel',
592 true
593 ])
594 ->onlyMethods(['checkInput'])
595 ->getMock();
596
597 $form
598 ->expects($this->once())
599 ->method('checkInput')
600 ->willReturn(true);
601
602 $form->setCheckInputCalled(true);
603
604 $this->assertFalse($form->saveObject());
605 $this->assertTrue($form->hasTranslatedError());
606 $this->assertNotEmpty($form->getTranslatedError());
607
608 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
609 ->setConstructorArgs([
610 $document,
611 $purifier,
612 $user,
613 $fs,
614 $fu,
615 'action',
616 'save',
617 'cancel',
618 true
619 ])
620 ->onlyMethods(['checkInput'])
621 ->getMock();
622
623 $form
624 ->expects($this->once())
625 ->method('checkInput')
626 ->willReturn(true);
627
628 $form->setCheckInputCalled(true);
629
630 $this->assertFalse($form->saveObject());
631 $this->assertTrue($form->hasTranslatedError());
632 $this->assertNotEmpty($form->getTranslatedError());
633
634 $form = $this->getMockBuilder(ilTermsOfServiceDocumentFormGUI::class)
635 ->setConstructorArgs([
636 $document,
637 $purifier,
638 $user,
639 $fs,
640 $fu,
641 'action',
642 'save',
643 'cancel',
644 true
645 ])
646 ->onlyMethods(['checkInput'])
647 ->getMock();
648
649 $form
650 ->expects($this->once())
651 ->method('checkInput')
652 ->willReturn(true);
653
654 $form->setCheckInputCalled(true);
655
656 $this->assertFalse($form->saveObject());
657 $this->assertTrue($form->hasTranslatedError());
658 $this->assertNotEmpty($form->getTranslatedError());
659 }
660}
static register(ActiveRecord $ar, arConnector $connector)
Class ilTermsOfServiceBaseTest.
setGlobalVariable(string $name, $value)
Class ilTermsOfServiceAcceptanceHistoryCriteriaBagTest.
Class ilTermsOfServiceDocumentFormGUI.
Class ilTermsOfServiceDocument.
Interface Location.
Definition: Location.php:30
Interface Filesystem.
Definition: Filesystem.php:40
$lng