function FieldAttachStorageTestCase::testFieldAttachSaveLoadDifferentStorage

Test saving and loading fields using different storage backends.

File

modules/field/tests/field.test, line 296

Class

FieldAttachStorageTestCase
Unit test class for storage-related field_attach_* functions.

Code

function testFieldAttachSaveLoadDifferentStorage() {
    $entity_type = 'test_entity';
    $langcode = LANGUAGE_NONE;
    // Create two fields using different storage backends, and their instances.
    $fields = array(
        array(
            'field_name' => 'field_1',
            'type' => 'test_field',
            'cardinality' => 4,
            'storage' => array(
                'type' => 'field_sql_storage',
            ),
        ),
        array(
            'field_name' => 'field_2',
            'type' => 'test_field',
            'cardinality' => 4,
            'storage' => array(
                'type' => 'field_test_storage',
            ),
        ),
    );
    foreach ($fields as $field) {
        field_create_field($field);
        $instance = array(
            'field_name' => $field['field_name'],
            'entity_type' => 'test_entity',
            'bundle' => 'test_bundle',
        );
        field_create_instance($instance);
    }
    $entity_init = field_test_create_stub_entity();
    // Create entity and insert random values.
    $entity = clone $entity_init;
    $values = array();
    foreach ($fields as $field) {
        $values[$field['field_name']] = $this->_generateTestFieldValues($this->field['cardinality']);
        $entity->{$field['field_name']}[$langcode] = $values[$field['field_name']];
    }
    field_attach_insert($entity_type, $entity);
    // Check that values are loaded as expected.
    $entity = clone $entity_init;
    field_attach_load($entity_type, array(
        $entity->ftid => $entity,
    ));
    foreach ($fields as $field) {
        $this->assertEqual($values[$field['field_name']], $entity->{$field['field_name']}[$langcode], format_string('%storage storage: expected values were found.', array(
            '%storage' => $field['storage']['type'],
        )));
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.