ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
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  $repository->expects(self::exactly(count($documents)))->method('deleteDocument')->withConsecutive(...array_map(fn($d) => [$d], $documents));
95 
96  $config = $this->mockMethod(Config::class, 'legalDocuments', [], $this->mockMethod(
97  Provide::class,
98  'document',
99  [],
100  $this->mockMethod(ProvideDocument::class, 'repository', [], $repository)
101  ));
102 
103  $instance = new Administration($config, $container, $ui);
104  $instance->deleteDocuments($documents);
105  }
106 
107  public function testWithDocumentAndCriterion(): void
108  {
109  $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
110  $ui = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
111 
112  $criterion = $this->mockMethod(Criterion::class, 'id', [], 98);
113  $document = $this->mockMethod(Document::class, 'criteria', [], [
114  $this->mockMethod(Criterion::class, 'id', [], 8),
115  $criterion,
116  ]);
117 
118  $repository = $this->mockMethod(DocumentRepository::class, 'find', [459], new Ok($document));
119  $config = $this->mockMethod(Config::class, 'legalDocuments', [], $this->mockMethod(
120  Provide::class,
121  'document',
122  [],
123  $this->mockMethod(ProvideDocument::class, 'repository', [], $repository)
124  ));
125 
126  $query_params = ['doc_id' => '459', 'criterion_id' => '98'];
127 
128  $http = $this->mockMethod(HTTPServices::class, 'request', [], $this->mockMethod(
129  ServerRequestInterface::class,
130  'getQueryParams',
131  [],
132  $query_params,
133  self::exactly(2)
134  ), self::exactly(2));
135 
136  $refinery = $this->mockMethod(Refinery::class, 'kindlyTo', [], $this->mockMethod(KindlyToGroup::class, 'int', [], $this->mockMethod(
137  Transformation::class,
138  'applyTo',
139  [new Ok('459')],
140  new Ok(459)
141  )));
142 
143  $container->method('http')->willReturn($http);
144  $container->method('refinery')->willReturn($refinery);
145 
146  $called = false;
147  $instance = new Administration($config, $container, $ui);
148  $instance->withDocumentAndCriterion(function ($d, $c) use ($document, $criterion, &$called) {
149  $this->assertSame($document, $d);
150  $this->assertSame($criterion, $c);
151  $called = true;
152  });
153  $this->assertTrue($called);
154  }
155 
156  private function doc(int $id, string $title): Document
157  {
158  $document = $this->getMockBuilder(Document::class)->disableOriginalConstructor()->getMock();
159  $document->expects(self::once())->method('id')->willReturn($id);
160  $document->expects(self::once())->method('content')->willReturn(
161  $this->mockMethod(DocumentContent::class, 'title', [], $title)
162  );
163 
164  return $document;
165  }
166 }
Transformations in this group transform data to primitive types to establish a baseline for more comp...
Definition: Group.php:47
$container
Definition: wac.php:14
A result encapsulates a value or an error and simplifies the handling of those.
Definition: Ok.php:16
$http
Definition: raiseError.php:7
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
Refinery Factory $refinery