function FormExampleTestCase::testTutorials

Test each tutorial.

File

form_example/form_example.test, line 36

Class

FormExampleTestCase
Default test case for the form_example module.

Code

public function testTutorials() {
    // Tutorial #1
    $this->drupalGet('examples/form_example/tutorial');
    $this->assertText(t('#9'));
    // #2
    $this->drupalPost('examples/form_example/tutorial/2', array(
        'name' => t('name'),
    ), t('Submit'));
    // #4
    $this->drupalPost('examples/form_example/tutorial/4', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
    ), t('Submit'));
    $this->drupalPost('examples/form_example/tutorial/4', array(), t('Submit'));
    $this->assertText(t('First name field is required'));
    $this->assertText(t('Last name field is required'));
    // #5
    $this->drupalPost('examples/form_example/tutorial/5', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
    ), t('Submit'));
    $this->assertText(t('Please enter your first name'));
    $this->drupalPost('examples/form_example/tutorial/4', array(), t('Submit'));
    $this->assertText(t('First name field is required'));
    $this->assertText(t('Last name field is required'));
    // #6
    $this->drupalPost('examples/form_example/tutorial/6', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
        'year_of_birth' => 1955,
    ), t('Submit'));
    $this->assertNoText(t('Enter a year between 1900 and 2000'));
    $this->drupalPost('examples/form_example/tutorial/6', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
        'year_of_birth' => 1855,
    ), t('Submit'));
    $this->assertText(t('Enter a year between 1900 and 2000'));
    // #7
    $this->drupalPost('examples/form_example/tutorial/7', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
        'year_of_birth' => 1955,
    ), t('Submit'));
    $this->assertText(t('The form has been submitted. name="firstname lastname", year of birth=1955'));
    $this->drupalPost('examples/form_example/tutorial/7', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
        'year_of_birth' => 1855,
    ), t('Submit'));
    $this->assertText(t('Enter a year between 1900 and 2000'));
    // Test tutorial #8.
    $this->drupalPost('examples/form_example/tutorial/8', array(
        'first' => t('firstname'),
        'last' => t('lastname'),
        'year_of_birth' => 1955,
    ), t('Next >>'));
    $this->drupalPost(NULL, array(
        'color' => t('green'),
    ), t('<< Back'));
    $this->drupalPost(NULL, array(), t('Next >>'));
    $this->drupalPost(NULL, array(
        'color' => t('red'),
    ), t('Submit'));
    $this->assertText(t('The form has been submitted. name="firstname lastname", year of birth=1955'));
    $this->assertText(t('And the favorite color is red'));
    // #9
    $url = 'examples/form_example/tutorial/9';
    for ($i = 1; $i <= 4; $i++) {
        if ($i > 1) {
            // Later steps of multistep form take NULL.
            $url = NULL;
        }
        $this->drupalPost($url, array(
            "name[{$i}][first]" => "firstname {$i}",
            "name[{$i}][last]" => "lastname {$i}",
            "name[{$i}][year_of_birth]" => 1950 + $i,
        ), t('Add another name'));
        $this->assertText(t('Name #@num', array(
            '@num' => $i + 1,
        )));
    }
    // Now remove the last name added (#5).
    $this->drupalPost(NULL, array(), t('Remove latest name'));
    $this->assertNoText("Name #5");
    $this->drupalPost(NULL, array(), t('Submit'));
    $this->assertText('Form 9 has been submitted');
    for ($i = 1; $i <= 4; $i++) {
        $this->assertText(t('@num: firstname @num lastname @num (@year)', array(
            '@num' => $i,
            '@year' => 1950 + $i,
        )));
    }
    // #10
    $url = 'examples/form_example/tutorial/10';
    $this->drupalPost($url, array(), t('Submit'));
    $this->assertText(t('No file was uploaded.'));
    // Get sample images.
    $images = $this->drupalGetTestFiles('image');
    foreach ($images as $image) {
        $this->drupalPost($url, array(
            'files[file]' => drupal_realpath($image->uri),
        ), t('Submit'));
        $this->assertText(t('The form has been submitted and the image has been saved, filename: @filename.', array(
            '@filename' => $image->filename,
        )));
    }
    // #11: Confirmation form.
    // Try to submit without a name.
    $url = 'examples/form_example/tutorial/11';
    $this->drupalPost($url, array(), t('Submit'));
    $this->assertText('Name field is required.');
    // Verify that we can enter a name and get the confirmation form.
    $this->drupalPost($url, array(
        'name' => t('name 1'),
    ), t('Submit'));
    $this->assertText(t('Is this really your name?'));
    $this->assertFieldById('edit-name', 'name 1');
    // Check the 'yes' button.
    $confirmation_text = t("Confirmation form submission recieved. According to your submission your name is '@name'", array(
        '@name' => 'name 1',
    ));
    $url = 'examples/form_example/tutorial/11/confirm/name%201';
    $this->drupalPost($url, array(), t('This is my name'));
    $this->assertText($confirmation_text);
    // Check the 'no' button.
    $this->drupalGet($url);
    $this->clickLink(t('Nope, not my name'));
    $this->assertNoText($confirmation_text);
}