19 declare(strict_types=1);
54 require_once __DIR__ .
'/../ContainerMock.php';
64 $this->mock(DocumentRepository::class),
67 $this->mockTree(Container::class, [
'user' => [
'getTimeZone' =>
'europe/berlin']])
75 $uri =
'http://myIlias/ilias.php?baseClass=iladministrationgui&cmdNode=2g:qo:gq&cmdClass=ilLegalDocumentsAdministrationGUI&cmd=documents&ref_id=50';
77 $container = $this->mockTree(Container::class, [
83 'http' => [
'request' => [
'getUri' => [
'__toString' => $uri]]],
85 'user' => [
'getTimeZone' =>
'europe/berlin'],
89 $this->assertInstanceOf(DocumentTable::class, $instance->table($dummy_gui));
94 if (!defined(
'ILIAS_HTTP_PATH')) {
95 define(
'ILIAS_HTTP_PATH',
'http://localhost');
100 $uri =
'http://myIlias/ilias.php?baseClass=iladministrationgui&cmdNode=2g:qo:gq&cmdClass=ilLegalDocumentsAdministrationGUI&cmd=documents&ref_id=50';
102 $container = $this->mockTree(Container::class, [
104 'factory' => [
'table' => [
'action' => [
'multi' => []]]],
105 'mainTemplate' => [],
108 'http' => [
'request' => [
'getUri' => [
'__toString' => $uri]]],
110 'user' => [
'getTimeZone' =>
'europe/berlin'],
114 $this->assertInstanceOf(DocumentTable::class, $instance->table($dummy_gui, $this->mock(EditLinks::class)));
119 $document = $this->mockMethod(Document::class,
'criteria', [], []);
120 $user = $this->mock(ilObjUser::class);
122 $criterion = $this->mockTree(Criterion::class, [
'content' => [
'type' =>
'bar']]);
124 $repository = $this->mockMethod(DocumentRepository::class,
'all', [], [
125 $this->mockMethod(Document::class,
'criteria', [], [$criterion]),
130 'bar' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$criterion->content()], $this->mockMethod(
136 ]), [], $this->mock(Container::class));
138 $this->assertTrue($result->isOk());
139 $this->assertSame($document, $result->value());
144 $criterion = $this->mockTree(Criterion::class, [
'content' => [
'type' =>
'bar']]);
145 $document = $this->mockMethod(Document::class,
'criteria', [], [$criterion]);
146 $user = $this->mock(ilObjUser::class);
149 'bar' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$criterion->content()], $this->mockMethod(
155 ]), [], $this->mock(Container::class));
157 $this->assertTrue($instance->documentMatches($document, $user));
162 $repository = $this->mock(DocumentRepository::class);
164 $this->assertSame($repository, $instance->repository());
169 $instance =
new ProvideDocument(
'foo', $this->mock(DocumentRepository::class),
new SelectionMap(), [], $this->mock(Container::class));
170 $hash = $instance->hash();
171 $this->assertTrue(is_string($hash));
172 $this->assertSame(254, strlen($hash));
177 $condition = $this->mock(Condition::class);
178 $content = $this->mockMethod(CriterionContent::class,
'type', [],
'bar');
181 'bar' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$content], $condition),
182 ]), [], $this->mock(Container::class));
184 $this->assertSame($condition, $instance->toCondition($content));
189 $group = $this->mock(Group::class);
192 'bar' => $this->mockMethod(ConditionDefinition::class,
'formGroup', [[]], $group),
193 'baz' => $this->mockMethod(ConditionDefinition::class,
'formGroup', [[]], $group),
194 ]), [], $this->mock(Container::class));
196 $this->assertSame([
'bar' => $group,
'baz' => $group], $instance->conditionGroups()->choices());
201 $group = $this->mock(Group::class);
202 $content = $this->mockTree(CriterionContent::class, [
204 'arguments' => [
'a',
'b',
'c'],
208 'bar' => $this->mockMethod(ConditionDefinition::class,
'formGroup', [[]], $group),
209 'baz' => $this->mockMethod(ConditionDefinition::class,
'formGroup', [$content->arguments()], $group),
210 ]), [], $this->mock(Container::class));
212 $this->assertSame([
'bar' => $group,
'baz' => $group], $instance->conditionGroups($content)->choices());
221 $condition = $this->mock(Condition::class);
222 $condition->expects(self::exactly(2))->method(
'knownToNeverMatchWith')->with($condition)->willReturn(
false);
224 $definition = $this->mock(ConditionDefinition::class);
225 $consecutive = [$content, $other_existing_content, $content];
226 $definition->expects(self::exactly(3))->method(
'withCriterion')->with(
227 $this->callback(
function ($value) use (&$consecutive) {
228 $this->assertSame(array_shift($consecutive), $value);
231 )->willReturn($condition);
234 'hoo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$existing_content], $condition),
235 'foo' => $definition,
236 ]), [], $this->mock(Container::class));
238 $result = $instance->validateCriteriaContent([
239 $this->mockTree(Criterion::class, [
'content' => $existing_content]),
240 $this->mockTree(Criterion::class, [
'content' => $other_existing_content]),
242 $this->assertTrue($result->isOk());
243 $this->assertSame($content, $result->value());
250 $instance =
new ProvideDocument(
'foo', $this->mock(DocumentRepository::class),
new SelectionMap(), [], $this->mock(Container::class));
251 $result = $instance->validateCriteriaContent([
252 $this->mockTree(Criterion::class, [
'content' =>
new CriterionContent(
'foo', [
'bar'])])
254 $this->assertFalse($result->isOk());
263 $condition = $this->mock(Condition::class);
264 $condition->expects(self::once())->method(
'knownToNeverMatchWith')->with($condition)->willReturn(
true);
267 'hoo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$existing_content], $condition),
268 'foo' => $this->mockMethod(ConditionDefinition::class,
'withCriterion', [$content], $condition),
269 ]), [], $this->mock(Container::class));
271 $result = $instance->validateCriteriaContent([
272 $this->mockTree(Criterion::class, [
'content' => $existing_content]),
274 $this->assertFalse($result->isOk());
280 $content = $this->mockTree(DocumentContent::class, [
'type' =>
'html']);
281 $component = $this->mock(Component::class);
285 $this->assertSame($content, $c);
288 ], $this->mock(Container::class));
290 $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()