19 declare(strict_types=1);
21 require_once(
"libs/composer/vendor/autoload.php");
22 require_once(__DIR__ .
"/TableTestBase.php");
41 protected int $total_count
44 public function getRows(
45 I\Table\DataRowBuilder $row_builder,
46 array $visible_column_ids,
50 ?array $additional_parameters
52 yield $row_builder->buildStandardRow(
'', []);
54 public function getTotalRowCount(
56 ?array $additional_parameters
58 return $this->total_count;
63 protected function getTable(
int $total_count, array $columns): array
66 $table = $factory->data(
'Table', $columns, $this->
getDataRetrieval($total_count));
67 return $table->applyViewControls([], []);
74 'f1' => $factory->column()->text(
'f1'),
75 'f2' => $factory->column()->text(
'f2')->withIsOptional(
true),
78 list($table, $view_controls) = $this->
getTable($total_count, $columns);
80 $this->assertInstanceOf(
I\Input\Container\
ViewControl\ViewControl::class, $view_controls);
83 C\Table\Data::VIEWCONTROL_KEY_PAGINATION,
84 C\Table\Data::VIEWCONTROL_KEY_ORDERING,
85 C\Table\Data::VIEWCONTROL_KEY_FIELDSELECTION,
87 array_keys($view_controls->getInputs())
89 foreach (array_values($view_controls->getInputs()) as $vc) {
90 $this->assertInstanceOf(
I\Input\Container\
ViewControl\ViewControlInput::class, $vc);
98 'f1' => $factory->column()->text(
'f1'),
99 'f2' => $factory->column()->text(
'f2')->withIsOptional(
true),
101 $total_count = current(
C\Input\
ViewControl\Pagination::DEFAULT_LIMITS) - 1;
102 list($table, $view_controls) = $this->
getTable($total_count, $columns);
106 C\Table\Data::VIEWCONTROL_KEY_PAGINATION,
107 C\Table\Data::VIEWCONTROL_KEY_ORDERING,
108 C\Table\Data::VIEWCONTROL_KEY_FIELDSELECTION,
110 array_keys($view_controls->getInputs())
112 $this->assertInstanceOf(
114 $view_controls->getInputs()[C\Table\Data::VIEWCONTROL_KEY_PAGINATION]
117 $group_contents = $view_controls->getInputs()[C\Table\Data::VIEWCONTROL_KEY_PAGINATION]->getInputs();
120 fn($vc) => $this->assertInstanceOf(
I\Input\
ViewControl\NullControl::class, $vc)
128 'f1' => $factory->column()->text(
'f1')
129 ->withIsSortable(
false),
130 'f2' => $factory->column()->text(
'f2')
131 ->withIsSortable(
false)
132 ->withIsOptional(
true),
135 list($table, $view_controls) = $this->
getTable($total_count, $columns);
139 C\Table\Data::VIEWCONTROL_KEY_PAGINATION,
140 C\Table\Data::VIEWCONTROL_KEY_FIELDSELECTION,
142 array_keys($view_controls->getInputs())
150 'f1' => $factory->column()->text(
'f1'),
151 'f2' => $factory->column()->text(
'f2'),
154 list($table, $view_controls) = $this->
getTable($total_count, $columns);
158 C\Table\Data::VIEWCONTROL_KEY_PAGINATION,
159 C\Table\Data::VIEWCONTROL_KEY_ORDERING,
161 array_keys($view_controls->getInputs())
168 $request = $this->createMock(ServerRequestInterface::class);
171 ->willReturn(
new class () {
172 public function __toString()
174 return 'http://localhost:80';
178 ->method(
"getQueryParams")
179 ->willReturn($returns);
187 'f1' => $factory->column()->text(
'f1')->withIsOptional(
true),
188 'f2' => $factory->column()->text(
'f2')->withIsOptional(
true),
189 'f3' => $factory->column()->text(
'f3')->withIsOptional(
true),
192 list($base_table, $view_controls) = $this->
getTable($total_count, $columns);
194 $table_id =
'testing_data_table';
199 'view_control/input_0/input_1' => 0,
200 'view_control/input_0/input_2' => 10,
201 'view_control/input_3/input_4' =>
'f2',
202 'view_control/input_3/input_5' =>
'DESC',
203 'view_control/input_6' => [
'f2']
206 list($table, $view_controls) = $table->applyViewControls([], []);
208 $this->assertEquals(
new Range(0, 10), $table->getRange());
209 $this->assertEquals(
new Order(
'f2', Order::DESC), $table->getOrder());
210 $this->assertEquals(1, count($table->getSelectedOptionalColumns()));
216 list($table, $view_controls) = $table->applyViewControls([], []);
217 $this->assertEquals(
new Range(0, 12), $table->getRange());
218 $this->assertEquals(
new Order(
'f1', Order::ASC), $table->getOrder());
219 $this->assertEquals(3, count($table->getSelectedOptionalColumns()));
225 list($table, $view_controls) = $table->applyViewControls([], []);
226 $this->assertEquals(
new Range(0, 10), $table->getRange());
227 $this->assertEquals(
new Order(
'f2', Order::DESC), $table->getOrder());
228 $this->assertEquals(1, count($table->getSelectedOptionalColumns()));
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
testDataTableHasNoFieldSelectionViewControl()
getDataRetrieval(int $total_count)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Tests for the Data Table.
testDataTableHasNoOrderingViewControl()
Both the subject and the direction need to be specified when expressing an order. ...
testDataTableViewControlStorage()
testDataTableHasNoPaginationViewControl()
testDataTableHasViewControls()
getRequestMock(array $returns)
A simple class to express a range of whole positive numbers.
Basic Tests for all Tables.
getTable(int $total_count, array $columns)