Mercurial > hg > isophonics-drupal-site
diff core/modules/field/tests/src/Traits/EntityReferenceTestTrait.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
| author | Chris Cannam |
|---|---|
| date | Thu, 28 Feb 2019 13:21:36 +0000 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/field/tests/src/Traits/EntityReferenceTestTrait.php Thu Feb 28 13:21:36 2019 +0000 @@ -0,0 +1,64 @@ +<?php + +namespace Drupal\Tests\field\Traits; + +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; + +/** + * Provides common functionality for the EntityReference test classes. + */ +trait EntityReferenceTestTrait { + + /** + * Creates a field of an entity reference field storage on the specified bundle. + * + * @param string $entity_type + * The type of entity the field will be attached to. + * @param string $bundle + * The bundle name of the entity the field will be attached to. + * @param string $field_name + * The name of the field; if it already exists, a new instance of the existing + * field will be created. + * @param string $field_label + * The label of the field. + * @param string $target_entity_type + * The type of the referenced entity. + * @param string $selection_handler + * The selection handler used by this field. + * @param array $selection_handler_settings + * An array of settings supported by the selection handler specified above. + * (e.g. 'target_bundles', 'sort', 'auto_create', etc). + * @param int $cardinality + * The cardinality of the field. + * + * @see \Drupal\Core\Entity\Plugin\EntityReferenceSelection\SelectionBase::buildConfigurationForm() + */ + protected function createEntityReferenceField($entity_type, $bundle, $field_name, $field_label, $target_entity_type, $selection_handler = 'default', $selection_handler_settings = [], $cardinality = 1) { + // Look for or add the specified field to the requested entity bundle. + if (!FieldStorageConfig::loadByName($entity_type, $field_name)) { + FieldStorageConfig::create([ + 'field_name' => $field_name, + 'type' => 'entity_reference', + 'entity_type' => $entity_type, + 'cardinality' => $cardinality, + 'settings' => [ + 'target_type' => $target_entity_type, + ], + ])->save(); + } + if (!FieldConfig::loadByName($entity_type, $bundle, $field_name)) { + FieldConfig::create([ + 'field_name' => $field_name, + 'entity_type' => $entity_type, + 'bundle' => $bundle, + 'label' => $field_label, + 'settings' => [ + 'handler' => $selection_handler, + 'handler_settings' => $selection_handler_settings, + ], + ])->save(); + } + } + +}
