19 declare(strict_types=1);
    49 require_once __DIR__ . 
'/../ContainerMock.php';
    59             $this->mock(DocumentRepository::class),
    62             $this->mock(Container::class)
    69         $legacy = $this->mock(Legacy::class);
    71         $container = $this->mockTree(Container::class, [
    73                 'factory' => $this->mockMethod(UIFactory::class, 
'legacy', [
'table html'], $legacy),
    74                 'mainTemplate' => $this->mock(ilGlobalTemplateInterface::class),
    76             'language' => $this->mock(ilLanguage::class),
    79         $table = $this->mockMethod(LegacyTable::class, 
'getHTML', [], 
'table html');
    81             $this->assertSame($dummy_gui, $gui);
    82             $this->assertSame(
'dummy command', $command);
    83             $this->assertInstanceOf(DocumentTable::class, $t);
    88         $this->assertSame($legacy, $instance->table($dummy_gui, 
'dummy command'));
    94         $legacy = $this->mock(Legacy::class);
    96         $container = $this->mockTree(Container::class, [
    98                 'factory' => $this->mockMethod(UIFactory::class, 
'legacy', [
'table html'], $legacy),
    99                 'mainTemplate' => $this->mock(ilGlobalTemplateInterface::class),
   101             'language' => $this->mock(ilLanguage::class),
   104         $table = $this->mockMethod(LegacyTable::class, 
'getHTML', [], 
'table html');
   106             $this->assertSame($dummy_gui, $gui);
   107             $this->assertSame(
'dummy command', $command);
   108             $this->assertInstanceOf(EditableDocumentTable::class, $t);
   113         $this->assertSame($legacy, $instance->table($dummy_gui, 
'dummy command', $this->mock(EditLinks::class)));
   118         $document = $this->mockMethod(Document::class, 
'criteria', [], []);
   119         $user = $this->mock(ilObjUser::class);
   121         $criterion = $this->mockTree(Criterion::class, [
'content' => [
'type' => 
'bar']]);
   123         $repository = $this->mockMethod(DocumentRepository::class, 
'all', [], [
   124             $this->mockMethod(Document::class, 
'criteria', [], [$criterion]),
   129             'bar' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$criterion->content()], $this->mockMethod(
   135         ]), [], $this->mock(Container::class));
   137         $this->assertTrue($result->isOk());
   138         $this->assertSame($document, $result->value());
   143         $criterion = $this->mockTree(Criterion::class, [
'content' => [
'type' => 
'bar']]);
   144         $document = $this->mockMethod(Document::class, 
'criteria', [], [$criterion]);
   145         $user = $this->mock(ilObjUser::class);
   148             'bar' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$criterion->content()], $this->mockMethod(
   154         ]), [], $this->mock(Container::class));
   156         $this->assertTrue($instance->documentMatches($document, $user));
   161         $repository = $this->mock(DocumentRepository::class);
   163         $this->assertSame($repository, $instance->repository());
   168         $instance = 
new ProvideDocument(
'foo', $this->mock(DocumentRepository::class), 
new SelectionMap(), [], $this->mock(Container::class));
   169         $hash = $instance->hash();
   170         $this->assertTrue(is_string($hash));
   171         $this->assertSame(254, strlen($hash));
   176         $condition = $this->mock(Condition::class);
   177         $content = $this->mockMethod(CriterionContent::class, 
'type', [], 
'bar');
   180             'bar' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$content], $condition),
   181         ]), [], $this->mock(Container::class));
   183         $this->assertSame($condition, $instance->toCondition($content));
   188         $group = $this->mock(Group::class);
   191             'bar' => $this->mockMethod(ConditionDefinition::class, 
'formGroup', [[]], $group),
   192             'baz' => $this->mockMethod(ConditionDefinition::class, 
'formGroup', [[]], $group),
   193         ]), [], $this->mock(Container::class));
   195         $this->assertSame([
'bar' => $group, 
'baz' => $group], $instance->conditionGroups()->choices());
   200         $group = $this->mock(Group::class);
   201         $content = $this->mockTree(CriterionContent::class, [
   203             'arguments' => [
'a', 
'b', 
'c'],
   207             'bar' => $this->mockMethod(ConditionDefinition::class, 
'formGroup', [[]], $group),
   208             'baz' => $this->mockMethod(ConditionDefinition::class, 
'formGroup', [$content->arguments()], $group),
   209         ]), [], $this->mock(Container::class));
   211         $this->assertSame([
'bar' => $group, 
'baz' => $group], $instance->conditionGroups($content)->choices());
   220         $condition = $this->mock(Condition::class);
   221         $condition->expects(self::exactly(2))->method(
'knownToNeverMatchWith')->with($condition)->willReturn(
false);
   223         $definition = $this->mock(ConditionDefinition::class);
   224         $consecutive = [$content, $other_existing_content, $content];
   225         $definition->expects(self::exactly(3))->method(
'withCriterion')->with(
   226             $this->callback(
function ($value) use (&$consecutive) {
   227                 $this->assertSame(array_shift($consecutive), $value);
   230         )->willReturn($condition);
   233             'hoo' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$existing_content], $condition),
   234             'foo' => $definition,
   235         ]), [], $this->mock(Container::class));
   237         $result = $instance->validateCriteriaContent([
   238             $this->mockTree(Criterion::class, [
'content' => $existing_content]),
   239             $this->mockTree(Criterion::class, [
'content' => $other_existing_content]),
   241         $this->assertTrue($result->isOk());
   242         $this->assertSame($content, $result->value());
   249         $instance = 
new ProvideDocument(
'foo', $this->mock(DocumentRepository::class), 
new SelectionMap(), [], $this->mock(Container::class));
   250         $result = $instance->validateCriteriaContent([
   251             $this->mockTree(Criterion::class, [
'content' => 
new CriterionContent(
'foo', [
'bar'])])
   253         $this->assertFalse($result->isOk());
   262         $condition = $this->mock(Condition::class);
   263         $condition->expects(self::once())->method(
'knownToNeverMatchWith')->with($condition)->willReturn(
true);
   266             'hoo' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$existing_content], $condition),
   267             'foo' => $this->mockMethod(ConditionDefinition::class, 
'withCriterion', [$content], $condition),
   268         ]), [], $this->mock(Container::class));
   270         $result = $instance->validateCriteriaContent([
   271             $this->mockTree(Criterion::class, [
'content' => $existing_content]),
   273         $this->assertFalse($result->isOk());
   279         $content = $this->mockTree(DocumentContent::class, [
'type' => 
'html']);
   280         $component = $this->mock(Component::class);
   284                 $this->assertSame($content, $c);
   287         ], $this->mock(Container::class));
   289         $this->assertSame($component, $instance->contentAsComponent($content));
 
testValidateCriteriaContent()
 
const CRITERION_ALREADY_EXISTS
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
testConditionGroupsWithoutContent()
 
testNeverMatchingCriteriaContent()
 
chooseDocumentFor(ilObjUser $user)
 
const CRITERION_WOULD_NEVER_MATCH
 
testDuplicateCriteriaContent()