function FieldFormTestCase::testFieldFormMultipleWidget

Tests widgets handling multiple values.

File

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

Class

FieldFormTestCase

Code

function testFieldFormMultipleWidget() {
    // Create a field with fixed cardinality and an instance using a multiple
    // widget.
    $this->field = $this->field_multiple;
    $this->field_name = $this->field['field_name'];
    $this->instance['field_name'] = $this->field_name;
    $this->instance['widget']['type'] = 'test_field_widget_multiple';
    field_create_field($this->field);
    field_create_instance($this->instance);
    $langcode = LANGUAGE_NONE;
    // Display creation form.
    $this->drupalGet('test-entity/add/test-bundle');
    $this->assertFieldByName("{$this->field_name}[{$langcode}]", '', 'Widget is displayed.');
    // Create entity with three values.
    $edit = array(
        "{$this->field_name}[{$langcode}]" => '1, 2, 3',
    );
    $this->drupalPost(NULL, $edit, t('Save'));
    preg_match('|test-entity/manage/(\\d+)/edit|', $this->url, $match);
    $id = $match[1];
    // Check that the values were saved.
    $entity_init = field_test_create_stub_entity($id);
    $this->assertFieldValues($entity_init, $this->field_name, $langcode, array(
        1,
        2,
        3,
    ));
    // Display the form, check that the values are correctly filled in.
    $this->drupalGet('test-entity/manage/' . $id . '/edit');
    $this->assertFieldByName("{$this->field_name}[{$langcode}]", '1, 2, 3', 'Widget is displayed.');
    // Submit the form with more values than the field accepts.
    $edit = array(
        "{$this->field_name}[{$langcode}]" => '1, 2, 3, 4, 5',
    );
    $this->drupalPost(NULL, $edit, t('Save'));
    $this->assertRaw('this field cannot hold more than 4 values', 'Form validation failed.');
    // Check that the field values were not submitted.
    $this->assertFieldValues($entity_init, $this->field_name, $langcode, array(
        1,
        2,
        3,
    ));
}

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