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