ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
AdministrationTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
39 use ILIAS\Refinery\KindlyTo\Group as KindlyToGroup;
41 
42 require_once __DIR__ . '/ContainerMock.php';
43 
44 class AdministrationTest extends TestCase
45 {
46  use ContainerMock;
47 
48  public function testConstruct(): void
49  {
50  $config = $this->getMockBuilder(Config::class)->disableOriginalConstructor()->getMock();
51  $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
52  $ui = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
53 
54  $this->assertInstanceOf(Administration::class, new Administration($config, $container, $ui));
55  }
56 
57  public function testDeleteDocumentsConfirmation(): void
58  {
59  $config = $this->getMockBuilder(Config::class)->disableOriginalConstructor()->getMock();
60  $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
61  $ui = $this->mockMethod(UI::class, 'txt', ['sure_delete_documents_p'], 'translated');
62 
63  $documents = [$this->doc(9, 'First title'), $this->doc(49, 'Second title')];
64 
65  $confirmation = $this->mockMethod(
66  Confirmation::class,
67  'render',
68  [
69  'link',
70  'submitCommand',
71  'cancelCommand',
72  'translated',
73  [9 => 'First title', 49 => 'Second title']
74  ],
75  'rendered'
76  );
77 
78  $instance = new Administration($config, $container, $ui, fn() => $confirmation);
79  $this->assertSame('rendered', $instance->deleteDocumentsConfirmation('link', 'submitCommand', 'cancelCommand', $documents));
80  }
81 
82  public function testDeleteDocuments(): void
83  {
84  $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
85  $ui = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
86 
87  $documents = [
88  $this->getMockBuilder(Document::class)->disableOriginalConstructor()->getMock(),
89  $this->getMockBuilder(Document::class)->disableOriginalConstructor()->getMock(),
90  $this->getMockBuilder(Document::class)->disableOriginalConstructor()->getMock(),
91  ];
92 
93  $repository = $this->getMockBuilder(DocumentRepository::class)->getMock();
94 
95  $consecutive = $documents;
96  $repository->expects(self::exactly(count($documents)))->method('deleteDocument')->with(
97  $this->callback(function ($value) use (&$consecutive) {
98  $this->assertSame(array_shift($consecutive), $value);
99  return true;
100  })
101  );
102 
103  $config = $this->mockMethod(Config::class, 'legalDocuments', [], $this->mockMethod(
104  Provide::class,
105  'document',
106  [],
107  $this->mockMethod(ProvideDocument::class, 'repository', [], $repository)
108  ));
109 
110  $instance = new Administration($config, $container, $ui);
111  $instance->deleteDocuments($documents);
112  }
113 
114  public function testWithDocumentAndCriterion(): void
115  {
116  $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
117  $ui = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
118 
119  $criterion = $this->mockMethod(Criterion::class, 'id', [], 98);
120  $document = $this->mockMethod(Document::class, 'criteria', [], [
121  $this->mockMethod(Criterion::class, 'id', [], 8),
122  $criterion,
123  ]);
124 
125  $repository = $this->mockMethod(DocumentRepository::class, 'find', [459], new Ok($document));
126  $config = $this->mockMethod(Config::class, 'legalDocuments', [], $this->mockMethod(
127  Provide::class,
128  'document',
129  [],
130  $this->mockMethod(ProvideDocument::class, 'repository', [], $repository)
131  ));
132 
133  $query_params = ['doc_id' => '459', 'criterion_id' => '98'];
134 
135  $http = $this->mockMethod(HTTPServices::class, 'request', [], $this->mockMethod(
136  ServerRequestInterface::class,
137  'getQueryParams',
138  [],
139  $query_params,
140  self::exactly(2)
141  ), self::exactly(2));
142 
143  $refinery = $this->mockMethod(Refinery::class, 'kindlyTo', [], $this->mockMethod(KindlyToGroup::class, 'int', [], $this->mockMethod(
144  Transformation::class,
145  'applyTo',
146  [new Ok('459')],
147  new Ok(459)
148  )));
149 
150  $container->method('http')->willReturn($http);
151  $container->method('refinery')->willReturn($refinery);
152 
153  $called = false;
154  $instance = new Administration($config, $container, $ui);
155  $instance->withDocumentAndCriterion(function ($d, $c) use ($document, $criterion, &$called) {
156  $this->assertSame($document, $d);
157  $this->assertSame($criterion, $c);
158  $called = true;
159  });
160  $this->assertTrue($called);
161  }
162 
163  private function doc(int $id, string $title): Document
164  {
165  $document = $this->getMockBuilder(Document::class)->disableOriginalConstructor()->getMock();
166  $document->expects(self::once())->method('id')->willReturn($id);
167  $document->expects(self::once())->method('content')->willReturn(
168  $this->mockMethod(DocumentContent::class, 'title', [], $title)
169  );
170 
171  return $document;
172  }
173 }
Transformations in this group transform data to primitive types to establish a baseline for more comp...
Definition: Group.php:47
$http
Definition: deliver.php:14
$c
Definition: deliver.php:9
$container
Definition: wac.php:13
A result encapsulates a value or an error and simplifies the handling of those.
Definition: Ok.php:16
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24