function FormElementTestCase::testOptions

Tests expansion of #options for #type checkboxes and radios.

File

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

Class

FormElementTestCase
Tests building and processing of core form elements.

Code

function testOptions() {
    $this->drupalGet('form-test/checkboxes-radios');
    // Verify that all options appear in their defined order.
    foreach (array(
        'checkbox',
        'radio',
    ) as $type) {
        $elements = $this->xpath('//input[@type=:type]', array(
            ':type' => $type,
        ));
        $expected_values = array(
            '0',
            'foo',
            '1',
            'bar',
            '>',
        );
        foreach ($elements as $element) {
            $expected = array_shift($expected_values);
            $this->assertIdentical((string) $element['value'], $expected);
        }
    }
    // Enable customized option sub-elements.
    $this->drupalGet('form-test/checkboxes-radios/customize');
    // Verify that all options appear in their defined order, taking a custom
    // #weight into account.
    foreach (array(
        'checkbox',
        'radio',
    ) as $type) {
        $elements = $this->xpath('//input[@type=:type]', array(
            ':type' => $type,
        ));
        $expected_values = array(
            '0',
            'foo',
            'bar',
            '>',
            '1',
        );
        foreach ($elements as $element) {
            $expected = array_shift($expected_values);
            $this->assertIdentical((string) $element['value'], $expected);
        }
    }
    // Verify that custom #description properties are output.
    foreach (array(
        'checkboxes',
        'radios',
    ) as $type) {
        $elements = $this->xpath('//input[@id=:id]/following-sibling::div[@class=:class]', array(
            ':id' => 'edit-' . $type . '-foo',
            ':class' => 'description',
        ));
        $this->assertTrue(count($elements), format_string('Custom %type option description found.', array(
            '%type' => $type,
        )));
    }
}

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