function FieldCrudTestCase::testUpdateField
Test updating a field.
File
-
modules/
field/ tests/ field.test, line 2747
Class
Code
function testUpdateField() {
// Create a field with a defined cardinality, so that we can ensure it's
// respected. Since cardinality enforcement is consistent across database
// systems, it makes a good test case.
$cardinality = 4;
$field_definition = array(
'field_name' => 'field_update',
'type' => 'test_field',
'cardinality' => $cardinality,
);
$field_definition = field_create_field($field_definition);
$instance = array(
'field_name' => 'field_update',
'entity_type' => 'test_entity',
'bundle' => 'test_bundle',
);
$instance = field_create_instance($instance);
do {
// We need a unique ID for our entity. $cardinality will do.
$id = $cardinality;
$entity = field_test_create_stub_entity($id, $id, $instance['bundle']);
// Fill in the entity with more values than $cardinality.
for ($i = 0; $i < 20; $i++) {
$entity->field_update[LANGUAGE_NONE][$i]['value'] = $i;
}
// Save the entity.
field_attach_insert('test_entity', $entity);
// Load back and assert there are $cardinality number of values.
$entity = field_test_create_stub_entity($id, $id, $instance['bundle']);
field_attach_load('test_entity', array(
$id => $entity,
));
$this->assertEqual(count($entity->field_update[LANGUAGE_NONE]), $field_definition['cardinality'], 'Cardinality is kept');
// Now check the values themselves.
for ($delta = 0; $delta < $cardinality; $delta++) {
$this->assertEqual($entity->field_update[LANGUAGE_NONE][$delta]['value'], $delta, 'Value is kept');
}
// Increase $cardinality and set the field cardinality to the new value.
$field_definition['cardinality'] = ++$cardinality;
field_update_field($field_definition);
} while ($cardinality < 6);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.