diff --git a/core/modules/system/tests/modules/form_test/form_test.routing.yml b/core/modules/system/tests/modules/form_test/form_test.routing.yml index 2250a0b..b688779 100644 --- a/core/modules/system/tests/modules/form_test/form_test.routing.yml +++ b/core/modules/system/tests/modules/form_test/form_test.routing.yml @@ -489,3 +489,11 @@ form_test.get_form: _form: '\Drupal\form_test\Form\FormTestGetForm' requirements: _access: 'TRUE' + +form_test.optional_container: + path: '/form-test/optional-container' + defaults: + _form: '\Drupal\form_test\Form\FormTestOptionalContainerForm' + _title: 'Optional container testing' + requirements: + _access: 'TRUE' diff --git a/core/modules/system/tests/modules/form_test/src/Form/FormTestOptionalContainerForm.php b/core/modules/system/tests/modules/form_test/src/Form/FormTestOptionalContainerForm.php new file mode 100644 index 0000000..74cb47c --- /dev/null +++ b/core/modules/system/tests/modules/form_test/src/Form/FormTestOptionalContainerForm.php @@ -0,0 +1,72 @@ + 'container', + '#attributes' => ['class' => ['empty_optional']], + '#optional' => TRUE, + ]; + $form['empty_optional']['child'] = [ + '#type' => 'markup', + '#vaule' => '' + ]; + $form['empty_nonoptional'] = [ + '#type' => 'container', + '#attributes' => ['class' => ['empty_nonoptional']], + '#optional' => FALSE, + ]; + $form['empty_nonoptional']['child'] = [ + '#type' => 'markup', + '#vaule' => '' + ]; + // Non-empty containers + $form['nonempty_optional'] = [ + '#type' => 'container', + '#attributes' => ['class' => ['nonempty_optional']], + '#optional' => TRUE, + ]; + $form['nonempty_optional']['child'] = [ + '#type' => 'markup', + '#vaule' => 'nonempty_optional value' + ]; + $form['nonempty_nonoptional'] = [ + '#type' => 'container', + '#attributes' => ['class' => ['nonempty_nonoptional']], + '#optional' => FALSE, + ]; + $form['nonempty_nonoptional']['child'] = [ + '#type' => 'markup', + '#vaule' => 'nonempty_nonoptional value' + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + } + +} diff --git a/core/modules/system/tests/src/Functional/Form/ElementsContainerTest.php b/core/modules/system/tests/src/Functional/Form/ElementsContainerTest.php new file mode 100644 index 0000000..64deb40 --- /dev/null +++ b/core/modules/system/tests/src/Functional/Form/ElementsContainerTest.php @@ -0,0 +1,45 @@ +drupalGet('form-test/optional-container'); + + // Assert that an empty optional container is not shown. + $elements =$this->assertSession()->elementExists('css', 'div.empty_optional'); + $this->assertTrue(count($elements) == 0); + + // empty_nonoptional + $elements = $this->assertSession()->elementExists('css', 'div.empty_nonoptional'); + $this->assertTrue(count($elements) == 1); + + // nonempty_optional + $elements = $this->assertSession()->elementExists('css', 'div.nonempty_optional'); + $this->assertTrue(count($elements) == 1); + + // nonempty_nonoptional + $elements = $this->assertSession()->elementExists('css', 'div.nonempty_nonoptional'); + $this->assertTrue(count($elements) == 1); + + } + +} diff --git a/core/tests/Drupal/Tests/Core/Render/Element/ContainerTest.php b/core/tests/Drupal/Tests/Core/Render/Element/ContainerTest.php deleted file mode 100644 index 3f71cdc..0000000 --- a/core/tests/Drupal/Tests/Core/Render/Element/ContainerTest.php +++ /dev/null @@ -1,63 +0,0 @@ -assertEquals($expected, (string) $this->renderer->renderRoot($result)); - } - - /** - * Data provider for preRenderContainer test. - */ - public function providerPreRenderContainer() { - $containers = []; - - // Empty optional container. - $element = [ - '#type' => 'container', - '#optional' => TRUE, - ]; - $element['child1'] = ['#markup' => '']; - $containers['empty-optional'] = [$element, '']; - - // Non-empty optional container. - $element = [ - '#optional' => TRUE, - ]; - $element['child1'] = ['#markup' => 'nested value']; - $containers['non-empty-optional'] = [$element, '