ILIAS  trunk Revision v11.0_alpha-1731-gff9cd7e2bd3
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
RadioInputTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 require_once(__DIR__ . "/../../../../../../../vendor/composer/vendor/autoload.php");
22 require_once(__DIR__ . "/../../../Base.php");
23 require_once(__DIR__ . "/CommonFieldRendering.php");
24 
28 use ILIAS\Data;
30 
32 {
34 
36 
37  public function setUp(): void
38  {
39  $this->name_source = new DefNamesource();
40  }
41 
42  protected function buildRadio(): \ILIAS\UI\Component\Input\Container\Form\FormInput
43  {
44  $f = $this->getFieldFactory();
45  $label = "label";
46  $byline = "byline";
47  return $f
48  ->radio($label, $byline)
49  ->withOption('value0', 'label0', 'byline0')
50  ->withOption('1', 'label1', 'byline1')
51  ->withNameFrom($this->name_source);
52  }
53 
54  public function testImplementsFactoryInterface(): void
55  {
56  $f = $this->getFieldFactory();
57  $radio = $f->radio("label", "byline");
58  $this->assertInstanceOf(\ILIAS\UI\Component\Input\Container\Form\FormInput::class, $radio);
59  $this->assertInstanceOf(Field\Radio::class, $radio);
60  }
61 
62  public function testRender(): void
63  {
64  $r = $this->getDefaultRenderer();
65  $radio = $this->buildRadio();
66  $name = $radio->getName();
67  $label = $radio->getLabel();
68  $byline = $radio->getByline();
69  $options = $radio->getOptions();
70 
71  $expected_options = "";
72  foreach ($options as $opt_value => $opt_label) {
73  $expected_options .= ""
74  . '<div class="c-field-radio__item">'
75  . "<input type=\"radio\" id=\"id_1_" . $opt_value . "_opt\" name=\"$name\" value=\"$opt_value\" />"
76  . "<label for=\"id_1_" . $opt_value . "_opt\">$opt_label</label>"
77  . "<div class=\"c-input__help-byline\">{$radio->getBylineFor((string) $opt_value)}</div>"
78  . '</div>';
79  }
80  $expected = $this->getFormWrappedHtml(
81  'radio-field-input',
82  $label,
83  '<div class="c-field-radio">' . $expected_options . '</div>',
84  $byline,
85  null
86  );
87  $this->assertEquals($expected, $this->render($radio));
88  }
89 
90  public function testRenderValue(): void
91  {
92  $r = $this->getDefaultRenderer();
93  $radio = $this->buildRadio();
94  $name = $radio->getName();
95  $label = $radio->getLabel();
96  $byline = $radio->getByline();
97  $options = $radio->getOptions();
98  $value = '1';
99  $radio = $radio->withValue($value);
100  $expected_options = "";
101  foreach ($options as $opt_value => $opt_label) {
102  $expected_options .= '<div class="c-field-radio__item">';
103  if ($opt_value == $value) {
104  $expected_options .= "<input type=\"radio\" id=\"id_1_" . $opt_value . "_opt\" name=\"$name\" value=\"$opt_value\" checked=\"checked\" />";
105  } else {
106  $expected_options .= "<input type=\"radio\" id=\"id_1_" . $opt_value . "_opt\" name=\"$name\" value=\"$opt_value\" />";
107  }
108  $expected_options .= ""
109  . "<label for=\"id_1_" . $opt_value . "_opt\">$opt_label</label>"
110  . "<div class=\"c-input__help-byline\">{$radio->getBylineFor((string) $opt_value)}</div>"
111  . '</div>';
112  }
113  $expected = $this->getFormWrappedHtml(
114  'radio-field-input',
115  $label,
116  '<div class="c-field-radio">' . $expected_options . '</div>',
117  $byline,
118  null
119  );
120  $this->assertEquals($expected, $this->render($radio));
121  }
122 
123  public function testCommonRendering(): void
124  {
125  $f = $this->getFieldFactory();
126  $radio = $f->radio('label', null)->withNameFrom($this->name_source);
127 
128  $this->testWithError($radio);
129  $this->testWithNoByline($radio);
130  $this->testWithRequired($radio);
131  $this->testWithDisabled($radio);
132  $this->testWithAdditionalOnloadCodeRendersId($radio);
133  }
134 
135 }
DefNamesource $name_source
testImplementsFactoryInterface()
Interface Observer Contains several chained tasks and infos about them.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Checkbox.php:21
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This describes inputs that can be used in forms.
Definition: FormInput.php:32
$r