You are here

function WebformTestCase::testWebformComponents in Webform 6.3

Same name and namespace in other branches
  1. 6.2 tests/webform.test \WebformTestCase::testWebformComponents()
  2. 7.3 tests/webform.test \WebformTestCase::testWebformComponents()

Provide a list of components to test throughout the suite.

Each component provides:

  • A default configuration for the component.
  • Values to try setting via POST
  • Values that should match the database storage when set via POST
  • Values that should match the database storage when using the default values.

Return value

array An array of each component settings.

5 calls to WebformTestCase::testWebformComponents()
WebformGeneralTestCase::testWebformCreateNewType in tests/webform.test
Test webform-enabling a different node type and testing behavior.
WebformSubmissionTestCase::webformSubmissionExecute in tests/submission.test
Execute the submission test.
WebformSubmissionTestCase::webformSubmissionValidateExecute in tests/submission.test
Execute a validation check for a single component.
WebformTestCase::testWebformForm in tests/webform.test
WebformTestCase::testWebformPost in tests/webform.test
Generate a list of all values that would result in a valid submission.

File

tests/webform.test, line 99
Webform module tests.

Class

WebformTestCase
@file Webform module tests.

Code

function testWebformComponents() {
  if (isset($this->_webform_components)) {
    return $this->_webform_components;
  }
  $this->_webform_components = array(
    // Test date components.
    'date' => array(
      'component' => array(
        'form_key' => 'date',
        'name' => 'Date',
        'type' => 'date',
        'value' => '19 Nov 1978',
        'extra' => array(
          'timezone' => 'site',
          'start_date' => '-100 years',
          'end_date' => '+2 years',
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '1982-09-30',
      ),
      'database default values' => array(
        '1978-11-19',
      ),
    ),
    // Test grid components.
    'grid' => array(
      'component' => array(
        'form_key' => 'grid',
        'name' => 'Grid',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "0|Ålphå\n1|ıé†å\n2|Î鬆å",
          // Left side
          'options' => "0|øne\n1|twö\n2|ǼBƇ\n3|€Euro",
        ),
        'mandatory' => '0',
        'pid' => '2',
        'weight' => '-19',
      ),
      'sample values' => array(
        '0' => '0',
        '1' => '1',
        '2' => '2',
      ),
      'database values' => array(
        '0' => '0',
        '1' => '1',
        '2' => '2',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    'grid_keyed' => array(
      'component' => array(
        'form_key' => 'grid_keyed',
        'name' => 'Grid Keyed',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "one|What's your option?\ntwo|Agåin?\nthree|One more time!",
          // Left side.
          'options' => "one|Option one\ntwo|Option 2\nthree| Three is me",
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'one' => 'one',
        'two' => 'two',
        'three' => 'three',
      ),
      'database values' => array(
        'one' => 'one',
        'two' => 'two',
        'three' => 'three',
      ),
      'database default values' => array(
        'one' => '',
        'two' => '',
        'three' => '',
      ),
    ),
    // Test select components.
    'checkboxes' => array(
      'component' => array(
        'form_key' => 'checkboxes',
        'name' => 'Checkboxes',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
          'multiple' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'one' => TRUE,
        'two' => FALSE,
        'three' => TRUE,
      ),
      'database values' => array(
        'one',
        'three',
      ),
      'database default values' => array(
        'two',
      ),
    ),
    'checkboxes_zero' => array(
      'component' => array(
        'form_key' => 'checkboxes_zero',
        'name' => 'Checkboxes zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'items' => "0|zero\n1|one\n2|two",
          'multiple' => 1,
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => array(
        '0' => TRUE,
      ),
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
    ),
    'radios' => array(
      'component' => array(
        'form_key' => 'radios',
        'name' => 'Radios',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => 'one',
      'database values' => array(
        'one',
      ),
      'database default values' => array(
        'two',
      ),
    ),
    'radios_zero' => array(
      'component' => array(
        'form_key' => 'radios_zero',
        'name' => 'Radios zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'items' => "0|zero\n1|one\n2|two",
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
    ),
    'select' => array(
      'component' => array(
        'form_key' => 'select',
        'name' => 'Select',
        'type' => 'select',
        'value' => 'one',
        'extra' => array(
          'description' => 'Description here',
          'items' => "one|one\ntwo|two\nthree|three\nfour|four\nfive|five\nsix|six",
          'aslist' => 1,
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'two',
      'database values' => array(
        'two',
      ),
      'database default values' => array(
        'one',
      ),
    ),
    'select_zero' => array(
      'component' => array(
        'form_key' => 'select_zero',
        'name' => 'Select zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "0|zero\n1|one\n2|two",
          'aslist' => 1,
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
    ),
    'select_no_default' => array(
      'component' => array(
        'form_key' => 'select_no_default',
        'name' => 'Select no default',
        'type' => 'select',
        'value' => '',
        'extra' => array(
          'description' => 'Description here',
          'items' => "one|one\ntwo|two\nthree|three\nfour|four\nfive|five\nsix|six",
          'aslist' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'two',
      'database values' => array(
        'two',
      ),
      'database default values' => array(
        '',
      ),
    ),
    'select_no_default_zero' => array(
      'component' => array(
        'form_key' => 'select_no_default_zero',
        'name' => 'Select no default zero',
        'type' => 'select',
        'value' => '',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "0|zero\n1|one\n2|two",
          'aslist' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '',
      ),
    ),
    'select_optgroup' => array(
      'component' => array(
        'form_key' => 'select_optgroup',
        'name' => 'Select Optgroup',
        'type' => 'select',
        'value' => 'option 1-2',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "<Group 1>\noption 1-1|option 1-1\noption 1-2|option 1-2\noption 1-3|option 1-3\n<Group 2>\noption 2-1|option 2-1\noption 2-2|option 2-2\noption 2-3|option 2-3",
          'aslist' => 1,
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'option 2-2',
      'database values' => array(
        'option 2-2',
      ),
      'database default values' => array(
        'option 1-2',
      ),
    ),
    'select_email' => array(
      'component' => array(
        'form_key' => 'select_email',
        'name' => 'Select e-mails',
        'type' => 'select',
        'value' => 'nate@localhost.localhost',
        'extra' => array(
          'items' => "nate@localhost.localhost|one\nadmin@localhost.localhost|two",
        ),
        'mandatory' => '0',
        'pid' => '2',
        'weight' => '-17',
      ),
      'sample values' => 'admin@localhost.localhost',
      'database values' => array(
        'admin@localhost.localhost',
      ),
      'database default values' => array(
        'nate@localhost.localhost',
      ),
    ),
    'select_multiple' => array(
      'component' => array(
        'form_key' => 'select_multiple',
        'name' => 'Select Multiple',
        'type' => 'select',
        'value' => 'one,two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
          'multiple' => 1,
          'aslist' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-10',
      ),
      // TODO: I'd like to test a value, but SimpleTest can't set multiple values.
      'sample values' => NULL,
      'database values' => array(
        'one',
        'two',
      ),
      'database default values' => array(
        'one',
        'two',
      ),
    ),
    // Test date components.
    'date_textfield' => array(
      'component' => array(
        'form_key' => 'date_textfield',
        'name' => 'Date Textfield',
        'type' => 'date',
        'value' => 'Nov 19 1978',
        'extra' => array(
          'timezone' => 'site',
          'start_date' => '-100 years',
          'end_date' => '+2 years',
          'year_textfield' => 1,
        ),
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-7',
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '1982-09-30',
      ),
      'database default values' => array(
        '1978-11-19',
      ),
    ),
    // Test email components.
    'email' => array(
      'component' => array(
        'form_key' => 'email',
        'name' => 'E-mail',
        'type' => 'email',
        'value' => '%useremail',
        'mandatory' => '0',
        'extra' => array(
          // SimpleTest does not support type="email" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'pid' => '0',
        'weight' => '-5',
      ),
      'sample values' => 'admin@localhost.localhost',
      'database values' => array(
        'admin@localhost.localhost',
      ),
      'database default values' => array(
        $this->webform_users['admin']->mail,
      ),
    ),
    // Test hidden components.
    'hidden' => array(
      'component' => array(
        'form_key' => 'hidden',
        'name' => 'Hidden',
        'type' => 'hidden',
        'value' => 'default hidden value',
        'mandatory' => '1',
        'pid' => '0',
        'weight' => '-4',
      ),
      'sample values' => NULL,
      'database values' => array(
        'default hidden value',
      ),
      'database default values' => array(
        'default hidden value',
      ),
    ),
    // Test textarea components.
    'textarea' => array(
      'component' => array(
        'form_key' => 'textarea',
        'name' => 'Textarea',
        'type' => 'textarea',
        'value' => 'sample textarea default value',
        'extra' => array(),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '15',
      ),
      'sample values' => 'sample textarea value',
      'database values' => array(
        'sample textarea value',
      ),
      'database default values' => array(
        'sample textarea default value',
      ),
    ),
    // Test textfield components.
    'textfield_disabled' => array(
      'component' => array(
        'form_key' => 'textfield_disabled',
        'name' => 'Textfield Disabled',
        'type' => 'textfield',
        'value' => '%get[foo]',
        'extra' => array(
          'disabled' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => NULL,
      'database values' => array(
        'bar',
      ),
      'database default values' => array(
        'bar',
      ),
    ),
    'textfield_profile' => array(
      'component' => array(
        'form_key' => 'textfield_profile',
        'name' => 'Textfield Profile',
        'type' => 'textfield',
        'value' => '%profile[profile_gender]',
        'extra' => array(
          'width' => '20',
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '-6',
      ),
      'sample values' => 'Female',
      'database values' => array(
        'Female',
      ),
      'database default values' => array(
        $this->webform_users['admin']->profile_gender,
      ),
    ),
    // Test time components.
    'time' => array(
      'component' => array(
        'form_key' => 'time',
        'name' => 'Time',
        'type' => 'time',
        'value' => '10:30pm',
        'extra' => array(
          'timezone' => 'site',
          'hourformat' => '12-hour',
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '16',
      ),
      'sample values' => array(
        'hour' => '5',
        'minute' => '0',
        'ampm' => 'am',
      ),
      'database values' => array(
        '05:00:00',
      ),
      'database default values' => array(
        '22:30:00',
      ),
    ),
    'time_24h' => array(
      'component' => array(
        'form_key' => 'time_24h',
        'name' => 'Time 24H',
        'type' => 'time',
        'value' => '10:30pm',
        'extra' => array(
          'timezone' => 'site',
          'hourformat' => '24-hour',
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '17',
      ),
      'sample values' => array(
        'hour' => '5',
        'minute' => '0',
      ),
      'database values' => array(
        '05:00:00',
      ),
      'database default values' => array(
        '22:30:00',
      ),
    ),
    // Test number components.
    'integer' => array(
      'component' => array(
        'form_key' => 'integer',
        'name' => 'Integer',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'integer' => 1,
          'max' => '100',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '18',
      ),
      'sample values' => '2',
      'database values' => array(
        '2',
      ),
      'database default values' => array(
        '1',
      ),
      'error values' => array(
        '1.5' => t('%name field value of @value must be an integer.', array(
          '%name' => 'Integer',
          '@value' => '1.5',
        )),
        '101' => t('%name field value must be less than @max.', array(
          '%name' => 'Integer',
          '@max' => '100',
        )),
      ),
    ),
    'integer_range' => array(
      'component' => array(
        'form_key' => 'integer_range',
        'name' => 'Integer Range',
        'type' => 'number',
        'value' => '50',
        'extra' => array(
          'type' => 'select',
          'min' => '10',
          'max' => '50',
          'step' => 5,
          'integer' => 1,
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '19',
      ),
      'sample values' => '10',
      'database values' => array(
        '10',
      ),
      'database default values' => array(
        '50',
      ),
    ),
    'decimal_positive' => array(
      'component' => array(
        'form_key' => 'decimal_positive',
        'name' => 'Decimal positive',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '0',
          'decimals' => '2',
          'point' => '.',
          'separator' => ',',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '20',
      ),
      'sample values' => '2.00',
      'database values' => array(
        '2.00',
      ),
      'database default values' => array(
        '1',
      ),
      'error values' => array(
        '-1' => t('%name field value must be greater than @min.', array(
          '%name' => 'Decimal positive',
          '@min' => '0',
        )),
      ),
    ),
    'decimal_range' => array(
      'component' => array(
        'form_key' => 'decimal_range',
        'name' => 'Decimal range',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '1',
          'max' => '12',
          'step' => '1.5',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '21',
      ),
      'sample values' => '11.5',
      'database values' => array(
        '11.5',
      ),
      'database default values' => array(
        '1',
      ),
      'error values' => array(
        '2' => t('%name field value must be @start plus a multiple of @step.', array(
          '%name' => 'Decimal range',
          '@start' => '1',
          '@step' => '1.5',
        )),
        '13' => t('%name field value of @value should be in the range @min to @max.', array(
          '%name' => 'Decimal range',
          '@value' => '13',
          '@min' => '1',
          '@max' => '12',
        )),
      ),
    ),
    'decimal_range_select' => array(
      'component' => array(
        'form_key' => 'decimal_range_select',
        'name' => 'Decimal range select',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'select',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '1',
          'max' => '12',
          'step' => '1.5',
        ),
        'mandatory' => '0',
        'pid' => '0',
        'weight' => '21',
      ),
      'sample values' => '11.5',
      'database values' => array(
        '11.5',
      ),
      'database default values' => array(
        '1',
      ),
    ),
  );
  return $this->_webform_components;
}