Commit 2de46154 authored by alexpott's avatar alexpott

Issue #1981306 by aspilicious, andypost, pcambra, swentel, amateescu: Drop...

Issue #1981306 by aspilicious, andypost, pcambra, swentel, amateescu: Drop procedural usage of fields in [a-e] modules.
parent a6a4adc9
......@@ -183,22 +183,22 @@ function custom_block_add_body_field($block_type_id, $label = 'Block body') {
$field = field_info_field('block_body');
$instance = field_info_instance('custom_block', 'block_body', $block_type_id);
if (empty($field)) {
$field = array(
$field = entity_create('field_entity', array(
'field_name' => 'block_body',
'type' => 'text_with_summary',
'entity_types' => array('custom_block'),
);
$field = field_create_field($field);
));
$field->save();
}
if (empty($instance)) {
$instance = array(
$instance = entity_create('field_instance', array(
'field_name' => 'block_body',
'entity_type' => 'custom_block',
'bundle' => $block_type_id,
'label' => $label,
'settings' => array('display_summary' => FALSE),
);
$instance = field_create_instance($instance);
));
$instance->save();
// Assign widget settings for the 'default' form mode.
entity_get_form_display('custom_block', $block_type_id, 'default')
......
......@@ -25,14 +25,14 @@ class CustomBlockFieldTest extends CustomBlockTestBase {
/**
* The created field.
*
* @var array
* @var \Drupal\field\Plugin\Core\Entity\Field
*/
protected $field;
/**
* The created instance
* The created instance.
*
* @var array
* @var \Drupal\field\Plugin\Core\Entity\FieldInstance
*/
protected $instance;
......@@ -64,21 +64,21 @@ public function testBlockFields() {
$this->blockType = $this->createCustomBlockType('link');
// Create a field with settings to validate.
$this->field = array(
$this->field = entity_create('field_entity', array(
'field_name' => drupal_strtolower($this->randomName()),
'type' => 'link',
'cardinality' => 2,
);
field_create_field($this->field);
$this->instance = array(
'field_name' => $this->field['field_name'],
));
$this->field->save();
$this->instance = entity_create('field_instance', array(
'field_name' => $this->field->id(),
'entity_type' => 'custom_block',
'bundle' => 'link',
'settings' => array(
'title' => DRUPAL_OPTIONAL,
),
);
field_create_instance($this->instance);
));
$this->instance->save();
entity_get_form_display('custom_block', 'link', 'default')
->setComponent($this->field['field_name'], array(
'type' => 'link_default',
......
......@@ -10,7 +10,7 @@
*/
function comment_uninstall() {
// Delete comment_body field.
field_delete_field('comment_body');
field_info_field('comment_body')->delete();
// Remove variables.
variable_del('comment_block_count');
......
......@@ -345,26 +345,26 @@ function comment_node_type_delete($info) {
function _comment_body_field_create($info) {
// Create the field if needed.
if (!field_read_field('comment_body', array('include_inactive' => TRUE))) {
$field = array(
$field = entity_create('field_entity', array(
'field_name' => 'comment_body',
'type' => 'text_long',
'entity_types' => array('comment'),
);
field_create_field($field);
));
$field->save();
}
// Create the instance if needed.
if (!field_read_instance('comment', 'comment_body', 'comment_node_' . $info->type, array('include_inactive' => TRUE))) {
entity_invoke_bundle_hook('create', 'comment', 'comment_node_' . $info->type);
// Attaches the body field by default.
$instance = array(
$instance = entity_create('field_instance', array(
'field_name' => 'comment_body',
'label' => 'Comment',
'entity_type' => 'comment',
'bundle' => 'comment_node_' . $info->type,
'settings' => array('text_processing' => 1),
'required' => TRUE,
);
field_create_instance($instance);
));
$instance->save();
// Assign widget settings for the 'default' form mode.
entity_get_form_display('comment', 'comment_node_' . $info->type, 'default')
......
......@@ -41,7 +41,7 @@ function testCommentDefaultFields() {
$this->assertTrue(isset($instances['comment_node_' . $type_name]['comment_body']), format_string('The comment_body field is present for comments on type @type', array('@type' => $type_name)));
// Delete the instance along the way.
field_delete_instance($instances['comment_node_' . $type_name]['comment_body']);
$instances['comment_node_' . $type_name]['comment_body']->delete();
}
// Check that the 'comment_body' field is deleted.
......
......@@ -73,7 +73,7 @@ function setUp() {
// Make comment body translatable.
$field = field_info_field('comment_body');
$field['translatable'] = TRUE;
field_update_field($field);
$field->save();
$this->assertTrue(field_is_translatable('comment', $field), 'Comment body is translatable.');
}
......
......@@ -65,7 +65,7 @@ function setupTestFields() {
parent::setupTestFields();
$field = field_info_field('comment_body');
$field['translatable'] = TRUE;
field_update_field($field);
$field->save();
}
/**
......
......@@ -24,7 +24,7 @@ class ContactFieldsTest extends ViewTestBase {
/**
* Contains the field definition array attached to contact used for this test.
*
* @var array
* @var \Drupal\field\Plugin\Core\Entity\Field
*/
protected $field;
......@@ -39,19 +39,17 @@ public static function getInfo() {
protected function setUp() {
parent::setUp();
$field = array(
$this->field = entity_create('field_entity', array(
'field_name' => strtolower($this->randomName()),
'type' => 'text'
);
));
$this->field->save();
$this->field = field_create_field($field);
$instance = array(
'field_name' => $field['field_name'],
entity_create('field_instance', array(
'field_name' => $this->field->id(),
'entity_type' => 'contact_message',
'bundle' => 'contact_message',
);
field_create_instance($instance);
))->save();
$this->container->get('views.views_data')->clear();
}
......@@ -60,7 +58,6 @@ protected function setUp() {
* Tests the views data generation.
*/
public function testViewsData() {
$field_name = $this->field['field_name'];
$table_name = _field_sql_storage_tablename($this->field);
$data = $this->container->get('views.views_data')->get($table_name);
......@@ -68,7 +65,7 @@ public function testViewsData() {
$expected = array('', '_value', '_format');
$this->assertEqual(count($data), count($expected), 'The expected amount of array keys were found.');
foreach ($expected as $suffix) {
$this->assertTrue(isset($data[$field_name . $suffix]));
$this->assertTrue(isset($data[$this->field->id() . $suffix]));
}
$this->assertTrue(empty($data['table']['join']), 'The field is not joined to the non existent contact message base table.');
}
......
......@@ -26,10 +26,17 @@ class DatetimeFieldTest extends WebTestBase {
/**
* A field to use in this test class.
*
* @var \Drupal\Core\Datetime\DrupalDateTime
* @var \Drupal\field\Plugin\Core\Entity\Field
*/
protected $field;
/**
* The instance used in this test class.
*
* @var \Drupal\field\Plugin\Core\Entity\FieldInstance
*/
protected $instance;
public static function getInfo() {
return array(
'name' => 'Datetime Field',
......@@ -49,22 +56,24 @@ function setUp() {
$this->drupalLogin($web_user);
// Create a field with settings to validate.
$this->field = field_create_field(array(
$this->field = entity_create('field_entity', array(
'field_name' => drupal_strtolower($this->randomName()),
'type' => 'datetime',
'settings' => array('datetime_type' => 'date'),
));
$this->instance = field_create_instance(array(
'field_name' => $this->field['field_name'],
$this->field->save();
$this->instance = entity_create('field_instance', array(
'field_name' => $this->field->id(),
'entity_type' => 'entity_test',
'bundle' => 'entity_test',
'settings' => array(
'default_value' => 'blank',
),
));
$this->instance->save();
entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
->setComponent($this->field['field_name'], array(
entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default')
->setComponent($this->field->id(), array(
'type' => 'datetime_default',
))
->save();
......@@ -74,8 +83,8 @@ function setUp() {
'label' => 'hidden',
'settings' => array('format_type' => 'medium'),
);
entity_get_display($this->instance['entity_type'], $this->instance['bundle'], 'full')
->setComponent($this->field['field_name'], $this->display_options)
entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
->setComponent($this->field->id(), $this->display_options)
->save();
}
......@@ -83,12 +92,13 @@ function setUp() {
* Tests date field functionality.
*/
function testDateField() {
$field_name = $this->field->id();
// Display creation form.
$this->drupalGet('entity_test/add');
$langcode = Language::LANGCODE_NOT_SPECIFIED;
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertNoFieldByName("{$this->field['field_name']}[$langcode][0][value][time]", '', 'Time element not found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertNoFieldByName("{$field_name}[$langcode][0][value][time]", '', 'Time element not found.');
// Submit a valid date and ensure it is accepted.
$value = '2012-12-31 00:00:00';
......@@ -100,7 +110,7 @@ function testDateField() {
$edit = array(
'user_id' => 1,
'name' => $this->randomName(),
"{$this->field['field_name']}[$langcode][0][value][date]" => $date->format($date_format),
"{$field_name}[$langcode][0][value][date]" => $date->format($date_format),
);
$this->drupalPost(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
......@@ -120,8 +130,8 @@ function testDateField() {
foreach ($values as $new_value) {
// Update the entity display settings.
$this->display_options['settings'] = array($setting => $new_value);
$display = entity_get_display($this->instance['entity_type'], $this->instance['bundle'], 'full')
->setComponent($this->instance['field_name'], $this->display_options)
entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
->setComponent($field_name, $this->display_options)
->save();
$this->renderTestEntity($id);
......@@ -138,8 +148,8 @@ function testDateField() {
// Verify that the plain formatter works.
$this->display_options['type'] = 'datetime_plain';
$display = entity_get_display($this->instance['entity_type'], $this->instance['bundle'], 'full')
->setComponent($this->instance['field_name'], $this->display_options)
entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
->setComponent($field_name, $this->display_options)
->save();
$expected = $date->format(DATETIME_DATE_STORAGE_FORMAT);
$this->renderTestEntity($id);
......@@ -150,16 +160,16 @@ function testDateField() {
* Tests date and time field.
*/
function testDatetimeField() {
$field_name = $this->field->id();
// Change the field to a datetime field.
$this->field['settings']['datetime_type'] = 'datetime';
field_update_field($this->field);
$this->field->save();
// Display creation form.
$this->drupalGet('entity_test/add');
$langcode = Language::LANGCODE_NOT_SPECIFIED;
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][time]", '', 'Time element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][time]", '', 'Time element found.');
// Submit a valid date and ensure it is accepted.
$value = '2012-12-31 00:00:00';
......@@ -171,8 +181,8 @@ function testDatetimeField() {
$edit = array(
'user_id' => 1,
'name' => $this->randomName(),
"{$this->field['field_name']}[$langcode][0][value][date]" => $date->format($date_format),
"{$this->field['field_name']}[$langcode][0][value][time]" => $date->format($time_format),
"{$field_name}[$langcode][0][value][date]" => $date->format($date_format),
"{$field_name}[$langcode][0][value][time]" => $date->format($time_format),
);
$this->drupalPost(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
......@@ -189,8 +199,8 @@ function testDatetimeField() {
foreach ($values as $new_value) {
// Update the entity display settings.
$this->display_options['settings'] = array($setting => $new_value);
$display = entity_get_display($this->instance['entity_type'], $this->instance['bundle'], 'full')
->setComponent($this->instance['field_name'], $this->display_options)
entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
->setComponent($field_name, $this->display_options)
->save();
$this->renderTestEntity($id);
......@@ -207,8 +217,8 @@ function testDatetimeField() {
// Verify that the plain formatter works.
$this->display_options['type'] = 'datetime_plain';
$display = entity_get_display($this->instance['entity_type'], $this->instance['bundle'], 'full')
->setComponent($this->instance['field_name'], $this->display_options)
entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
->setComponent($field_name, $this->display_options)
->save();
$expected = $date->format(DATETIME_DATETIME_STORAGE_FORMAT);
$this->renderTestEntity($id);
......@@ -219,14 +229,14 @@ function testDatetimeField() {
* Tests Date List Widget functionality.
*/
function testDatelistWidget() {
$field_name = $this->field->id();
// Change the field to a datetime field.
$this->field['settings']['datetime_type'] = 'datetime';
field_update_field($this->field);
$this->field->settings['datetime_type'] = 'datetime';
$this->field->save();
// Change the widget to a datelist widget.
entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
->setComponent($this->instance['field_name'], array(
entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default')
->setComponent($field_name, array(
'type' => 'datetime_datelist',
'settings' => array(
'increment' => 1,
......@@ -239,7 +249,6 @@ function testDatelistWidget() {
// Display creation form.
$this->drupalGet('entity_test/add');
$field_name = $this->field['field_name'];
$langcode = Language::LANGCODE_NOT_SPECIFIED;
$this->assertFieldByXPath("//*[@id=\"edit-$field_name-$langcode-0-value-year\"]", NULL, 'Year element found.');
......@@ -258,7 +267,6 @@ function testDatelistWidget() {
// Submit a valid date and ensure it is accepted.
$date_value = array('year' => 2012, 'month' => 12, 'day' => 31, 'hour' => 5, 'minute' => 15);
$date = new DrupalDateTime($date_value);
$edit = array(
'user_id' => 1,
......@@ -267,7 +275,7 @@ function testDatelistWidget() {
// Add the ampm indicator since we are testing 12 hour time.
$date_value['ampm'] = 'am';
foreach ($date_value as $part => $value) {
$edit["{$this->field['field_name']}[$langcode][0][value][$part]"] = $value;
$edit["{$field_name}[$langcode][0][value][$part]"] = $value;
}
$this->drupalPost(NULL, $edit, t('Save'));
......@@ -289,13 +297,14 @@ function testDatelistWidget() {
function testDefaultValue() {
// Change the field to a datetime field.
$this->field['settings']['datetime_type'] = 'datetime';
field_update_field($this->field);
$this->field->settings['datetime_type'] = 'datetime';
$this->field->save();
$field_name = $this->field->id();
// Set the default value to 'now'.
$this->instance['settings']['default_value'] = 'now';
$this->instance['default_value_function'] = 'datetime_default_value';
field_update_instance($this->instance);
$this->instance->settings['default_value'] = 'now';
$this->instance->default_value_function = 'datetime_default_value';
$this->instance->save();
// Display creation form.
$date = new DrupalDateTime();
......@@ -307,21 +316,21 @@ function testDefaultValue() {
// it may be a few seconds between the time the comparison date is created
// and the form date, so we just test the date and that the time is not
// empty.
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][date]", $date->format($date_format), 'Date element found.');
$this->assertNoFieldByName("{$this->field['field_name']}[$langcode][0][value][time]", '', 'Time element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][date]", $date->format($date_format), 'Date element found.');
$this->assertNoFieldByName("{$field_name}[$langcode][0][value][time]", '', 'Time element found.');
// Set the default value to 'blank'.
$this->instance['settings']['default_value'] = 'blank';
$this->instance['default_value_function'] = 'datetime_default_value';
field_update_instance($this->instance);
$this->instance->settings['default_value'] = 'blank';
$this->instance->default_value_function = 'datetime_default_value';
$this->instance->save();
// Display creation form.
$date = new DrupalDateTime();
$this->drupalGet('entity_test/add');
// See that no date is set.
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][time]", '', 'Time element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][time]", '', 'Time element found.');
}
/**
......@@ -330,44 +339,45 @@ function testDefaultValue() {
function testInvalidField() {
// Change the field to a datetime field.
$this->field['settings']['datetime_type'] = 'datetime';
field_update_field($this->field);
$this->field->settings['datetime_type'] = 'datetime';
$this->field->save();
$field_name = $this->field->id();
// Display creation form.
$this->drupalGet('entity_test/add');
$langcode = Language::LANGCODE_NOT_SPECIFIED;
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$this->field['field_name']}[$langcode][0][value][time]", '', 'Time element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][date]", '', 'Date element found.');
$this->assertFieldByName("{$field_name}[$langcode][0][value][time]", '', 'Time element found.');
// Submit invalid dates and ensure they is not accepted.
$date_value = '';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => '12:00:00',
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => '12:00:00',
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', 'Empty date value has been caught.');
$date_value = 'aaaa-12-01';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => '00:00:00',
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => '00:00:00',
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid year value %date has been caught.', array('%date' => $date_value)));
$date_value = '2012-75-01';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => '00:00:00',
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => '00:00:00',
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid month value %date has been caught.', array('%date' => $date_value)));
$date_value = '2012-12-99';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => '00:00:00',
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => '00:00:00',
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid day value %date has been caught.', array('%date' => $date_value)));
......@@ -375,8 +385,8 @@ function testInvalidField() {
$date_value = '2012-12-01';
$time_value = '';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => $time_value,
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => $time_value,
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', 'Empty time value has been caught.');
......@@ -384,8 +394,8 @@ function testInvalidField() {
$date_value = '2012-12-01';
$time_value = '49:00:00';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => $time_value,
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => $time_value,
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid hour value %time has been caught.', array('%time' => $time_value)));
......@@ -393,8 +403,8 @@ function testInvalidField() {
$date_value = '2012-12-01';
$time_value = '12:99:00';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => $time_value,
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => $time_value,
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid minute value %time has been caught.', array('%time' => $time_value)));
......@@ -402,8 +412,8 @@ function testInvalidField() {
$date_value = '2012-12-01';
$time_value = '12:15:99';
$edit = array(
"{$this->field['field_name']}[$langcode][0][value][date]" => $date_value,
"{$this->field['field_name']}[$langcode][0][value][time]" => $time_value,
"{$field_name}[$langcode][0][value][date]" => $date_value,
"{$field_name}[$langcode][0][value][time]" => $time_value,
);
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertText('date is invalid', format_string('Invalid second value %time has been caught.', array('%time' => $time_value)));
......
......@@ -54,15 +54,15 @@ function setUp() {
*/
function createFieldWithInstance($field_name, $type, $cardinality, $label, $instance_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
$field = $field_name . '_field';
$this->field = array(
$this->$field = entity_create('field_entity', array(
'field_name' => $field_name,
'type' => $type,
'cardinality' => $cardinality,
);
$this->$field = field_create_field($this->field);
));
$this->$field->save();
$instance = $field_name . '_instance';
$this->$instance = array(
$this->$instance = entity_create('field_instance', array(
'field_name' => $field_name,
'entity_type' => 'entity_test',
'bundle' => 'entity_test',
......@@ -70,8 +70,8 @@ function createFieldWithInstance($field_name, $type, $cardinality, $label, $inst
'description' => $label,
'weight' => mt_rand(0, 127),
'settings' => $instance_settings,
);
field_create_instance($this->$instance);
));
$this->$instance->save();
entity_get_form_display('entity_test', 'entity_test', 'default')
->setComponent($field_name, array(
......
......@@ -79,24 +79,24 @@ function testText() {
$this->assertEqual('direct', $this->getSelectedEditor($items, $field_name), "Without text processing, cardinality 1, the 'direct' editor is selected.");
// Editor selection with text processing, cardinality 1.
$this->field_text_instance['settings']['text_processing'] = 1;