function FormsTestCase::testSelect

Tests validation of #type 'select' elements.

File

modules/simpletest/tests/form.test, line 261

Class

FormsTestCase
@file Unit tests for the Drupal Form API.

Code

function testSelect() {
    $form = $form_state = array();
    $form = form_test_select($form, $form_state);
    $error = '!name field is required.';
    $this->drupalGet('form-test/select');
    // Posting without any values should throw validation errors.
    $this->drupalPost(NULL, array(), 'Submit');
    $this->assertNoText(t($error, array(
        '!name' => $form['select']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['select_required']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['select_optional']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['empty_value']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['empty_value_one']['#title'],
    )));
    $this->assertText(t($error, array(
        '!name' => $form['no_default']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['no_default_optional']['#title'],
    )));
    $this->assertText(t($error, array(
        '!name' => $form['no_default_empty_option']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['no_default_empty_option_optional']['#title'],
    )));
    $this->assertText(t($error, array(
        '!name' => $form['no_default_empty_value']['#title'],
    )));
    $this->assertText(t($error, array(
        '!name' => $form['no_default_empty_value_one']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['no_default_empty_value_optional']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['multiple']['#title'],
    )));
    $this->assertNoText(t($error, array(
        '!name' => $form['multiple_no_default']['#title'],
    )));
    $this->assertText(t($error, array(
        '!name' => $form['multiple_no_default_required']['#title'],
    )));
    // Post values for required fields.
    $edit = array(
        'no_default' => 'three',
        'no_default_empty_option' => 'three',
        'no_default_empty_value' => 'three',
        'no_default_empty_value_one' => 'three',
        'multiple_no_default_required[]' => 'three',
    );
    $this->drupalPost(NULL, $edit, 'Submit');
    $values = drupal_json_decode($this->drupalGetContent());
    // Verify expected values.
    $expected = array(
        'select' => 'one',
        'empty_value' => 'one',
        'empty_value_one' => 'one',
        'no_default' => 'three',
        'no_default_optional' => 'one',
        'no_default_optional_empty_value' => '',
        'no_default_empty_option' => 'three',
        'no_default_empty_option_optional' => '',
        'no_default_empty_value' => 'three',
        'no_default_empty_value_one' => 'three',
        'no_default_empty_value_optional' => 0,
        'multiple' => array(
            'two' => 'two',
        ),
        'multiple_no_default' => array(),
        'multiple_no_default_required' => array(
            'three' => 'three',
        ),
    );
    foreach ($expected as $key => $value) {
        $this->assertIdentical($values[$key], $value, format_string('@name: @actual is equal to @expected.', array(
            '@name' => $key,
            '@actual' => var_export($values[$key], TRUE),
            '@expected' => var_export($value, TRUE),
        )));
    }
}

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