308 : void
309 {
311
313 ->expects($this->any())
314 ->method('txt')
315 ->willReturn('translation');
316
318
319 $document = $this
320 ->getMockBuilder(ilTermsOfServiceDocument::class)
321 ->disableOriginalConstructor()
322 ->getMock();
323
324 $document
325 ->expects($this->never())
326 ->method('save');
327
328 $document
329 ->expects($this->never())
330 ->method('attachCriterion');
331
332 $criterionAssignment = $this
333 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
334 ->disableOriginalConstructor()
335 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
336 ->addMethods(['getId'])
337 ->getMock();
338
339 $criterionAssignment
340 ->expects($this->any())
341 ->method('getId')
342 ->willReturn(1);
343
344 $criterionAssignment
345 ->expects($this->any())
346 ->method('getCriterionId')
347 ->willReturn('usr_global_role');
348
349 $criterionAssignment
350 ->expects($this->any())
351 ->method('getCriterionValue')
353
354 $criterionTypeFactory = $this
355 ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
356 ->getMock();
357
358 $criterionType1 = $this
359 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
360 ->getMock();
361
362 $criterionType1
363 ->expects($this->any())
364 ->method('getTypeIdent')
365 ->willReturn('dummy1');
366
367 $criterionType1
368 ->expects($this->any())
369 ->method('ui')
370 ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
371
372 $criterionType2 = $this
373 ->getMockBuilder(ilTermsOfServiceCriterionType::class)
374 ->getMock();
375
376 $criterionType2
377 ->expects($this->any())
378 ->method('getTypeIdent')
379 ->willReturn('dummy2');
380
381 $criterionTypeGui2 = $this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock();
382
383 $criterionTypeGui2
384 ->expects($this->any())
385 ->method('getConfigByForm')
386 ->willReturn($criterionAssignment->getCriterionValue());
387
388 $criterionType2
389 ->expects($this->any())
390 ->method('ui')
391 ->willReturn($criterionTypeGui2);
392
393 $criterionTypeFactory
394 ->expects($this->once())
395 ->method('getTypesByIdentMap')
396 ->willReturn([
397 $criterionType1,
398 $criterionType2
399 ]);
400
401 $criterionTypeFactory
402 ->expects($this->exactly(2))
403 ->method('findByTypeIdent')
404 ->willReturnOnConsecutiveCalls(
406 $criterionType1
407 );
408
409 $anotherCriterionAssignment = $this
410 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
411 ->disableOriginalConstructor()
412 ->onlyMethods(['getCriterionId', 'getCriterionValue'])
413 ->addMethods(['getId'])
414 ->getMock();
415
416 $anotherCriterionAssignment
417 ->expects($this->any())
418 ->method('getId')
419 ->willReturn(2);
420
421 $anotherCriterionAssignment
422 ->expects($this->any())
423 ->method('getCriterionId')
424 ->willReturn('usr_global_role');
425
426 $anotherCriterionAssignment
427 ->expects($this->any())
428 ->method('getCriterionValue')
430
431 $document
432 ->expects($this->once())
433 ->method('criteria')
434 ->willReturn([$anotherCriterionAssignment]);
435
436 $user = $this
437 ->getMockBuilder(ilObjUser::class)
438 ->disableOriginalConstructor()
439 ->onlyMethods(['getId'])
440 ->getMock();
441
442 $user
443 ->expects($this->any())
444 ->method('getId')
445 ->willReturn(6);
446
447 $form = $this->getMockBuilder(ilTermsOfServiceCriterionFormGUI::class)
448 ->setConstructorArgs([
449 $document,
450 $criterionAssignment,
451 $criterionTypeFactory,
452 $user,
453 'action',
454 'save',
455 'cancel'
456 ])
457 ->onlyMethods(['checkInput'])
458 ->getMock();
459
460 $form
461 ->expects($this->exactly(2))
462 ->method('checkInput')
463 ->willReturn(true);
464
466 'criterion' => $criterionType1->getTypeIdent()
467 ];
468
469 $form->setCheckInputCalled(true);
470
471 $this->assertFalse(
472 $form->saveObject(),
473 'Failed asserting form cannot be saved selected criterion type was not found'
474 );
475 $this->assertTrue($form->hasTranslatedError());
476 $this->assertNotEmpty($form->getTranslatedError());
477
478 $this->assertFalse(
479 $form->saveObject(),
480 'Failed asserting form cannot be saved selected criterion type was already assigned to document'
481 );
482 $this->assertTrue($form->hasTranslatedError());
483 $this->assertNotEmpty($form->getTranslatedError());
484 }
setGlobalVariable(string $name, $value)
Class ilTermsOfServiceCriterionConfig.
Class ilTermsOfServiceCriterionTypeNotFoundException.