You are here

public function FormExampleTestCase::testTutorials in Examples for Developers 7

Same name and namespace in other branches
  1. 6 form_example/form_example.test \FormExampleTestCase::testTutorials()

Test each tutorial.

File

form_example/form_example.test, line 36
Test file for form_example module.

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);
}