You are here

function WebformTestCase::testWebformComponents in Webform 6.2

Same name and namespace in other branches
  1. 6.3 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.

3 calls to WebformTestCase::testWebformComponents()
WebformSubmissionTestCase::webformSubmissionExecute in tests/submission.test
Execute the submission test.
WebformTestCase::testWebformForm in tests/webform.test
WebformTestCase::testWebformPost in tests/webform.test

File

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

Class

WebformTestCase
@file Webform module tests.

Code

function testWebformComponents() {
  if (isset($this->_webform_components)) {
    return $this->_webform_components;
  }

  // Time components use a lot of conversion factors, generate a list of times
  // equal to 10:30pm (the default value used as a sample).
  $timestamp = strtotime('10:30pm');
  $site_hour12 = gmdate('g', $timestamp + (int) variable_get('date_default_timezone', 0));
  $site_hour24 = gmdate('G', $timestamp + (int) variable_get('date_default_timezone', 0));
  $site_minute = gmdate('i', $timestamp + (int) variable_get('date_default_timezone', 0));
  $site_ampm = gmdate('a', $timestamp + (int) variable_get('date_default_timezone', 0));
  $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',
          'year_start' => '1950',
          'year_end' => '2020',
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '9',
        '30',
        '1982',
      ),
      'database default values' => array(
        '11',
        '19',
        '1978',
      ),
    ),
    // Test grid components.
    'grid' => array(
      'component' => array(
        'form_key' => 'grid',
        'name' => 'Grid',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "Ålphå\nıé†å\nÎ鬆å",
          // Left side
          'options' => "øne\ntwö\nǼBƇ\n€Euro",
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '2',
        'weight' => '-19',
        'page_num' => 1,
      ),
      'sample values' => array(
        'Ålphå' => 'øne',
        'ıé†å' => 'twö',
        'Î鬆å' => 'ǼBƇ',
      ),
      'database values' => array(
        'øne',
        'twö',
        'ǼBƇ',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    'grid_keyed' => array(
      'component' => array(
        'form_key' => 'grid_keyed',
        'name' => 'Grid Keyed',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "What's your option?\nAgåin?\nOne more time!",
          // Left side.
          'options' => "one|Option one\ntwo|Option 2\nthree| Three is me",
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => array(
        'Whats your option?' => 'one',
        // Quotes removed from values.
        'Agåin?' => 'two',
        'One more time!' => 'three',
      ),
      'database values' => array(
        'one',
        'two',
        'three',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    'grid_mixed' => array(
      'component' => array(
        'form_key' => 'grid_mixed',
        'name' => 'Grid Mixed',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "Ålphå\nıé†å\nÎ鬆å",
          // Left side
          'options' => "øne\ntwö\nǼBƇ\n€Euro",
          // Top
          'optrand' => 1,
          'qrand' => 1,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '2',
        'weight' => '-19',
        'page_num' => 1,
      ),
      'sample values' => array(
        'Ålphå' => 'øne',
        'ıé†å' => 'twö',
        'Î鬆å' => 'ǼBƇ',
      ),
      'database values' => array(
        'øne',
        'twö',
        'ǼBƇ',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    'grid_keyed_mixed' => array(
      'component' => array(
        'form_key' => 'grid_keyed_mixed',
        'name' => 'Grid Keyed',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          'questions' => "What's your option?\nAgåin?\nOne more time!",
          // Left side.
          'options' => "one|Option one\ntwo|Option 2\nthree| Three is me",
          // Top
          'optrand' => 1,
          'qrand' => 1,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => array(
        'Whats your option?' => 'one',
        // Quotes removed from values.
        'Agåin?' => 'two',
        'One more time!' => 'three',
      ),
      'database values' => array(
        'one',
        'two',
        'three',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    // Test select components.
    'checkboxes' => array(
      'component' => array(
        'form_key' => 'checkboxes',
        'name' => 'Checkboxes',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one\ntwo\nthree",
          'multiple' => 'Y',
          'email' => 0,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => array(
        'one' => TRUE,
        'two' => FALSE,
        'three' => TRUE,
      ),
      'database values' => array(
        'one',
        'three',
      ),
      'database default values' => array(
        'two',
      ),
    ),
    'radios' => array(
      'component' => array(
        'form_key' => 'radios',
        'name' => 'Radios',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one\ntwo\nthree",
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-9',
        'page_num' => 1,
      ),
      'sample values' => 'one',
      'database values' => array(
        'one',
      ),
      'database default values' => array(
        'two',
      ),
    ),
    'radios_zero' => array(
      'component' => array(
        'form_key' => 'radios_zero',
        'name' => 'Radios',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'items' => "0|zero\n1|one\n2|two",
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-9',
        'page_num' => 1,
      ),
      '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' => '<p>Description here</p>',
          'items' => "one\ntwo\nthree\nfour\nfive\nsix",
          'aslist' => 'Y',
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => 'two',
      'database values' => array(
        'two',
      ),
      'database default values' => array(
        'one',
      ),
    ),
    'select_zero' => array(
      'component' => array(
        'form_key' => 'select_zero',
        'name' => 'Select',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'description' => '<p>Tests saving zero as a value.</p>',
          'items' => "0|zero\n1|one\n2|two",
          'aslist' => 'Y',
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
    ),
    'select_optgroup' => array(
      'component' => array(
        'form_key' => 'select_optgroup',
        'name' => 'Select Optgroup',
        'type' => 'select',
        'value' => 'option 1-2',
        'extra' => array(
          'description' => '<p>Tests saving zero as a value.</p>',
          'items' => "<Group 1>\noption 1-1\noption 1-2\noption 1-3\n<Group 2>\noption 2-1\noption 2-2\noption 2-3",
          'aslist' => 'Y',
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      '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',
        'extra' => array(
          'items' => "nate@localhost|one\nadmin@localhost|two",
          'email' => 3,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '2',
        'weight' => '-17',
        'page_num' => 1,
      ),
      'sample values' => 'admin@localhost',
      'database values' => array(
        'admin@localhost',
      ),
      'database default values' => array(
        'nate@localhost',
      ),
    ),
    'select_multiple' => array(
      'component' => array(
        'form_key' => 'select_multiple',
        'name' => 'Select Multiple',
        'type' => 'select',
        'value' => 'one,two',
        'extra' => array(
          'items' => "one\ntwo\nthree",
          'multiple' => 'Y',
          'aslist' => 'Y',
          'email' => 0,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-10',
        'page_num' => 1,
      ),
      // 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',
          'year_start' => '1900',
          'year_end' => '2050',
          'year_textfield' => 1,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-7',
        'page_num' => 1,
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '9',
        '30',
        '1982',
      ),
      'database default values' => array(
        '11',
        '19',
        '1978',
      ),
    ),
    // Test email components.
    'email' => array(
      'component' => array(
        'form_key' => 'email',
        'name' => 'E-mail',
        'type' => 'email',
        'value' => '%useremail',
        'extra' => array(
          'email' => 19,
        ),
        'mandatory' => '0',
        'email' => '1',
        'pid' => '0',
        'weight' => '-5',
        'page_num' => 1,
      ),
      'sample values' => 'admin@localhost',
      'database values' => array(
        'admin@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',
        'extra' => array(
          'email' => 0,
        ),
        'mandatory' => '1',
        'email' => '1',
        'pid' => '0',
        'weight' => '-4',
        'page_num' => 1,
      ),
      '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',
        'email' => '1',
        'pid' => '0',
        'weight' => '15',
        'page_num' => 1,
      ),
      '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',
        'email' => '1',
        'pid' => '0',
        'weight' => '-15',
        'page_num' => 1,
      ),
      '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',
        'email' => '1',
        'pid' => '0',
        'weight' => '-6',
        'page_num' => 1,
      ),
      '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',
        'email' => '1',
        'pid' => '0',
        'weight' => '16',
        'page_num' => 1,
      ),
      'sample values' => array(
        'hour' => '5',
        'minute' => '00',
        'ampm' => 'am',
      ),
      'database values' => array(
        '5',
        '00',
        'am',
      ),
      'database default values' => array(
        $site_hour12,
        $site_minute,
        $site_ampm,
      ),
    ),
    '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',
        'email' => '1',
        'pid' => '0',
        'weight' => '17',
        'page_num' => 1,
      ),
      'sample values' => array(
        'hour' => '5',
        'minute' => '00',
      ),
      'database values' => array(
        '5',
        '00',
      ),
      'database default values' => array(
        $site_hour24,
        $site_minute,
      ),
    ),
  );
  return $this->_webform_components;
}