From fde84e2a5f342beed2dba315ff8f9917b8e1c28e Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Sat, 25 Jan 2014 17:04:02 +0100 Subject: [PATCH] Issue #2174509 by amateescu, chx: Drupal\Core\Field\FieldDefinition::getSchema() is broken. --- core/lib/Drupal/Core/Field/FieldDefinition.php | 7 ++++++- .../lib/Drupal/field/Tests/TestItemTest.php | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/core/lib/Drupal/Core/Field/FieldDefinition.php b/core/lib/Drupal/Core/Field/FieldDefinition.php index 7b0155f8d6e..38b5d4de0a4 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinition.php +++ b/core/lib/Drupal/Core/Field/FieldDefinition.php @@ -24,6 +24,11 @@ class FieldDefinition extends ListDefinition implements FieldDefinitionInterface */ protected $schema; + /** + * @var array + */ + protected $indexes = array(); + /** * Creates a new field definition. * @@ -286,7 +291,7 @@ class FieldDefinition extends ListDefinition implements FieldDefinitionInterface public function getSchema() { if (!isset($this->schema)) { // Get the schema from the field item class. - $definition = \Drupal::service('plugin.manager.field.field_type')->getDefinition($this->getFieldType()); + $definition = \Drupal::service('plugin.manager.field.field_type')->getDefinition($this->getType()); $class = $definition['class']; $schema = $class::schema($this); // Fill in default values for optional entries. diff --git a/core/modules/field/lib/Drupal/field/Tests/TestItemTest.php b/core/modules/field/lib/Drupal/field/Tests/TestItemTest.php index bd29d9b41d6..819e983aec4 100644 --- a/core/modules/field/lib/Drupal/field/Tests/TestItemTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/TestItemTest.php @@ -7,6 +7,7 @@ namespace Drupal\field\Tests; +use Drupal\Core\Field\FieldDefinition; use Drupal\Core\Field\FieldItemInterface; use Drupal\Core\Field\FieldItemListInterface; @@ -83,6 +84,23 @@ class TestItemTest extends FieldUnitTestBase { $entity->save(); $entity = entity_load('entity_test', $id); $this->assertEqual($entity->{$this->field_name}->value, $new_value); + + // Test the schema for this field type. + $expected_schema = array( + 'columns' => array( + 'value' => array( + 'type' => 'int', + 'size' => 'medium', + 'not null' => FALSE, + ), + ), + 'indexes' => array( + 'value' => array('value'), + ), + 'foreign keys' => array(), + ); + $field_schema = FieldDefinition::create('test_field')->getSchema(); + $this->assertEqual($field_schema, $expected_schema); } }