19declare(strict_types=1);
22require_once(__DIR__ .
"/../../../../../../../vendor/composer/vendor/autoload.php");
23require_once(__DIR__ .
"/../../../Base.php");
24require_once(__DIR__ .
"/CommonFieldRendering.php");
32use PHPUnit\Framework\MockObject\MockObject;
45 use CommonFieldRendering;
68 $this->child1 = $this->createMock(Input1::class);
69 $this->child2 = $this->createMock(Input2::class);
70 $this->data_factory =
new Data\Factory();
74 $this->group =
new Group(
78 [$this->child1, $this->child2],
86 $this->assertNotSame($this->child1, $this->child2);
89 ->expects($this->once())
90 ->method(
"withDisabled")
92 ->willReturn($this->child2);
94 ->expects($this->once())
95 ->method(
"withDisabled")
97 ->willReturn($this->child1);
99 $new_group = $this->group->withDisabled(
true);
101 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
102 $this->assertInstanceOf(Group::class, $new_group);
103 $this->assertNotSame($this->group, $new_group);
108 $this->assertNotSame($this->child1, $this->child2);
111 ->expects($this->once())
112 ->method(
"withRequired")
114 ->willReturn($this->child2);
116 ->expects($this->once())
117 ->method(
"withRequired")
119 ->willReturn($this->child1);
121 $new_group = $this->group->withRequired(
true);
123 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
124 $this->assertInstanceOf(Group::class, $new_group);
125 $this->assertNotSame($this->group, $new_group);
130 $this->expectException(InvalidArgumentException::class);
132 $this->group =
new Group(
144 $this->assertNotSame($this->child1, $this->child2);
147 ->expects($this->once())
148 ->method(
"withValue")
150 ->willReturn($this->child2);
152 ->expects($this->once())
153 ->method(
"isClientSideValueOk")
157 ->expects($this->once())
158 ->method(
"withValue")
160 ->willReturn($this->child1);
162 ->expects($this->once())
163 ->method(
"isClientSideValueOk")
167 $new_group = $this->group->withValue([1,2]);
169 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
170 $this->assertInstanceOf(Group::class, $new_group);
171 $this->assertNotSame($this->group, $new_group);
177 ->expects($this->once())
178 ->method(
"withValue")
180 ->willReturn($this->child2);
182 ->expects($this->once())
183 ->method(
"isClientSideValueOk")
187 ->expects($this->once())
188 ->method(
"withValue")
190 ->willReturn($this->child1);
192 ->expects($this->never())
193 ->method(
"isClientSideValueOk")
197 $new_group = $this->group->withValue([1,
null]);
199 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
200 $this->assertNotSame($this->group, $new_group);
205 $this->assertNotSame($this->child1, $this->child2);
207 $this->group =
new Group(
211 [
"child1" => $this->child1,
"child2" => $this->child2],
217 ->method(
"withValue")
218 ->willReturn($this->child2);
220 ->method(
"isClientSideValueOk")
223 ->method(
"withValue")
224 ->willReturn($this->child1);
226 ->method(
"isClientSideValueOk")
229 $new_group = $this->group->withValue([
"child1" => 1,
"child2" => 2]);
231 $this->assertEquals([
"child1" => $this->child2,
"child2" => $this->child1], $new_group->getInputs());
236 $this->expectException(InvalidArgumentException::class);
238 $this->group->withValue(1);
243 $this->expectException(InvalidArgumentException::class);
245 $this->group->withValue([1]);
250 $this->assertNotSame($this->child1, $this->child2);
253 ->expects($this->once())
258 ->expects($this->once())
263 $vals = $this->group->getValue();
265 $this->assertEquals([
"one",
"two"], $vals);
270 $this->assertNotSame($this->child1, $this->child2);
272 $input_data = $this->createMock(InputData::class);
275 ->expects($this->once())
276 ->method(
"withInput")
278 ->willReturn($this->child2);
280 ->expects($this->once())
281 ->method(
"getContent")
282 ->willReturn($this->data_factory->ok(
"one"));
284 ->expects($this->once())
285 ->method(
"withInput")
287 ->willReturn($this->child1);
289 ->expects($this->once())
290 ->method(
"getContent")
291 ->willReturn($this->data_factory->ok(
"two"));
294 $new_group = $this->group
295 ->withAdditionalTransformation($this->
refinery->custom()->transformation(function ($v) use (&$called):
string {
297 $this->assertEquals([
"two",
"one"], $v);
300 ->withInput($input_data);
302 $this->assertTrue($called);
303 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
304 $this->assertInstanceOf(Group::class, $new_group);
305 $this->assertNotSame($this->group, $new_group);
306 $this->assertEquals($this->data_factory->ok(
"result"), $new_group->getContent());
311 $this->assertNotSame($this->child1, $this->child2);
313 $input_data = $this->createMock(InputData::class);
316 ->expects($this->once())
317 ->method(
"withInput")
319 ->willReturn($this->child2);
321 ->expects($this->once())
322 ->method(
"getContent")
323 ->willReturn($this->data_factory->error(
""));
325 ->expects($this->once())
326 ->method(
"withInput")
328 ->willReturn($this->child1);
330 ->expects($this->once())
331 ->method(
"getContent")
332 ->willReturn($this->data_factory->ok(
"two"));
334 $i18n =
"THERE IS SOME ERROR IN THIS GROUP";
336 ->expects($this->once())
338 ->with(
"ui_error_in_group")
341 $new_group = $this->group
342 ->withAdditionalTransformation($this->
refinery->custom()->transformation(function ():
void {
343 $this->fail(
"This should not happen.");
345 ->withInput($input_data);
347 $this->assertEquals([$this->child2, $this->child1], $new_group->getInputs());
348 $this->assertInstanceOf(Group::class, $new_group);
349 $this->assertNotSame($this->group, $new_group);
350 $this->assertTrue($new_group->getContent()->isError());
355 $this->assertNotSame($this->child1, $this->child2);
357 $input_data = $this->createMock(InputData::class);
360 ->method(
"withInput")
361 ->willReturn($this->child2);
363 ->method(
"getContent")
364 ->willReturn($this->data_factory->error(
""));
366 ->method(
"withInput")
367 ->willReturn($this->child1);
369 ->method(
"getContent")
370 ->willReturn($this->data_factory->ok(
"two"));
372 $i18n =
"THERE IS SOME ERROR IN THIS GROUP";
374 ->expects($this->once())
376 ->with(
"ui_error_in_group")
379 $new_group = $this->group
380 ->withInput($input_data);
382 $this->assertTrue($new_group->getContent()->isError());
383 $this->assertEquals($i18n, $new_group->getContent()->error());
397 $this->assertInstanceOf(Ok::class, $content);
398 $this->assertCount(0, $content->value());
405 $f = $this->getFieldFactory();
407 $f->text(
"input1",
"in 1"),
408 $f->text(
"input2",
"in 2")
410 $label =
'group label';
414 <fieldset
class=
"c-input" data-il-
ui-component=
"text-field-input" data-il-
ui-input-name=
"">
415 <label
for=
"id_1">input1</label>
416 <div
class=
"c-input__field">
417 <input
id=
"id_1" type=
"text" class=
"c-field-text" />
419 <div
class=
"c-input__help-byline">in 1</div>
421 <fieldset
class=
"c-input" data-il-
ui-component=
"text-field-input" data-il-
ui-input-name=
"">
422 <label
for=
"id_2">input2</label>
423 <div
class=
"c-input__field">
424 <input
id=
"id_2" type=
"text" class=
"c-field-text" />
426 <div
class=
"c-input__help-byline">in 2</div>
429 $actual = $this->brutallyTrimHTML($this->getDefaultRenderer()->render(
$group));
430 $expected = $this->brutallyTrimHTML($expected);
431 $this->assertEquals($expected, $actual);
438 $f = $this->getFieldFactory();
439 $group =
$f->group([],
"LABEL", $bl);
445 $f = $this->getFieldFactory();
456 $f = $this->getFieldFactory();
459 $f->text(
"")->withRequired(
true)
A result encapsulates a value or an error and simplifies the handling of those.
Provides common functionality for UI tests.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.