Issue #2086095 by yched, swentel, Hydra: Fixed Remove remaining references to field_sql_storage().

8.0.x
Alex Pott 2013-09-23 15:04:08 +02:00
parent 47ec9cf0be
commit e40eb19722
11 changed files with 60 additions and 29 deletions

View File

@ -867,22 +867,22 @@ class DatabaseStorageController extends FieldableEntityStorageControllerBase {
* {@inheritdoc}
*/
public function onBundleRename($bundle, $bundle_new) {
// We need to account for deleted or inactive fields and instances.
$instances = field_read_instances(array('entity_type' => $this->entityType, 'bundle' => $bundle_new), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
// We need to account for deleted or inactive fields and instances. The
// method runs before the instance definitions are updated, so we need to
// fetch them using the old bundle name.
$instances = field_read_instances(array('entity_type' => $this->entityType, 'bundle' => $bundle), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
foreach ($instances as $instance) {
$field = $instance->getField();
if ($field['storage']['type'] == 'field_sql_storage') {
$table_name = static::_fieldTableName($field);
$revision_name = static::_fieldRevisionTableName($field);
$this->database->update($table_name)
->fields(array('bundle' => $bundle_new))
->condition('bundle', $bundle)
->execute();
$this->database->update($revision_name)
->fields(array('bundle' => $bundle_new))
->condition('bundle', $bundle)
->execute();
}
$table_name = static::_fieldTableName($field);
$revision_name = static::_fieldRevisionTableName($field);
$this->database->update($table_name)
->fields(array('bundle' => $bundle_new))
->condition('bundle', $bundle)
->execute();
$this->database->update($revision_name)
->fields(array('bundle' => $bundle_new))
->condition('bundle', $bundle)
->execute();
}
}

View File

@ -81,6 +81,9 @@ interface FieldableEntityStorageControllerInterface extends EntityStorageControl
/**
* Allows reaction to a bundle being renamed.
*
* This method runs before field instance definitions are updated with the new
* bundle name.
*
* @param string $bundle
* The name of the bundle being renamed.
* @param string $bundle_new
@ -91,6 +94,8 @@ interface FieldableEntityStorageControllerInterface extends EntityStorageControl
/**
* Allows reaction to a bundle being deleted.
*
* This method runs before field and instance definitions are deleted.
*
* @param string $bundle
* The name of the bundle being deleted.
*/

View File

@ -30,7 +30,7 @@ abstract class NormalizerTestBase extends DrupalUnitTestBase {
*
* @var array
*/
public static $modules = array('entity', 'entity_test', 'entity_reference', 'field', 'field_sql_storage', 'hal', 'language', 'rest', 'serialization', 'system', 'text', 'user', 'filter');
public static $modules = array('entity', 'entity_test', 'entity_reference', 'field', 'hal', 'language', 'rest', 'serialization', 'system', 'text', 'user', 'filter');
/**
* The mock serializer.

View File

@ -19,7 +19,7 @@ class NodeImportChangeTest extends DrupalUnitTestBase {
*
* @var array
*/
public static $modules = array('node', 'entity', 'field', 'text', 'field_sql_storage', 'system', 'node_test_config');
public static $modules = array('node', 'entity', 'field', 'text', 'system', 'node_test_config');
/**
* Set the default field storage backend for fields created during tests.

View File

@ -19,7 +19,7 @@ class NodeImportCreateTest extends DrupalUnitTestBase {
*
* @var array
*/
public static $modules = array('node', 'entity', 'field', 'text', 'field_sql_storage', 'system');
public static $modules = array('node', 'entity', 'field', 'text', 'system');
/**
* Set the default field storage backend for fields created during tests.

View File

@ -108,7 +108,7 @@ class DrupalUnitTestBaseTest extends DrupalUnitTestBase {
*/
function testEnableModulesInstallContainer() {
// Install Node module.
$this->enableModules(array('field_sql_storage', 'field', 'node'));
$this->enableModules(array('field', 'node'));
$this->installSchema('node', array('node', 'node_field_data'));
// Perform an entity query against node.
@ -206,12 +206,12 @@ class DrupalUnitTestBaseTest extends DrupalUnitTestBase {
$this->assertTrue(TRUE == entity_get_info('entity_test'));
// Load some additional modules; entity_test should still exist.
$this->enableModules(array('entity', 'field', 'field_sql_storage', 'text', 'entity_test'));
$this->enableModules(array('entity', 'field', 'text', 'entity_test'));
$this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
$this->assertTrue(TRUE == entity_get_info('entity_test'));
// Install some other modules; entity_test should still exist.
$this->container->get('module_handler')->install(array('field', 'field_sql_storage', 'field_test'), FALSE);
$this->container->get('module_handler')->install(array('field', 'field_test'), FALSE);
$this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
$this->assertTrue(TRUE == entity_get_info('entity_test'));

View File

@ -6,9 +6,6 @@
*/
namespace Drupal\system\Tests\Entity;
use Drupal\field_sql_storage\Entity\ConditionAggregate;
use Drupal\simpletest\DrupalUnitTestBase;
/**
* Defines a test for testing aggregation support for entity query.
*

View File

@ -20,7 +20,7 @@ class EntityQueryRelationshipTest extends EntityUnitTestBase {
public static $modules = array('taxonomy', 'options');
/**
* @var \Drupal\field_sql_storage\Entity\QueryFactory
* @var \Drupal\Core\Entity\Query\QueryFactory
*/
protected $factory;

View File

@ -19,7 +19,7 @@ class FieldAccessTest extends DrupalUnitTestBase {
*
* @var array
*/
public static $modules = array('entity', 'entity_test', 'field', 'field_sql_storage', 'system', 'text', 'filter', 'user');
public static $modules = array('entity', 'entity_test', 'field', 'system', 'text', 'filter', 'user');
/**
* Holds the currently active global user ID that initiated the test run.

View File

@ -26,7 +26,7 @@ class FieldSqlStorageTest extends EntityUnitTestBase {
*
* @var array
*/
public static $modules = array('field', 'field_test', 'text', 'number', 'entity_test');
public static $modules = array('system', 'field', 'field_test', 'text', 'number', 'entity_test');
/**
* The name of the created field.
@ -67,6 +67,7 @@ class FieldSqlStorageTest extends EntityUnitTestBase {
function setUp() {
parent::setUp();
$this->installSchema('entity_test', array('entity_test_rev', 'entity_test_rev_revision'));
$this->installSchema('system', array('variable'));
$entity_type = 'entity_test_rev';
$this->field_name = strtolower($this->randomName());
@ -458,6 +459,34 @@ class FieldSqlStorageTest extends EntityUnitTestBase {
$this->assertEqual($foreign_key['columns'][$foreign_key_column], 'id', 'Foreign key column name preserved in the schema');
}
/**
* Tests reacting to a bundle being renamed.
*/
function testFieldSqlStorageBundleRename() {
$entity_type = $bundle = 'entity_test_rev';
// Create an entity.
$value = mt_rand(1, 127);
$entity = entity_create($entity_type, array(
'type' => $bundle,
$this->field->name => $value,
));
$entity->save();
// Rename the bundle.
$bundle_new = $bundle . '_renamed';
entity_test_rename_bundle($bundle, $bundle_new, $entity_type);
// Check that the 'bundle' column has been updated in storage.
$row = db_select($this->table, 't')
->fields('t', array('bundle', $this->field->name . '_value'))
->condition('entity_id', $entity->id())
->execute()
->fetch();
$this->assertEqual($row->bundle, $bundle_new);
$this->assertEqual($row->{$this->field->name . '_value'}, $value);
}
/**
* Tests table name generation.
*/

View File

@ -80,7 +80,7 @@ function entity_test_entity_info_alter(&$info) {
* 'entity_test'.
*/
function entity_test_create_bundle($bundle, $text = NULL, $entity_type = 'entity_test') {
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array('entity_test' => array('label' => 'Entity Test Bundle'));
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array($entity_type => array('label' => 'Entity Test Bundle'));
$bundles += array($bundle => array('label' => $text ? $text : $bundle));
\Drupal::state()->set($entity_type . '.bundles', $bundles);
@ -99,7 +99,7 @@ function entity_test_create_bundle($bundle, $text = NULL, $entity_type = 'entity
* 'entity_test'.
*/
function entity_test_rename_bundle($bundle_old, $bundle_new, $entity_type = 'entity_test') {
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array('entity_test' => array('label' => 'Entity Test Bundle'));
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array($entity_type => array('label' => 'Entity Test Bundle'));
$bundles[$bundle_new] = $bundles[$bundle_old];
unset($bundles[$bundle_old]);
\Drupal::state()->set($entity_type . '.bundles', $bundles);
@ -117,7 +117,7 @@ function entity_test_rename_bundle($bundle_old, $bundle_new, $entity_type = 'ent
* 'entity_test'.
*/
function entity_test_delete_bundle($bundle, $entity_type = 'entity_test') {
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array('entity_test' => array('label' => 'Entity Test Bundle'));
$bundles = \Drupal::state()->get($entity_type . '.bundles') ?: array($entity_type => array('label' => 'Entity Test Bundle'));
unset($bundles[$bundle]);
\Drupal::state()->set($entity_type . '.bundles', $bundles);