You are here

multiform.test in Multiple forms 7.2

Same filename and directory in other branches
  1. 7 tests/multiform.test

@author Kálmán Hosszu - http://drupal.org/user/267481

File

tests/multiform.test
View source
<?php

/**
 * @file
 *
 *
 *
 * @author Kálmán Hosszu - http://drupal.org/user/267481
 */
class MultiformTestCase extends DrupalWebTestCase {

  /**
   * Info method.
   *
   * @return array
   */
  public static function getInfo() {
    return array(
      'name' => 'Forms functionality',
      'description' => 'Testing multiform functionality.',
      'group' => 'Multiform',
    );
  }

  /**
   * Overriden setUp function.
   */
  public function setUp() {
    parent::setUp('multiform', 'multiform_test');
  }

  /**
   * Check various submit ops.
   */
  public function testSubmitHandling() {

    // Go to the form page.
    $this
      ->drupalGet('multiform-test/1');

    // Check buttons.
    $this
      ->assertFieldByName('multiform[multiform_submits_form][op]', 'save');
    $this
      ->assertFieldByName('multiform[multiform_submits_form][op]', 'delete');

    // No more buttons.
    $submitButtons = $this
      ->xpath('//input[@type="submit" and @name!="op"]');
    $this
      ->assertEqual(count($submitButtons), 2, t('No more submit button.'));

    // Save button.
    $this
      ->drupalPost(NULL, array(), 'save');
    $this
      ->assertText('multiform_test1_1multiform_test1_submit_button', t('First form save message is found.'));
    $this
      ->assertText('multiform_test1_2multiform_test1_submit_button', t('Second form save message is found.'));

    // Delete button.
    $this
      ->drupalPost(NULL, array(), 'delete');
    $this
      ->assertText('multiform_test1_1multiform_test1_delete_button', t('First form delete message is found.'));
    $this
      ->assertText('multiform_test1_2multiform_test1_delete_button', t('Second form delete message is found.'));
  }

  /**
   * Check the merged fields exist.
   */
  public function testFieldsAreExist() {

    // Go to the form page.
    $this
      ->drupalGet('multiform-test/2');

    // Check textfields.
    $this
      ->assertFieldByName('multiform[multiform_test2_1][required_text_1]');
    $this
      ->assertFieldByName('multiform[multiform_test2_2][required_text_2]');

    // Check button.
    $this
      ->assertFieldByName('multiform[multiform_submits_form][op]', 'save');
  }

  /**
   * Check required fields.
   */
  public function testRequiredFields() {
    $first_text = array(
      'multiform[multiform_test2_1][required_text_1]' => 'test1 value',
    );
    $second_text = array(
      'multiform[multiform_test2_2][required_text_2]' => 'test2 value',
    );

    // No required fields.
    $this
      ->drupalPost('multiform-test/2', array(), 'save');
    $this
      ->assertText('test1 field is required.');
    $this
      ->assertText('test2 field is required.');
    $this
      ->assertNoText('multiform_test2_1multiform_test2_submit_button');
    $this
      ->assertNoText('multiform_test2_2multiform_test2_submit_button');

    // Send all required fields.
    $this
      ->drupalPost(NULL, array_merge($first_text, $second_text), 'save');
    $this
      ->assertText('multiform_test2_1multiform_test2_submit_button');
    $this
      ->assertText('multiform_test2_2multiform_test2_submit_button');
    $this
      ->assertNoText('test1 field is required.');
    $this
      ->assertNoText('test2 field is required.');
    $first_text_empty = array(
      'multiform[multiform_test2_1][required_text_1]' => '',
    );
    $second_text_empty = array(
      'multiform[multiform_test2_2][required_text_2]' => '',
    );

    // Send first form's required field.
    $this
      ->drupalPost(NULL, array_merge($first_text, $second_text_empty), 'save');
    $this
      ->assertNoText('multiform_test2_1multiform_test2_submit_button');
    $this
      ->assertText('test2 field is required.');

    // Send second form's required field.
    $this
      ->drupalPost(NULL, array_merge($first_text_empty, $second_text), 'save');
    $this
      ->assertNoText('multiform_test2_2multiform_test2_submit_button');
    $this
      ->assertText('test1 field is required.');
  }

}

Classes

Namesort descending Description
MultiformTestCase @file