19declare(strict_types=1);
21require_once(__DIR__ .
"/../../../../../../../../vendor/composer/vendor/autoload.php");
22require_once(__DIR__ .
"/../../../../Base.php");
23require_once(__DIR__ .
"/FormTest.php");
24require_once(__DIR__ .
"/../../Field/CommonFieldRendering.php");
30use Psr\Http\Message\ServerRequestInterface;
55 $name =
"input_{$this->count}";
63 $name = $dedicated_name .
"_{$this->count}";
75 use CommonFieldRendering;
80 return new I\Input\Container\Form\Factory(
81 $this->getFieldFactory(),
88 return new I\Button\Factory();
99 $if = $this->getFieldFactory();
101 $form =
$f->standard(
$url, [$if->text(
"label")]);
102 $this->assertEquals(
$url, $form->getPostURL());
107 return $this->getFormWrappedHtml(
110 '<input id="id_1" type="text" name="form/input_0" class="c-field-text" />',
121 $if = $this->getFieldFactory();
124 $form =
$f->standard(
$url, [
125 $if->text(
"label",
"byline"),
128 $r = $this->getDefaultRenderer();
129 $html = $this->getDefaultRenderer()->render($form);
131 $expected = $this->brutallyTrimHTML(
'
132 <form class="c-form c-form--horizontal" enctype="multipart/form-data" action="MY_URL" method="post">
133 <div class="c-form__header">
134 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
137 '<div class="c-form__footer">
138 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
142 $this->assertHTMLEquals($expected, $html);
148 $if = $this->getFieldFactory();
151 $form =
$f->standard(
$url, [
152 $if->text(
"label",
"byline"),
155 $this->assertNull($form->getSubmitLabel());
157 $caption =
'Caption';
158 $form = $form->withSubmitLabel($caption);
160 $this->assertEquals($caption, $form->getSubmitLabel());
166 $if = $this->getFieldFactory();
169 $form =
$f->standard(
$url, [
170 $if->text(
"label",
"byline"),
171 ])->withSubmitLabel(
'create');
173 $r = $this->getDefaultRenderer();
174 $html = $this->brutallyTrimHTML($r->render($form));
176 $expected = $this->brutallyTrimHTML(
'
177 <form class="c-form c-form--horizontal" enctype="multipart/form-data" action="MY_URL" method="post">
178 <div class="c-form__header">
179 <div class="c-form__actions"><button class="btn btn-default" data-action="">create</button></div>
182 '<div class="c-form__footer">
183 <div class="c-form__actions"><button class="btn btn-default" data-action="">create</button></div>
187 $this->assertHTMLEquals($expected, $html);
193 $if = $this->getFieldFactory();
196 $form =
$f->standard(
$url, [
197 $if->text(
"label",
"byline"),
200 $r = $this->getDefaultRenderer();
201 $html = $this->brutallyTrimHTML($r->render($form));
203 $expected = $this->brutallyTrimHTML(
'
204 <form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
205 <div class="c-form__header">
206 <div class="c-form__actions">
207 <button class="btn btn-default" data-action="">save</button>
211 '<div class="c-form__footer">
212 <div class="c-form__actions">
213 <button class="btn btn-default" data-action="">save</button>
218 $this->assertHTMLEquals($expected, $html);
224 $r = $this->getDefaultRenderer();
225 $df =
new Data\Factory();
226 $language = $this->createMock(\
ILIAS\
Language\Language::class);
228 ->expects($this->once())
230 ->willReturn(
'testing error message');
232 $refinery = new \ILIAS\Refinery\Factory($df, $language);
243 $fail =
$refinery->custom()->constraint(
function ($v) {
245 },
"This is invalid...");
246 $input = $if->text(
"label",
"byline");
248 $input = $input->withAdditionalTransformation($fail);
252 $request = $this->createMock(ServerRequestInterface::class);
254 ->expects($this->once())
255 ->method(
"getParsedBody")
257 'form_0/input_1' =>
''
260 $form = $form->withRequest($request);
261 $this->assertNull($form->getData());
263 $html = $this->brutallyTrimHTML($r->render($form));
264 $expected = $this->brutallyTrimHTML(
'
265<form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
266 <div class="c-form__header">
267 <div class="c-form__actions">
268 <button class="btn btn-default" data-action="">save</button>
271 <div class="c-form__error-msg alert alert-danger"><span class="sr-only">ui_error:</span>testing error
274 <fieldset class="c-input" data-il-ui-component="text-field-input" data-il-ui-input-name="form_0/input_1"
275 aria-describedby="id_2"><label for="id_1">label</label>
276 <div class="c-input__field"><input id="id_1" type="text" name="form_0/input_1" class="c-field-text" /></div>
277 <div class="c-input__error-msg alert alert-danger" id="id_2"><span class="sr-only">ui_error:</span>This is
280 <div class="c-input__help-byline">byline</div>
282 <div class="c-form__footer">
283 <div class="c-form__actions">
284 <button class="btn btn-default" data-action="">save</button>
289 $this->assertEquals($expected, $html);
290 $this->assertHTMLEquals($expected, $html);
296 $r = $this->getDefaultRenderer();
297 $df =
new Data\Factory();
298 $language = $this->createMock(\
ILIAS\
Language\Language::class);
299 $refinery = new \ILIAS\Refinery\Factory($df, $language);
310 $fail =
$refinery->custom()->constraint(
function ($v) {
312 },
"This is a fail on form.");
313 $input = $if->text(
"label",
"byline");
316 $form = $form->withAdditionalTransformation($fail);
318 $request = $this->createMock(ServerRequestInterface::class);
320 ->expects($this->once())
321 ->method(
"getParsedBody")
323 'form_0/input_1' =>
''
326 $form = $form->withRequest($request);
327 $this->assertNull($form->getData());
330 $field_html = $this->getFormWrappedHtml(
333 '<input id="id_1" type="text" name="form_0/input_1" class="c-field-text"/>',
340 $html = $this->brutallyTrimHTML($r->render($form));
341 $expected = $this->brutallyTrimHTML(
'
342 <form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
343 <div class="c-form__header">
344 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
346 <div class="c-form__error-msg alert alert-danger"><span class="sr-only">ui_error:</span>This is a fail on form.</div>
348 <div class="c-form__footer">
349 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
353 $this->assertHTMLEquals($expected, $html);
359 $if = $this->getFieldFactory();
362 $form =
$f->standard(
$url, [$if->text(
"label",
"byline")->withRequired(
true)]);
364 $r = $this->getDefaultRenderer();
365 $html = $this->brutallyTrimHTML($r->render($form));
367 $field_html = $this->getFormWrappedHtml(
369 'label<span class="asterisk" aria-label="required_field">*</span>',
370 '<input id="id_1" type="text" name="form/input_0" class="c-field-text" />',
377 $expected = $this->brutallyTrimHTML(
'
378<form class="c-form c-form--horizontal" enctype="multipart/form-data" action="MY_URL" method="post">
379 <div class="c-form__header">
380 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
381 <div class="c-form__required">
382 <span class="asterisk">*</span><span class="small"> required_field</span>
386 <div class="c-form__footer">
387 <div class="c-form__required">
388 <span class="asterisk">*</span><span class="small"> required_field</span>
390 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
394 $this->assertHTMLEquals($expected, $html);
Builds a Color from either hex- or rgb values.
Provides common functionality for UI tests.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.