function FieldTranslationsTestCase::testTranslatableFieldSaveLoad in Drupal 7
Test translatable fields storage/retrieval.
File
- modules/
field/ tests/ field.test, line 3259 - Tests for field.module.
Class
- FieldTranslationsTestCase
- Unit test class for the multilanguage fields logic.
Code
function testTranslatableFieldSaveLoad() {
// Enable field translations for nodes.
field_test_entity_info_translatable('node', TRUE);
$entity_info = entity_get_info('node');
$this
->assertTrue(count($entity_info['translation']), 'Nodes are translatable.');
// Prepare the field translations.
field_test_entity_info_translatable('test_entity', TRUE);
$eid = $evid = 1;
$entity_type = 'test_entity';
$entity = field_test_create_stub_entity($eid, $evid, $this->instance['bundle']);
$field_translations = array();
$available_languages = field_available_languages($entity_type, $this->field);
$this
->assertTrue(count($available_languages) > 1, 'Field is translatable.');
foreach ($available_languages as $langcode) {
$field_translations[$langcode] = $this
->_generateTestFieldValues($this->field['cardinality']);
}
// Save and reload the field translations.
$entity->{$this->field_name} = $field_translations;
field_attach_insert($entity_type, $entity);
unset($entity->{$this->field_name});
field_attach_load($entity_type, array(
$eid => $entity,
));
// Check if the correct values were saved/loaded.
foreach ($field_translations as $langcode => $items) {
$result = TRUE;
foreach ($items as $delta => $item) {
$result = $result && $item['value'] == $entity->{$this->field_name}[$langcode][$delta]['value'];
}
$this
->assertTrue($result, format_string('%language translation correctly handled.', array(
'%language' => $langcode,
)));
}
}