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->brutallyTrimHTML($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">
136 '<div class="c-form__footer">
137 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
141 $this->assertHTMLEquals($expected, $html);
147 $if = $this->getFieldFactory();
150 $form =
$f->standard(
$url, [
151 $if->text(
"label",
"byline"),
154 $this->assertNull($form->getSubmitLabel());
156 $caption =
'Caption';
157 $form = $form->withSubmitLabel($caption);
159 $this->assertEquals($caption, $form->getSubmitLabel());
165 $if = $this->getFieldFactory();
168 $form =
$f->standard(
$url, [
169 $if->text(
"label",
"byline"),
170 ])->withSubmitLabel(
'create');
172 $r = $this->getDefaultRenderer();
173 $html = $this->brutallyTrimHTML($r->render($form));
175 $expected = $this->brutallyTrimHTML(
'
176 <form class="c-form c-form--horizontal" enctype="multipart/form-data" action="MY_URL" method="post">
177 <div class="c-form__header">
180 '<div class="c-form__footer">
181 <div class="c-form__actions"><button class="btn btn-default" data-action="">create</button></div>
185 $this->assertHTMLEquals($expected, $html);
191 $if = $this->getFieldFactory();
194 $form =
$f->standard(
$url, [
195 $if->text(
"label",
"byline"),
198 $r = $this->getDefaultRenderer();
199 $html = $this->brutallyTrimHTML($r->render($form));
201 $expected = $this->brutallyTrimHTML(
'
202 <form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
203 <div class="c-form__header">
206 '<div class="c-form__footer">
207 <div class="c-form__actions">
208 <button class="btn btn-default" data-action="">save</button>
213 $this->assertHTMLEquals($expected, $html);
219 $r = $this->getDefaultRenderer();
220 $df =
new Data\Factory();
221 $language = $this->createMock(\
ILIAS\
Language\Language::class);
223 ->expects($this->once())
225 ->willReturn(
'testing error message');
227 $refinery = new \ILIAS\Refinery\Factory($df, $language);
238 $fail =
$refinery->custom()->constraint(
function ($v) {
240 },
"This is invalid...");
241 $input = $if->text(
"label",
"byline");
243 $input = $input->withAdditionalTransformation($fail);
247 $request = $this->createMock(ServerRequestInterface::class);
249 ->expects($this->once())
250 ->method(
"getParsedBody")
252 'form_0/input_1' =>
''
255 $form = $form->withRequest($request);
256 $this->assertNull($form->getData());
258 $html = $this->brutallyTrimHTML($r->render($form));
259 $expected = $this->brutallyTrimHTML(
'
260<form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
261 <div class="c-form__header">
263 <div class="c-form__error-msg alert alert-danger"><span class="sr-only">ui_error:</span>testing error
266 <fieldset class="c-input" data-il-ui-component="text-field-input" data-il-ui-input-name="form_0/input_1"
267 aria-describedby="id_2"><label for="id_1">label</label>
268 <div class="c-input__field"><input id="id_1" type="text" name="form_0/input_1" class="c-field-text" /></div>
269 <div class="c-input__error-msg alert alert-danger" id="id_2"><span class="sr-only">ui_error:</span>This is
272 <div class="c-input__help-byline">byline</div>
274 <div class="c-form__footer">
275 <div class="c-form__actions">
276 <button class="btn btn-default" data-action="">save</button>
281 $this->assertEquals($expected, $html);
282 $this->assertHTMLEquals($expected, $html);
288 $r = $this->getDefaultRenderer();
289 $df =
new Data\Factory();
290 $language = $this->createMock(\
ILIAS\
Language\Language::class);
291 $refinery = new \ILIAS\Refinery\Factory($df, $language);
302 $fail =
$refinery->custom()->constraint(
function ($v) {
304 },
"This is a fail on form.");
305 $input = $if->text(
"label",
"byline");
308 $form = $form->withAdditionalTransformation($fail);
310 $request = $this->createMock(ServerRequestInterface::class);
312 ->expects($this->once())
313 ->method(
"getParsedBody")
315 'form_0/input_1' =>
''
318 $form = $form->withRequest($request);
319 $this->assertNull($form->getData());
322 $field_html = $this->getFormWrappedHtml(
325 '<input id="id_1" type="text" name="form_0/input_1" class="c-field-text"/>',
332 $html = $this->brutallyTrimHTML($r->render($form));
333 $expected = $this->brutallyTrimHTML(
'
334 <form class="c-form c-form--horizontal" enctype="multipart/form-data" method="post">
335 <div class="c-form__header">
337 <div class="c-form__error-msg alert alert-danger"><span class="sr-only">ui_error:</span>This is a fail on form.</div>
339 <div class="c-form__footer">
340 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
344 $this->assertHTMLEquals($expected, $html);
350 $if = $this->getFieldFactory();
353 $form =
$f->standard(
$url, [$if->text(
"label",
"byline")->withRequired(
true)]);
355 $r = $this->getDefaultRenderer();
356 $html = $this->brutallyTrimHTML($r->render($form));
358 $field_html = $this->getFormWrappedHtml(
360 'label<span class="sr-only">required_field</span><span class="asterisk" aria-hidden="true">*</span>',
361 '<input id="id_1" type="text" name="form/input_0" class="c-field-text" />',
368 $expected = $this->brutallyTrimHTML(
'
369<form class="c-form c-form--horizontal" enctype="multipart/form-data" action="MY_URL" method="post">
370 <div class="c-form__header">
371 <div class="c-form__required">
372 <span class="asterisk">*</span><span class="small"> required_field</span>
376 <div class="c-form__footer">
377 <div class="c-form__required">
378 <span class="asterisk">*</span><span class="small"> required_field</span>
380 <div class="c-form__actions"><button class="btn btn-default" data-action="">save</button></div>
384 $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.