diff --git a/core/modules/language/config/schema/language.schema.yml b/core/modules/language/config/schema/language.schema.yml index 5e3f55b..91ce2d1 100644 --- a/core/modules/language/config/schema/language.schema.yml +++ b/core/modules/language/config/schema/language.schema.yml @@ -131,3 +131,11 @@ condition.plugin.language: type: sequence sequence: type: string + +field.widget.settings.language_select: + type: mapping + label: 'Language format settings' + mapping: + include_locked: + type: boolean + label: 'Include locked languages' diff --git a/core/modules/language/src/Tests/LanguageSelectWidgetTest.php b/core/modules/language/src/Tests/LanguageSelectWidgetTest.php deleted file mode 100644 index 7eb4c9d..0000000 --- a/core/modules/language/src/Tests/LanguageSelectWidgetTest.php +++ /dev/null @@ -1,134 +0,0 @@ -drupalPostForm( - 'admin/config/regional/language/add', - $edit, - t('Add language') - ); - - $this->fieldLanguageLocked = FieldStorageConfig::create([ - 'field_name' => 'language_locked', - 'entity_type' => 'entity_test', - 'type' => 'language_select', - 'languages' => LanguageInterface::STATE_ALL, - ]); - - $this->fieldLanguageLocked->save(); - - $this->fieldLanguageUnlocked = FieldStorageConfig::create([ - 'field_name' => 'language_unlocked', - 'entity_type' => 'entity_test', - 'type' => 'language_select', - 'languages' => LanguageInterface::STATE_CONFIGURABLE, - ]); - - $this->fieldLanguageUnlocked->save(); - } - - /** - * Check that default settings with include_locked languages TRUE. - */ - public function testWithIncludedLockedLanguage() { - - // Create an instance of the 'single value' field. - $field = FieldConfig::create([ - 'field_storage' => $this->fieldLanguageLocked, - 'bundle' => 'entity_test', - ]); - - $field->save(); - - // Create an entity. - $entity = EntityTest::create(array( - 'user_id' => 1, - 'name' => $this->randomMachineName(), - )); - $entity->save(); - - // Display form. - $this->drupalGet('entity_test/manage/' . $entity->id() . '/edit'); - $this->assertOptionSelected('edit-language-locked', LanguageInterface::LANGCODE_NOT_APPLICABLE); - $this->assertOptionSelected('edit-language-locked', LanguageInterface::LANGCODE_NOT_SPECIFIED); - $this->assertOptionSelected('edit-language-locked', 'pt-br'); - } - - /** - * Check the settings with include_locked languages FALSE. - */ - public function testWithoutIncludedLockedLanguage() { - - // Create an instance of the 'single value' field. - $field = FieldConfig::create([ - 'field_storage' => $this->fieldLanguageUnlocked, - 'bundle' => 'entity_test', - ]); - - $field->save(); - - // Create an entity. - $entity = EntityTest::create(array( - 'user_id' => 1, - 'name' => $this->randomMachineName(), - )); - $entity->save(); - - // Display form. - $this->drupalGet('entity_test/manage/' . $entity->id() . '/edit'); - $this->assertNoOptionSelected('edit-language-locked', LanguageInterface::LANGCODE_NOT_APPLICABLE); - $this->assertNoOptionSelected('edit-language-locked', LanguageInterface::LANGCODE_NOT_SPECIFIED); - $this->assertOptionSelected('edit-language-locked', 'pt-br'); - } - -} diff --git a/core/modules/language/tests/src/Kernel/LanguageSelectWidgetTest.php b/core/modules/language/tests/src/Kernel/LanguageSelectWidgetTest.php new file mode 100644 index 0000000..966275c --- /dev/null +++ b/core/modules/language/tests/src/Kernel/LanguageSelectWidgetTest.php @@ -0,0 +1,77 @@ +installEntitySchema('entity_test'); + $this->installEntitySchema('user'); + + $storage = $this->container->get('entity_type.manager')->getStorage('entity_form_display'); + $this->entityFormDisplay = $storage->create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'default', + 'status' => TRUE, + ]); + } + + /** + * Tests the widget with the locked languages. + */ + public function testWithIncludedLockedLanguage() { + $this->entityFormDisplay->setComponent('langcode', [ + 'type' => 'language_select', + ])->save(); + $entity = EntityTest::create(['name' => $this->randomString()]); + $form = $this->container->get('entity.form_builder')->getForm($entity); + $options = array_keys($form['langcode']['widget'][0]['value']['#options']); + $this->assertSame(['en', 'und', 'zxx'], $options); + } + + /** + * Test the widget without the locked languages. + */ + public function testWithoutIncludedLockedLanguage() { + $this->entityFormDisplay->setComponent('langcode', [ + 'type' => 'language_select', + 'settings' => ['include_locked' => FALSE], + ])->save(); + $entity = EntityTest::create(['name' => $this->randomString()]); + $form = $this->container->get('entity.form_builder')->getForm($entity); + $options = array_keys($form['langcode']['widget'][0]['value']['#options']); + $this->assertSame(['en'], $options); + } + +}