Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 24 |
CRAP | |
0.00% |
0 / 107 |
EntityDefinitionTestTrait | |
0.00% |
0 / 1 |
|
0.00% |
0 / 24 |
702 | |
0.00% |
0 / 107 |
enableNewEntityType | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
resetEntityType | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
updateEntityTypeToRevisionable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
updateEntityTypeToNotRevisionable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
updateEntityTypeToTranslatable | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
updateEntityTypeToNotTranslatable | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
addBaseField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
addLongNameBaseField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
addRevisionableBaseField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
modifyBaseField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
makeBaseFieldEntityKey | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
removeBaseField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
addBaseFieldIndex | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
removeBaseFieldIndex | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
addBundleField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
modifyBundleField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
removeBundleField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
addEntityIndex | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
removeEntityIndex | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
renameBaseTable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
renameDataTable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
renameRevisionBaseTable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
renameRevisionDataTable | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
deleteEntityType | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\system\Tests\Entity\EntityDefinitionTestTrait. | |
*/ | |
namespace Drupal\system\Tests\Entity; | |
use Drupal\Core\Field\BaseFieldDefinition; | |
use Drupal\entity_test\FieldStorageDefinition; | |
/** | |
* Provides some test methods used to update existing entity definitions. | |
*/ | |
trait EntityDefinitionTestTrait { | |
/** | |
* Enables a new entity type definition. | |
*/ | |
protected function enableNewEntityType() { | |
$this->state->set('entity_test_new', TRUE); | |
$this->entityManager->clearCachedDefinitions(); | |
$this->entityDefinitionUpdateManager->applyUpdates(); | |
} | |
/** | |
* Resets the entity type definition. | |
*/ | |
protected function resetEntityType() { | |
$this->state->set('entity_test_update.entity_type', NULL); | |
$this->entityManager->clearCachedDefinitions(); | |
$this->entityDefinitionUpdateManager->applyUpdates(); | |
} | |
/** | |
* Updates the 'entity_test_update' entity type to revisionable. | |
*/ | |
protected function updateEntityTypeToRevisionable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$keys = $entity_type->getKeys(); | |
$keys['revision'] = 'revision_id'; | |
$entity_type->set('entity_keys', $keys); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Updates the 'entity_test_update' entity type not revisionable. | |
*/ | |
protected function updateEntityTypeToNotRevisionable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$keys = $entity_type->getKeys(); | |
unset($keys['revision']); | |
$entity_type->set('entity_keys', $keys); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Updates the 'entity_test_update' entity type to translatable. | |
*/ | |
protected function updateEntityTypeToTranslatable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('translatable', TRUE); | |
$entity_type->set('data_table', 'entity_test_update_data'); | |
if ($entity_type->isRevisionable()) { | |
$entity_type->set('revision_data_table', 'entity_test_update_revision_data'); | |
} | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Updates the 'entity_test_update' entity type to not translatable. | |
*/ | |
protected function updateEntityTypeToNotTranslatable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('translatable', FALSE); | |
$entity_type->set('data_table', NULL); | |
if ($entity_type->isRevisionable()) { | |
$entity_type->set('revision_data_table', NULL); | |
} | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Adds a new base field to the 'entity_test_update' entity type. | |
* | |
* @param string $type | |
* (optional) The field type for the new field. Defaults to 'string'. | |
*/ | |
protected function addBaseField($type = 'string') { | |
$definitions['new_base_field'] = BaseFieldDefinition::create($type) | |
->setName('new_base_field') | |
->setLabel(t('A new base field')); | |
$this->state->set('entity_test_update.additional_base_field_definitions', $definitions); | |
} | |
/** | |
* Adds a long-named base field to the 'entity_test_update' entity type. | |
*/ | |
protected function addLongNameBaseField() { | |
$key = 'entity_test_update.additional_base_field_definitions'; | |
$definitions = $this->state->get($key, []); | |
$definitions['new_long_named_entity_reference_base_field'] = BaseFieldDefinition::create('entity_reference') | |
->setName('new_long_named_entity_reference_base_field') | |
->setLabel(t('A new long-named base field')) | |
->setSetting('target_type', 'user') | |
->setSetting('handler', 'default'); | |
$this->state->set($key, $definitions); | |
} | |
/** | |
* Adds a new revisionable base field to the 'entity_test_update' entity type. | |
* | |
* @param string $type | |
* (optional) The field type for the new field. Defaults to 'string'. | |
*/ | |
protected function addRevisionableBaseField($type = 'string') { | |
$definitions['new_base_field'] = BaseFieldDefinition::create($type) | |
->setName('new_base_field') | |
->setLabel(t('A new revisionable base field')) | |
->setRevisionable(TRUE); | |
$this->state->set('entity_test_update.additional_base_field_definitions', $definitions); | |
} | |
/** | |
* Modifies the new base field from 'string' to 'text'. | |
*/ | |
protected function modifyBaseField() { | |
$this->addBaseField('text'); | |
} | |
/** | |
* Promotes a field to an entity key. | |
*/ | |
protected function makeBaseFieldEntityKey() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_keys = $entity_type->getKeys(); | |
$entity_keys['new_base_field'] = 'new_base_field'; | |
$entity_type->set('entity_keys', $entity_keys); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Removes the new base field from the 'entity_test_update' entity type. | |
*/ | |
protected function removeBaseField() { | |
$this->state->delete('entity_test_update.additional_base_field_definitions'); | |
} | |
/** | |
* Adds a single-field index to the base field. | |
*/ | |
protected function addBaseFieldIndex() { | |
$this->state->set('entity_test_update.additional_field_index.entity_test_update.new_base_field', TRUE); | |
} | |
/** | |
* Removes the index added in addBaseFieldIndex(). | |
*/ | |
protected function removeBaseFieldIndex() { | |
$this->state->delete('entity_test_update.additional_field_index.entity_test_update.new_base_field'); | |
} | |
/** | |
* Adds a new bundle field to the 'entity_test_update' entity type. | |
* | |
* @param string $type | |
* (optional) The field type for the new field. Defaults to 'string'. | |
*/ | |
protected function addBundleField($type = 'string') { | |
$definitions['new_bundle_field'] = FieldStorageDefinition::create($type) | |
->setName('new_bundle_field') | |
->setLabel(t('A new bundle field')) | |
->setTargetEntityTypeId('entity_test_update'); | |
$this->state->set('entity_test_update.additional_field_storage_definitions', $definitions); | |
$this->state->set('entity_test_update.additional_bundle_field_definitions.test_bundle', $definitions); | |
} | |
/** | |
* Modifies the new bundle field from 'string' to 'text'. | |
*/ | |
protected function modifyBundleField() { | |
$this->addBundleField('text'); | |
} | |
/** | |
* Removes the new bundle field from the 'entity_test_update' entity type. | |
*/ | |
protected function removeBundleField() { | |
$this->state->delete('entity_test_update.additional_field_storage_definitions'); | |
$this->state->delete('entity_test_update.additional_bundle_field_definitions.test_bundle'); | |
} | |
/** | |
* Adds an index to the 'entity_test_update' entity type's base table. | |
* | |
* @see \Drupal\entity_test\EntityTestStorageSchema::getEntitySchema(). | |
*/ | |
protected function addEntityIndex() { | |
$indexes = array( | |
'entity_test_update__new_index' => array('name', 'user_id'), | |
); | |
$this->state->set('entity_test_update.additional_entity_indexes', $indexes); | |
} | |
/** | |
* Removes the index added in addEntityIndex(). | |
*/ | |
protected function removeEntityIndex() { | |
$this->state->delete('entity_test_update.additional_entity_indexes'); | |
} | |
/** | |
* Renames the base table to 'entity_test_update_new'. | |
*/ | |
protected function renameBaseTable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('base_table', 'entity_test_update_new'); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Renames the data table to 'entity_test_update_data_new'. | |
*/ | |
protected function renameDataTable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('data_table', 'entity_test_update_data_new'); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Renames the revision table to 'entity_test_update_revision_new'. | |
*/ | |
protected function renameRevisionBaseTable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('revision_table', 'entity_test_update_revision_new'); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Renames the revision data table to 'entity_test_update_revision_data_new'. | |
*/ | |
protected function renameRevisionDataTable() { | |
$entity_type = clone $this->entityManager->getDefinition('entity_test_update'); | |
$entity_type->set('revision_data_table', 'entity_test_update_revision_data_new'); | |
$this->state->set('entity_test_update.entity_type', $entity_type); | |
} | |
/** | |
* Removes the entity type. | |
*/ | |
protected function deleteEntityType() { | |
$this->state->set('entity_test_update.entity_type', 'null'); | |
} | |
} |