Loading core/modules/field_ui/src/Form/FieldConfigEditForm.php +1 −24 Original line number Diff line number Diff line Loading @@ -136,7 +136,7 @@ public function form(array $form, FormStateInterface $form_state) { ]); if (!$has_required) { $has_default_value = $this->hasAnyElementDefaultValue($element); $has_default_value = count($this->entity->getDefaultValue($form['#entity'])) > 0; $element['#states'] = [ 'invisible' => [ ':input[name="set_default_value"]' => ['checked' => FALSE], Loading Loading @@ -180,29 +180,6 @@ private function hasAnyRequired(array $element) { return $has_required; } /** * A function to check if element contains elements with #default_value. * * @param array $element * An element to check. * * @return bool */ private function hasAnyElementDefaultValue(array $element) { $has_default_value = FALSE; foreach (Element::children($element) as $child) { if (isset($element[$child]['#default_value']) && $element[$child]['#default_value']) { $has_default_value = TRUE; break; } if (Element::children($element[$child])) { return $this->hasAnyElementDefaultValue($element[$child]); } } return $has_default_value; } /** * {@inheritdoc} */ Loading core/modules/field_ui/tests/src/Unit/FieldConfigEditFormTest.php +0 −34 Original line number Diff line number Diff line Loading @@ -71,38 +71,4 @@ public function providerRequired(): \Generator { ]; } /** * @covers ::hasAnyElementDefaultValue * * @dataProvider providerDefaultValue */ public function testHasAnyElementDefaultValueRecursive(array $element, bool $result) { $reflection = new \ReflectionClass('\Drupal\field_ui\Form\FieldConfigEditForm'); $method = $reflection->getMethod('hasAnyElementDefaultValue'); $method->setAccessible(TRUE); $this->assertEquals($result, $method->invoke($this->fieldConfigEditForm, $element)); } /** * Provides test cases for detecting default values in a render array. */ public function providerDefaultValue(): \Generator { yield 'includes default value' => [ [['#default_value' => '🐈']], TRUE, ]; yield 'no default value' => [ [[]], FALSE, ]; yield 'includes default value deep' => [ [[[['#default_value' => '🐈']]]], TRUE, ]; yield 'includes default value and no default value' => [ [['#default_value' => '🐈'], []], TRUE, ]; } } core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php +30 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,11 @@ */ class FieldUiIntegrationTest extends MediaLibraryTestBase { /** * {@inheritdoc} */ protected $strictConfigSchema = FALSE; /** * {@inheritdoc} */ Loading @@ -35,6 +40,14 @@ protected function setUp(): void { $this->drupalLogin($user); $this->drupalCreateContentType(['type' => 'article']); $this->drupalCreateContentType(['type' => 'page']); $this->createMediaItems([ 'type_one' => [ 'Horse', 'Bear', 'Cat', 'Dog', ], ]); } /** Loading @@ -47,6 +60,8 @@ public function testFieldUiIntegration() { 'access administration pages', 'administer node fields', 'administer node form display', 'view media', 'bypass node access', ]); $this->drupalLogin($user); Loading @@ -67,6 +82,21 @@ public function testFieldUiIntegration() { $page->pressButton('Save settings'); $assert_session->pageTextContains('Saved Shatner configuration.'); $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_shatner'); $assert_session->checkboxNotChecked('set_default_value'); $page->checkField('set_default_value'); $this->assertElementExistsAfterWait('css', "#field_shatner-media-library-wrapper-default_value_input") ->pressButton('Add media'); $this->waitForText('Add or select media'); $this->selectMediaItem(0); $this->pressInsertSelected(); $page->pressButton('Save settings'); $assert_session->pageTextContains('Saved Shatner configuration.'); $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_shatner'); $assert_session->checkboxChecked('set_default_value'); // Create a new instance of an existing field storage and assert that it // automatically uses the media library. $this->drupalGet('/admin/structure/types/manage/page/fields/reuse'); Loading Loading
core/modules/field_ui/src/Form/FieldConfigEditForm.php +1 −24 Original line number Diff line number Diff line Loading @@ -136,7 +136,7 @@ public function form(array $form, FormStateInterface $form_state) { ]); if (!$has_required) { $has_default_value = $this->hasAnyElementDefaultValue($element); $has_default_value = count($this->entity->getDefaultValue($form['#entity'])) > 0; $element['#states'] = [ 'invisible' => [ ':input[name="set_default_value"]' => ['checked' => FALSE], Loading Loading @@ -180,29 +180,6 @@ private function hasAnyRequired(array $element) { return $has_required; } /** * A function to check if element contains elements with #default_value. * * @param array $element * An element to check. * * @return bool */ private function hasAnyElementDefaultValue(array $element) { $has_default_value = FALSE; foreach (Element::children($element) as $child) { if (isset($element[$child]['#default_value']) && $element[$child]['#default_value']) { $has_default_value = TRUE; break; } if (Element::children($element[$child])) { return $this->hasAnyElementDefaultValue($element[$child]); } } return $has_default_value; } /** * {@inheritdoc} */ Loading
core/modules/field_ui/tests/src/Unit/FieldConfigEditFormTest.php +0 −34 Original line number Diff line number Diff line Loading @@ -71,38 +71,4 @@ public function providerRequired(): \Generator { ]; } /** * @covers ::hasAnyElementDefaultValue * * @dataProvider providerDefaultValue */ public function testHasAnyElementDefaultValueRecursive(array $element, bool $result) { $reflection = new \ReflectionClass('\Drupal\field_ui\Form\FieldConfigEditForm'); $method = $reflection->getMethod('hasAnyElementDefaultValue'); $method->setAccessible(TRUE); $this->assertEquals($result, $method->invoke($this->fieldConfigEditForm, $element)); } /** * Provides test cases for detecting default values in a render array. */ public function providerDefaultValue(): \Generator { yield 'includes default value' => [ [['#default_value' => '🐈']], TRUE, ]; yield 'no default value' => [ [[]], FALSE, ]; yield 'includes default value deep' => [ [[[['#default_value' => '🐈']]]], TRUE, ]; yield 'includes default value and no default value' => [ [['#default_value' => '🐈'], []], TRUE, ]; } }
core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php +30 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,11 @@ */ class FieldUiIntegrationTest extends MediaLibraryTestBase { /** * {@inheritdoc} */ protected $strictConfigSchema = FALSE; /** * {@inheritdoc} */ Loading @@ -35,6 +40,14 @@ protected function setUp(): void { $this->drupalLogin($user); $this->drupalCreateContentType(['type' => 'article']); $this->drupalCreateContentType(['type' => 'page']); $this->createMediaItems([ 'type_one' => [ 'Horse', 'Bear', 'Cat', 'Dog', ], ]); } /** Loading @@ -47,6 +60,8 @@ public function testFieldUiIntegration() { 'access administration pages', 'administer node fields', 'administer node form display', 'view media', 'bypass node access', ]); $this->drupalLogin($user); Loading @@ -67,6 +82,21 @@ public function testFieldUiIntegration() { $page->pressButton('Save settings'); $assert_session->pageTextContains('Saved Shatner configuration.'); $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_shatner'); $assert_session->checkboxNotChecked('set_default_value'); $page->checkField('set_default_value'); $this->assertElementExistsAfterWait('css', "#field_shatner-media-library-wrapper-default_value_input") ->pressButton('Add media'); $this->waitForText('Add or select media'); $this->selectMediaItem(0); $this->pressInsertSelected(); $page->pressButton('Save settings'); $assert_session->pageTextContains('Saved Shatner configuration.'); $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_shatner'); $assert_session->checkboxChecked('set_default_value'); // Create a new instance of an existing field storage and assert that it // automatically uses the media library. $this->drupalGet('/admin/structure/types/manage/page/fields/reuse'); Loading