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 $definition->expects(self::exactly(3))->method(
'withCriterion')->withConsecutive([$content], [$other_existing_content], [$content])->willReturn($condition);
227 'hoo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$existing_content], $condition),
228 'foo' => $definition,
229 ]), [], $this->mock(Container::class));
231 $result = $instance->validateCriteriaContent([
232 $this->mockTree(Criterion::class, [
'content' => $existing_content]),
233 $this->mockTree(Criterion::class, [
'content' => $other_existing_content]),
235 $this->assertTrue($result->isOk());
236 $this->assertSame($content, $result->value());
243 $instance =
new ProvideDocument(
'foo', $this->mock(DocumentRepository::class),
new SelectionMap(), [], $this->mock(Container::class));
244 $result = $instance->validateCriteriaContent([
245 $this->mockTree(Criterion::class, [
'content' =>
new CriterionContent(
'foo', [
'bar'])])
247 $this->assertFalse($result->isOk());
256 $condition = $this->mock(Condition::class);
257 $condition->expects(self::once(1))->method(
'knownToNeverMatchWith')->with($condition)->willReturn(
true);
260 'hoo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$existing_content], $condition),
261 'foo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$content], $condition),
262 ]), [], $this->mock(Container::class));
264 $result = $instance->validateCriteriaContent([
265 $this->mockTree(Criterion::class, [
'content' => $existing_content]),
267 $this->assertFalse($result->isOk());
273 $content = $this->mockTree(DocumentContent::class, [
'type' =>
'html']);
274 $component = $this->mock(Component::class);
278 $this->assertSame($content, $c);
281 ], $this->mock(Container::class));
283 $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...
testConditionGroupsWithoutContent()
testNeverMatchingCriteriaContent()
chooseDocumentFor(ilObjUser $user)
const CRITERION_WOULD_NEVER_MATCH
testDuplicateCriteriaContent()