diff --git a/tests/src/Functional/DynamicEntityReferenceTest.php b/tests/src/Functional/DynamicEntityReferenceTest.php index f631b79..b5d40ae 100644 --- a/tests/src/Functional/DynamicEntityReferenceTest.php +++ b/tests/src/Functional/DynamicEntityReferenceTest.php @@ -470,117 +470,6 @@ class DynamicEntityReferenceTest extends BrowserTestBase { } /** - * Tests that config entities are autocreated. - */ - public function testAutoCreateConfigEntities() { - $this->drupalLogin($this->adminUser); - - \Drupal::service('module_installer')->install(['taxonomy']); - $vocabulary = Vocabulary::create([ - 'name' => $this->randomMachineName(), - 'vid' => Unicode::strtolower($this->randomMachineName()), - 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED, - ]); - $vocabulary->save(); - $term = Term::create([ - 'name' => $this->randomMachineName(), - 'vid' => $vocabulary->id(), - 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED, - ]); - $term->save(); - - /** @var \Drupal\field\FieldStorageConfigInterface $storage */ - $storage = $this->container->get('entity_type.manager') - ->getStorage('field_storage_config') - ->create([ - 'field_name' => 'field_foobar', - 'entity_type' => 'entity_test', - 'type' => 'dynamic_entity_reference', - 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, - 'settings' => [ - 'exclude_entity_types' => FALSE, - 'entity_type_ids' => [ - 'taxonomy_term', - 'user', - 'config_test', - ], - ], - ]); - $storage->save(); - - /** @var \Drupal\field\FieldConfigInterface $field */ - $field = $this->container->get('entity_type.manager') - ->getStorage('field_config') - ->create([ - 'field_name' => 'field_foobar', - 'entity_type' => 'entity_test', - 'bundle' => 'entity_test', - 'label' => 'Foobar', - 'settings' => [ - 'user' => [ - 'handler' => 'default:user', - 'handler_settings' => [], - ], - 'taxonomy_term' => [ - 'handler' => 'default:taxonomy_term', - 'handler_settings' => [ - 'target_bundles' => [$vocabulary->id() => $vocabulary->id()], - 'sort' => ['field' => '_none'], - 'auto_create' => TRUE, - 'auto_create_bundle' => FALSE, - ], - ], - 'config_test' => [ - 'handler' => 'default:config_test', - 'handler_settings' => [ - 'target_bundles' => ['config_test' => 'config_test'], - 'sort' => ['field' => '_none'], - 'auto_create' => TRUE, - 'auto_create_bundle' => FALSE, - ], - ], - ], - ]); - $field->save(); - - entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent('field_foobar', [ - 'type' => 'dynamic_entity_reference_default', - 'settings' => [ - 'match_operator' => 'CONTAINS', - 'size' => 40, - 'placeholder' => '', - ], - ]) - ->save(); - - // Add a non-existent config_test item. - $this->drupalGet('entity_test/add'); - - // Add some extra dynamic entity reference fields. - $this->getSession()->getPage()->findButton('Add another item')->click(); - $this->getSession()->getPage()->findButton('Add another item')->click(); - $edit = [ - 'field_foobar[0][target_id]' => $this->adminUser->label() . ' (' . $this->adminUser->id() . ')', - 'field_foobar[0][target_type]' => 'user', - // Add a non-existing term. - 'field_foobar[1][target_id]' => 'tag', - 'field_foobar[1][target_type]' => 'taxonomy_term', - 'field_foobar[2][target_id]' => 'test', - 'field_foobar[2][target_type]' => 'config_test', - 'name[0][value]' => 'Another', - 'user_id[0][target_id]' => $this->adminUser->label() . ' (' . $this->adminUser->id() . ')', - ]; - - $this->submitForm($edit, t('Save')); - - $entities = \Drupal::entityTypeManager() - ->getStorage('entity_test') - ->loadByProperties(['name' => 'Another']); - $this->assertCount(1, $entities, 'Entity was saved'); - } - - /** * Tests node preview of dynamic entity reference field. */ public function testNodePreview() { diff --git a/tests/src/Functional/DynamicEntityReferenceWidgetTest.php b/tests/src/Functional/DynamicEntityReferenceWidgetTest.php index d1b8ceb..fbc3b58 100644 --- a/tests/src/Functional/DynamicEntityReferenceWidgetTest.php +++ b/tests/src/Functional/DynamicEntityReferenceWidgetTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\dynamic_entity_reference\Functional; use Drupal\Component\Utility\Unicode; +use Drupal\config_test\Entity\ConfigTest; use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\Core\Url; use Drupal\field\Entity\FieldConfig; @@ -39,6 +40,7 @@ class DynamicEntityReferenceWidgetTest extends BrowserTestBase { 'dynamic_entity_reference', 'field_ui', 'node', + 'config_test', ]; /** @@ -76,6 +78,7 @@ class DynamicEntityReferenceWidgetTest extends BrowserTestBase { 'exclude_entity_types' => FALSE, 'entity_type_ids' => [ 'node', + 'config_test', ], ], ]); @@ -91,6 +94,10 @@ class DynamicEntityReferenceWidgetTest extends BrowserTestBase { 'sort' => ['field' => '_none'], ], ], + 'config_test' => [ + 'handler' => 'default', + 'handler_settings' => [], + ], ], ])->save(); $this->fieldName = $field_name; @@ -126,6 +133,27 @@ class DynamicEntityReferenceWidgetTest extends BrowserTestBase { $reference_node = reset($nodes); $this->assertEquals($reference_node->get($field_name)->offsetGet(0)->target_type, $referenced_node->getEntityTypeId()); $this->assertEquals($reference_node->get($field_name)->offsetGet(0)->target_id, $referenced_node->id()); + + // Test with config entity. + $referenced_entity = $this->container->get('entity_type.manager')->getStorage('config_test')->create(['label' => $this->randomString(), 'id' => Unicode::strtolower($this->randomMachineName())]); + $referenced_entity->save(); + + $title = $this->randomMachineName(); + $edit = [ + 'title[0][value]' => $title, + $field_name . '[0][target_type]' => $referenced_entity->getEntityTypeId(), + $field_name . '[0][target_id]' => $referenced_entity->label() . ' (' . $referenced_entity->id() . ')', + ]; + $this->drupalGet(Url::fromRoute('node.add', ['node_type' => 'reference_content'])); + $this->submitForm($edit, t('Save')); + $node = $this->drupalGetNodeByTitle($title); + $assert_session->responseContains(t('@type %title has been created.', ['@type' => 'reference_content', '%title' => $node->toLink($node->label())->toString()])); + $nodes = \Drupal::entityTypeManager() + ->getStorage('node') + ->loadByProperties(['title' => $title]); + $reference_node = reset($nodes); + $this->assertEquals($referenced_entity->getEntityTypeId(), $reference_node->get($field_name)->offsetGet(0)->target_type); + $this->assertEquals($referenced_entity->id(), $reference_node->get($field_name)->offsetGet(0)->target_id); } /**