19 declare(strict_types=1);
39 require_once __DIR__ .
'/../ContainerMock.php';
47 $this->assertInstanceOf(DocumentTable::class,
new DocumentTable(
49 $this->mock(DocumentRepository::class),
50 $this->mock(UI::class),
51 $this->mock(DocumentModal::class)
57 $ui = $this->mock(UI::class);
58 $ui->method(
'txt')->willReturnCallback(fn($s) =>
'txt: ' . $s);
61 'order' => [
'txt: tbl_docs_head_sorting',
'',
'5%'],
62 'title' => [
'txt: tbl_docs_head_title',
'',
'25%'],
63 'created' => [
'txt: tbl_docs_head_created'],
64 'change' => [
'txt: tbl_docs_head_last_change'],
65 'criteria' => [
'txt: tbl_docs_head_criteria'],
68 $this->mock(DocumentRepository::class),
70 $this->mock(DocumentModal::class)
76 $ui = $this->mock(UI::class);
77 $ui->method(
'txt')->willReturnCallback(fn($s) =>
'txt: ' . $s);
79 $config = $this->mock(TableConfig::class);
80 $config->expects(self::once())->method(
'setTitle')->with(
'txt: tbl_docs_title');
81 $config->expects(self::once())->method(
'setSelectableColumns')->with(
'created',
'change');
85 $this->mock(DocumentRepository::class),
87 $this->mock(DocumentModal::class)
90 $instance->config($config);
95 $ui = $this->mock(UI::class);
97 $select = $this->mock(TableSelection::class);
99 $repository = $this->mockMethod(DocumentRepository::class,
'all', [], [
100 $this->mock(Document::class),
101 $this->mock(Document::class)
108 $this->mock(DocumentModal::class),
113 $rows = $instance->rows($select);
114 $this->assertSame(2, count($rows));
115 foreach ($rows as $row) {
122 ], array_keys($row));
130 $this->mock(Document::class),
131 $this->mock(Document::class)
134 $select = $this->mock(TableSelection::class);
135 $repository = $this->mockMethod(DocumentRepository::class,
'all', [], $rows);
140 $this->mock(UI::class),
141 $this->mock(DocumentModal::class)
144 $this->assertSame($rows, $instance->select($select));
151 $this->mock(DocumentRepository::class),
152 $this->mock(UI::class),
153 $this->mock(DocumentModal::class),
164 ], array_keys($instance->row($this->mock(Document::class), 1)));
169 $ui = $this->mock(UI::class);
170 $ui->method(
'txt')->willReturnCallback(fn($s) =>
'txt: ' . $s);
174 $this->mock(DocumentRepository::class),
176 $this->mock(DocumentModal::class)
179 $this->assertSame(
'txt: tbl_docs_cell_not_criterion', $instance->showCriteria(
180 $this->mockTree(Document::class, [
'criteria' => []]),
187 $ui = $this->mock(UI::class);
188 $ui->method(
'txt')->willReturnCallback(fn($s) =>
'txt: ' . $s);
192 $this->mock(DocumentRepository::class),
194 $this->mock(DocumentModal::class)
198 $this->mock(Criterion::class),
199 $this->mock(Criterion::class),
202 $this->assertSame([
'a',
'b',
'a',
'b'], $instance->showCriteria(
203 $this->mockTree(Document::class, [
'criteria' => $criteria]),
204 function (
Criterion $criterion) use ($criteria) {
205 $this->assertTrue(in_array($criterion, $criteria,
true));
213 $content = $this->mock(CriterionContent::class);
214 $legacy = $this->mock(Legacy::class);
215 $component = $this->mock(Component::class);
217 $ui = $this->mockTree(UI::class, [
'create' => $this->mockMethod(UIFactory::class,
'legacy', [
'<br/>'], $legacy)]);
221 $this->assertSame($content, $c);
224 $this->mock(DocumentRepository::class),
226 $this->mock(DocumentModal::class)
229 $criterion = $this->mockTree(Criterion::class, [
'content' => $content]);
231 $this->assertSame([$component, $legacy], $instance->showCriterion($criterion));
236 $content = $this->mock(CriterionContent::class);
237 $component = $this->mock(Component::class);
241 $this->assertSame($content, $c);
244 $this->mock(DocumentRepository::class),
245 $this->mock(UI::class),
246 $this->mock(DocumentModal::class)
251 $instance->criterionName($this->mockTree(Criterion::class, [
'content' => $content]))
260 $create =
function (
string $class) use (&$called, &$input) {
262 $this->fail(
'Called more than once');
265 $input = $this->mock($class);
271 $this->mock(DocumentRepository::class),
272 $this->mock(UI::class),
273 $this->mock(DocumentModal::class),
277 $result = $instance->orderInputGui($this->mock(Document::class), 1);
278 $this->assertSame($input, $result);
283 $ui = $this->mock(UI::class);
286 $this->mock(DocumentRepository::class),
288 $this->mock(DocumentModal::class)
291 $this->assertSame(
$ui, $instance->ui());
298 $this->mock(DocumentRepository::class),
299 $this->mock(UI::class),
300 $this->mock(DocumentModal::class)