Mercurial > hg > isophonics-drupal-site
view core/modules/field/tests/src/Kernel/Entity/Update/SqlContentEntityStorageSchemaColumnTest.php @ 3:e11175134f4e
Attempt to introduce editable version of theme
author | Chris Cannam |
---|---|
date | Tue, 05 Dec 2017 11:25:38 +0000 |
parents | 4c8ae668cc8c |
children | af1871eacc83 |
line wrap: on
line source
<?php namespace Drupal\Tests\field\Kernel\Entity\Update; use Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException; use Drupal\entity_test\Entity\EntityTestRev; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\KernelTests\KernelTestBase; /** * Tests that schema changes in fields with data are detected during updates. * * @group Entity */ class SqlContentEntityStorageSchemaColumnTest extends KernelTestBase { /** * {@inheritdoc} */ public static $modules = ['entity_test', 'field', 'text', 'user']; /** * The created entity. * * @var \Drupal\Core\Entity\Entity */ protected $entity; /** * The field. * * @var \Drupal\field\FieldConfigInterface */ protected $field; /** * The field storage. * * @var \Drupal\field\FieldStorageConfigInterface */ protected $fieldStorage; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installEntitySchema('entity_test_rev'); $this->installEntitySchema('user'); $field_name = 'test'; $this->fieldStorage = FieldStorageConfig::create([ 'field_name' => $field_name, 'entity_type' => 'entity_test_rev', 'type' => 'string', 'cardinality' => 1, ]); $this->fieldStorage->save(); $this->field = FieldConfig::create([ 'field_name' => $field_name, 'entity_type' => 'entity_test_rev', 'bundle' => 'entity_test_rev', 'required' => TRUE, ]); $this->field->save(); // Create an entity with field data. $this->entity = EntityTestRev::create([ 'user_id' => mt_rand(1, 10), 'name' => $this->randomMachineName(), $field_name => $this->randomString(), ]); $this->entity->save(); } /** * Tests that column-level schema changes are detected for fields with data. */ public function testColumnUpdate() { // Change the field type in the stored schema. $schema = \Drupal::keyValue('entity.storage_schema.sql')->get('entity_test_rev.field_schema_data.test'); $schema['entity_test_rev__test']['fields']['test_value']['type'] = 'varchar_ascii'; \Drupal::keyValue('entity.storage_schema.sql')->set('entity_test_rev.field_schema_data.test', $schema); // Now attempt to run automatic updates. An exception should be thrown // since there is data in the table. try { \Drupal::service('entity.definition_update_manager')->applyUpdates(); $this->fail('Failed to detect a schema change in a field with data.'); } catch (FieldStorageDefinitionUpdateForbiddenException $e) { $this->pass('Detected a schema change in a field with data.'); } } }