form_example.test
Test file for form_example module.
File
-
form_example/
form_example.test
View source
<?php
/**
* @file
* Test file for form_example module.
*/
/**
* Default test case for the form_example module.
*
* @ingroup form_example
*/
class FormExampleTestCase extends DrupalWebTestCase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Form Example',
'description' => 'Various tests on the form_example module.',
'group' => 'Examples',
);
}
/**
* Enable modules.
*/
public function setUp() {
parent::setUp('form_example');
}
/**
* Test each tutorial.
*/
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);
}
/**
* Test Wizard tutorial.
*
* @TODO improve this using drupal_form_submit
*/
public function testWizard() {
// Check if the wizard is there.
$this->drupalGet('examples/form_example/wizard');
$this->assertText(t('Extensible wizard example'));
$first_name = $this->randomName(8);
$last_name = $this->randomName(8);
$city = $this->randomName(8);
$aunts_name = $this->randomName(8);
// Submit the first step of the wizard.
$options = array(
'first_name' => $first_name,
'last_name' => $last_name,
);
$this->drupalPost('examples/form_example/wizard', $options, t('Next'));
// A label city is created, and two buttons appear, Previous and Next.
$this->assertText(t('Hint: Do not enter "San Francisco", and do not leave this out.'));
// Go back to the beginning and verify that the value is there.
$this->drupalPost(NULL, array(), t('Previous'));
$this->assertFieldByName('first_name', $first_name);
$this->assertFieldByName('last_name', $last_name);
// Go next. We should keep our values.
$this->drupalPost(NULL, array(), t('Next'));
$this->assertText(t('Hint: Do not enter "San Francisco", and do not leave this out.'));
// Try "San Francisco".
$this->drupalPost(NULL, array(
'city' => 'San Francisco',
), t('Next'));
$this->assertText(t('You were warned not to enter "San Francisco"'));
// Try the real city.
$this->drupalPost(NULL, array(
'city' => $city,
), t('Next'));
// Enter the Aunt's name, but then the previous button.
$this->drupalPost(NULL, array(
'aunts_name' => $aunts_name,
), t('Previous'));
$this->assertFieldByName('city', $city);
// Go to first step and re-check all fields.
$this->drupalPost(NULL, array(), t('Previous'));
$this->assertFieldByName('first_name', $first_name);
$this->assertFieldByName('last_name', $last_name);
// Re-check second step.
$this->drupalPost(NULL, array(), t('Next'));
$this->assertText(t('Hint: Do not enter "San Francisco", and do not leave this out.'));
$this->assertFieldByName('city', $city);
// Re-check third step.
$this->drupalPost(NULL, array(), t('Next'));
$this->assertFieldByName('aunts_name', $aunts_name);
// Press finish and check for correct values.
$this->drupalPost(NULL, array(), t('Finish'));
$this->assertRaw(t('[first_name] => @first_name', array(
'@first_name' => $first_name,
)));
$this->assertRaw(t('[last_name] => @last_name', array(
'@last_name' => $last_name,
)));
$this->assertRaw(t('[city] => @city', array(
'@city' => $city,
)));
$this->assertRaw(t('[aunts_name] => @aunts_name', array(
'@aunts_name' => $aunts_name,
)));
}
/**
* Test the element_example form for correct behavior.
*/
public function testElementExample() {
// Make one basic POST with a set of values and check for correct responses.
$edit = array(
'a_form_example_textfield' => $this->randomName(),
'a_form_example_checkbox' => TRUE,
'a_form_example_element_discrete[areacode]' => sprintf('%03d', rand(0, 999)),
'a_form_example_element_discrete[prefix]' => sprintf('%03d', rand(0, 999)),
'a_form_example_element_discrete[extension]' => sprintf('%04d', rand(0, 9999)),
'a_form_example_element_combined[areacode]' => sprintf('%03d', rand(0, 999)),
'a_form_example_element_combined[prefix]' => sprintf('%03d', rand(0, 999)),
'a_form_example_element_combined[extension]' => sprintf('%04d', rand(0, 9999)),
);
$this->drupalPost('examples/form_example/element_example', $edit, t('Submit'));
$this->assertText(t('a_form_example_textfield has value @value', array(
'@value' => $edit['a_form_example_textfield'],
)));
$this->assertText(t('a_form_example_checkbox has value 1'));
$this->assertPattern(t('/areacode.*!areacode/', array(
'!areacode' => $edit['a_form_example_element_discrete[areacode]'],
)));
$this->assertPattern(t('/prefix.*!prefix/', array(
'!prefix' => $edit['a_form_example_element_discrete[prefix]'],
)));
$this->assertPattern(t('/extension.*!extension/', array(
'!extension' => $edit['a_form_example_element_discrete[extension]'],
)));
$this->assertText(t('a_form_example_element_combined has value @value', array(
'@value' => $edit['a_form_example_element_combined[areacode]'] . $edit['a_form_example_element_combined[prefix]'] . $edit['a_form_example_element_combined[extension]'],
)));
// Now flip the checkbox and check for correct behavior.
$edit['a_form_example_checkbox'] = FALSE;
$this->drupalPost('examples/form_example/element_example', $edit, t('Submit'));
$this->assertText(t('a_form_example_checkbox has value 0'));
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
FormExampleTestCase | Default test case for the form_example module. |