123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <?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'));
- }
- }
|