123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068 |
- <?php
- /**
- * Webform module tests.
- */
- class WebformTestCase extends DrupalWebTestCase {
- private $_webform_node;
- private $_webform_components;
- public $webform_users;
- /**
- * {@inheritdoc}
- */
- public function setUp($added_modules = array()) {
- // Enable Webform and Token modules.
- $modules = array('webform', 'token');
- parent::setUp(array_merge($modules, $added_modules));
- // Create a profile field to test [user:?] tokens.
- $field = array(
- 'field_name' => 'gender',
- 'type' => 'text',
- 'cardinality' => 1,
- );
- $instance = array(
- 'field_name' => 'gender',
- 'entity_type' => 'user',
- 'bundle' => 'user',
- 'label' => 'Gender',
- 'widget' => array(
- 'type' => 'text_textfield',
- 'label' => 'Gender',
- ),
- );
- field_create_field($field);
- field_create_instance($instance);
- // Create a normal user that can view their own submissions.
- $permissions['userAccess'] = array(
- 'access content',
- 'access own webform submissions',
- );
- // Create a normal user than can edit their own submissions.
- $permissions['userEdit'] = array(
- 'access content',
- 'edit own webform submissions',
- );
- // Create a webform editor to test creating and editing own content.
- $permissions['editor'] = array(
- 'access content',
- 'create webform content',
- 'edit own webform content',
- 'access all webform results',
- );
- // Create a webform admin that will do all node creation.
- $permissions['admin'] = array(
- 'access content',
- 'administer nodes',
- 'create webform content',
- 'edit any webform content',
- 'access all webform results',
- 'edit all webform submissions',
- 'delete all webform submissions',
- );
- foreach ($permissions as $user_key => $role_permissions) {
- $this->webform_users[$user_key] = $this->drupalCreateUser($role_permissions);
- $this->webform_users[$user_key]->gender = array(LANGUAGE_NONE => array(array('value' => 'Female')));
- user_save($this->webform_users[$user_key]);
- }
- }
- /**
- * {@inheritdoc}
- */
- public function tearDown() {
- // Delete the webform admin and any created nodes.
- foreach ($this->webform_users as $account) {
- $uid = $account->uid;
- $result = db_select('node')
- ->fields('node')
- ->condition('uid', $uid)
- ->execute();
- foreach ($result as $node) {
- node_delete($node->nid);
- }
- user_cancel(array(), $uid, 'user_cancel_delete');
- }
- parent::tearDown();
- }
- /**
- * Reset the form.
- */
- public function webformReset() {
- $this->_webform_node = NULL;
- $this->_webform_components = NULL;
- }
- /**
- * 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 array
- * An array of each component settings.
- */
- public function webformComponents() {
- 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',
- ),
- 'required' => '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'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '1982/9/30',
- 'before' => '1982/10/1',
- 'before_equal' => '1982/9/30',
- 'after' => '1982/9/29',
- 'after_equal' => '1982/9/29',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '1981/9/30',
- 'before' => '1982/9/30',
- 'before_equal' => '1982/9/29',
- 'after' => '1982/9/30',
- 'after_equal' => '1982/10/1',
- ),
- ),
- // Test grid components.
- 'grid' => array(
- 'component' => array(
- 'form_key' => 'grid',
- 'name' => 'Grid',
- 'type' => 'grid',
- 'value' => '',
- 'extra' => array(
- // Left side.
- 'questions' => "0|Ålphå\n1|ıé†å\n2|Î鬆å",
- // Top.
- 'options' => "0|øne\n1|twö\n2|ǼBƇ\n3|€Euro",
- ),
- 'required' => '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(
- // Left side.
- 'questions' => "one|What's your option?\ntwo|Agåin?|Again, right text\nthree|One more time!",
- // Top.
- 'options' => "one|Option one\ntwo|Option 2\nthree| Three is me",
- 'title_display' => 'internal',
- ),
- 'required' => '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,
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '-15',
- ),
- 'sample values' => array('one' => TRUE, 'two' => FALSE, 'three' => TRUE),
- 'database values' => array('one', 'three'),
- 'database default values' => array('two'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- // ANDed together match.
- 'equal' => array('one', 'three'),
- 'not_equal' => array('two'),
- ),
- 'mismatch conditional values' => array(
- 'equal' => array('one', 'two'),
- 'not_equal' => array('two', 'three'),
- ),
- ),
- '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,
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-9',
- ),
- 'sample values' => array('0' => TRUE),
- 'database values' => array('0'),
- 'database default values' => array('0'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '1',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '1',
- 'not_equal' => '0',
- ),
- ),
- 'radios' => array(
- 'component' => array(
- 'form_key' => 'radios',
- 'name' => 'Radios',
- 'type' => 'select',
- 'value' => 'two',
- 'extra' => array(
- 'items' => "one|one\ntwo|two\nthree|three",
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-9',
- ),
- 'sample values' => 'one',
- 'database values' => array('one'),
- 'database default values' => array('two'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'one',
- 'not_equal' => 'two',
- ),
- 'mismatch conditional values' => array(
- 'equal' => 'two',
- 'not_equal' => 'one',
- ),
- ),
- '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",
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-9',
- ),
- 'sample values' => '0',
- 'database values' => array('0'),
- 'database default values' => array('0'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '1',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '1',
- 'not_equal' => '0',
- ),
- ),
- 'radios_relative' => array(
- 'component' => array(
- 'form_key' => 'radios_relative',
- 'name' => 'Radios relative',
- 'type' => 'select',
- 'value' => 'one',
- 'extra' => array(
- 'items' => "zero|Zero\none|One\ntwo|Two\nthree|Three\n",
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-9',
- ),
- 'sample values' => 'one',
- 'database values' => array('one'),
- 'database default values' => array('one'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'one',
- 'not_equal' => 'zero',
- 'less_than' => 'two',
- 'less_than_equal' => 'one',
- 'greater_than' => 'zero',
- 'greater_than_equal' => 'zero',
- ),
- 'mismatch conditional values' => array(
- 'equal' => 'zero',
- 'not_equal' => 'one',
- 'less_than' => 'one',
- 'less_than_equal' => 'zero',
- 'greater_than' => 'two',
- 'greater_than_equal' => 'two',
- ),
- ),
- '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,
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-15',
- ),
- 'sample values' => 'two',
- 'database values' => array('two'),
- 'database default values' => array('one'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'two',
- 'not_equal' => 'one',
- ),
- 'mismatch conditional values' => array(
- 'equal' => 'one',
- 'not_equal' => 'two',
- ),
- ),
- '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,
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-15',
- ),
- 'sample values' => '0',
- 'database values' => array('0'),
- 'database default values' => array('0'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '1',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '1',
- 'not_equal' => '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,
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '-15',
- ),
- 'sample values' => 'two',
- 'database values' => array('two'),
- 'database default values' => array(''),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'two',
- 'not_equal' => '',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '',
- 'not_equal' => 'two',
- ),
- ),
- '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,
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '-15',
- ),
- 'sample values' => '0',
- 'database values' => array('0'),
- 'database default values' => array(''),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '',
- 'not_equal' => '0',
- ),
- ),
- '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,
- ),
- 'required' => '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",
- ),
- 'required' => '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,
- ),
- 'required' => '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'),
- ),
- 'select_relative' => array(
- 'component' => array(
- 'form_key' => 'select_relative',
- 'name' => 'Select relative',
- 'type' => 'select',
- 'value' => 'one',
- 'extra' => array(
- 'items' => "zero|Zero\none|One\ntwo|Two\nthree|Three\n",
- 'aslist' => 1,
- ),
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-9',
- ),
- 'sample values' => 'one',
- 'database values' => array('one'),
- 'database default values' => array('one'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'one',
- 'not_equal' => 'zero',
- 'less_than' => 'two',
- 'less_than_equal' => 'one',
- 'greater_than' => 'zero',
- 'greater_than_equal' => 'zero',
- ),
- 'mismatch conditional values' => array(
- 'equal' => 'zero',
- 'not_equal' => 'one',
- 'less_than' => 'one',
- 'less_than_equal' => 'zero',
- 'greater_than' => 'two',
- 'greater_than_equal' => '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,
- ),
- 'required' => '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'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '1982/9/30',
- 'before' => '1982/10/1',
- 'before_equal' => '1982/9/30',
- 'after' => '1982/9/29',
- 'after_equal' => '1982/9/29',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '1981/9/30',
- 'before' => '1982/9/30',
- 'before_equal' => '1982/9/29',
- 'after' => '1982/9/30',
- 'after_equal' => '1982/10/1',
- ),
- ),
- // Test email components.
- 'email' => array(
- 'component' => array(
- 'form_key' => 'email',
- 'name' => 'E-mail',
- 'type' => 'email',
- 'value' => '[current-user:mail]',
- 'required' => '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),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'admin@localhost.localhost',
- 'not_equal' => '',
- 'contains' => 'admin',
- 'does_not_contain' => 'foo',
- 'begins_with' => 'admin',
- 'ends_with' => 'localhost',
- 'not_empty' => TRUE,
- ),
- 'mismatch conditional values' => array(
- 'equal' => 'foo@localhost.localhost',
- 'not_equal' => 'admin@localhost.localhost',
- 'contains' => 'foo',
- 'does_not_contain' => 'admin',
- 'begins_with' => 'localhost',
- 'ends_with' => 'admin',
- 'empty' => TRUE,
- ),
- ),
- // Test hidden components.
- 'hidden' => array(
- 'component' => array(
- 'form_key' => 'hidden',
- 'name' => 'Hidden',
- 'type' => 'hidden',
- 'value' => 'default hidden value',
- 'required' => '1',
- 'pid' => '0',
- 'weight' => '-4',
- ),
- 'sample values' => NULL,
- 'database values' => array('default hidden value'),
- 'database default values' => array('default hidden value'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'default hidden value',
- 'not_equal' => '',
- 'contains' => 'hidden',
- 'does_not_contain' => 'foo',
- 'begins_with' => 'default',
- 'ends_with' => 'value',
- 'not_empty' => TRUE,
- ),
- 'mismatch conditional values' => array(
- 'equal' => '',
- 'not_equal' => 'default hidden value',
- 'contains' => 'foo',
- 'does_not_contain' => 'hidden',
- 'begins_with' => 'value',
- 'ends_with' => 'default',
- 'empty' => TRUE,
- ),
- ),
- // Test textarea components.
- 'textarea' => array(
- 'component' => array(
- 'form_key' => 'textarea',
- 'name' => 'Textarea',
- 'type' => 'textarea',
- 'value' => 'sample textarea default value',
- 'extra' => array(),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '15',
- ),
- 'sample values' => 'sample textarea value',
- 'database values' => array('sample textarea value'),
- 'database default values' => array('sample textarea default value'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => 'sample textarea value',
- 'not_equal' => '',
- 'contains' => 'sample',
- 'does_not_contain' => 'foo',
- 'begins_with' => 'sample',
- 'ends_with' => 'value',
- 'not_empty' => TRUE,
- ),
- 'mismatch conditional values' => array(
- 'equal' => '',
- 'not_equal' => 'sample textarea value',
- 'contains' => 'foo',
- 'does_not_contain' => 'sample',
- 'begins_with' => 'value',
- 'ends_with' => 'sample',
- 'empty' => TRUE,
- ),
- ),
- // Test textfield components.
- 'textfield' => array(
- 'component' => array(
- 'form_key' => 'textfield',
- 'name' => 'Textfield',
- 'type' => 'textfield',
- 'value' => '',
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '-14',
- ),
- 'sample values' => '',
- 'database values' => array(''),
- 'database default values' => array(''),
- ),
- 'textfield_disabled' => array(
- 'component' => array(
- 'form_key' => 'textfield_disabled',
- 'name' => 'Textfield Disabled',
- 'type' => 'textfield',
- 'value' => '[current-page:query:foo]',
- 'extra' => array(
- 'disabled' => 1,
- ),
- 'required' => '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' => '[current-user:gender]',
- 'extra' => array(
- 'width' => '20',
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '-6',
- ),
- 'sample values' => 'Female',
- 'database values' => array('Female'),
- 'database default values' => array($this->webform_users['admin']->gender[LANGUAGE_NONE][0]['value']),
- ),
- // Test time components.
- 'time' => array(
- 'component' => array(
- 'form_key' => 'time',
- 'name' => 'Time',
- 'type' => 'time',
- 'value' => '10:30pm',
- 'extra' => array(
- 'timezone' => 'site',
- 'hourformat' => '12-hour',
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '16',
- ),
- 'sample values' => array('hour' => '12', 'minute' => '0', 'ampm' => 'pm'),
- 'database values' => array('12:00:00'),
- 'database default values' => array('22:30:00'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '12:00pm',
- 'before' => '1:00pm',
- 'before_equal' => '12:00pm',
- 'after' => '11:00am',
- 'after_equal' => '11:00am',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '12:00am',
- 'before' => '12:00pm',
- 'before_equal' => '11:00am',
- 'after' => '12:00pm',
- ),
- ),
- 'time_24h' => array(
- 'component' => array(
- 'form_key' => 'time_24h',
- 'name' => 'Time 24H',
- 'type' => 'time',
- 'value' => '10:30pm',
- 'extra' => array(
- 'timezone' => 'site',
- 'hourformat' => '24-hour',
- ),
- 'required' => '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'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '5:00',
- 'before' => '24:00',
- 'before_equal' => '5:00',
- 'after' => '00:00',
- 'after_equal' => '00:00',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '5:01',
- 'before' => '5:00',
- 'before_equal' => '4:59',
- 'after' => '5:00',
- 'after_equal' => '5:01',
- ),
- ),
- // 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'),
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '18',
- ),
- 'sample values' => '2',
- 'database values' => array('2'),
- 'database default values' => array('1'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '2',
- 'not_equal' => '0',
- 'less_than' => '3',
- 'less_than_equal' => '2',
- 'greater_than' => '1',
- 'greater_than_equal' => '1',
- 'not_empty' => TRUE,
- ),
- 'mismatch conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '2',
- 'less_than' => '2',
- 'less_than_equal' => '1',
- 'greater_than' => '2',
- 'greater_than_equal' => '3',
- 'empty' => TRUE,
- ),
- '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,
- ),
- 'required' => '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'),
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '20',
- ),
- 'sample values' => '2.00',
- 'database values' => array('2.00'),
- 'database default values' => array('1'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '2',
- 'not_equal' => '0',
- 'less_than' => '3.000',
- 'greater_than' => '1.000',
- 'not_empty' => TRUE,
- ),
- 'mismatch conditional values' => array(
- 'equal' => '0',
- 'not_equal' => '2',
- 'less_than' => '2.0',
- 'greater_than' => '2.00',
- 'empty' => TRUE,
- ),
- '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'),
- ),
- 'required' => '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',
- ),
- 'required' => '0',
- 'pid' => '0',
- 'weight' => '21',
- ),
- 'sample values' => '10',
- 'database values' => array('10'),
- 'database default values' => array('1'),
- // Conditionals match against the 'sample values'.
- 'match conditional values' => array(
- 'equal' => '10',
- 'not_equal' => '2.5',
- 'less_than' => '11.5',
- 'greater_than' => '1',
- ),
- 'mismatch conditional values' => array(
- 'equal' => '2.5',
- 'not_equal' => '10',
- 'less_than' => '10',
- 'greater_than' => '11.5',
- ),
- ),
- );
- return $this->_webform_components;
- }
- /**
- * Create a sample Webform node.
- */
- public function webformForm() {
- if (isset($this->_webform_node)) {
- return $this->_webform_node;
- }
- $settings = array(
- 'type' => 'webform',
- 'language' => LANGUAGE_NONE,
- 'uid' => '1',
- 'status' => '1',
- 'promote' => '1',
- 'moderate' => '0',
- 'sticky' => '0',
- 'tnid' => '0',
- 'translate' => '0',
- 'title' => 'Test Webform',
- 'log' => '',
- 'format' => '1',
- 'webform' => array(
- 'confirmation' => 'Thanks!',
- ) + webform_node_defaults(),
- );
- $cid = 0;
- foreach ($this->webformComponents() as $key => $component_info) {
- $cid++;
- $settings['webform']['components'][$cid] = $component_info['component'];
- $settings['webform']['components'][$cid]['cid'] = $cid;
- $settings['webform']['components'][$cid]['pid'] = 0;
- }
- $this->_webform_node = $this->drupalCreateNode($settings);
- return $this->_webform_node;
- }
- /**
- * Generate a list of all values that would result in a valid submission.
- *
- * @param $input_values
- * An array of input values keyed by the component form key. If none
- * are specified, the defaults will be pulled from webformComponents().
- */
- public function webformPost($input_values = NULL) {
- $edit = array();
- if (empty($input_values)) {
- $input_values = array();
- foreach ($this->webformComponents() as $key => $component_info) {
- $input_values[$key] = $component_info['sample values'];
- }
- }
- foreach ($input_values as $key => $values) {
- if (is_array($values)) {
- foreach ($values as $subkey => $value) {
- $edit["submitted[$key][$subkey]"] = $value;
- }
- }
- elseif ($values != NULL) {
- $value = $values;
- // Multiple selects have a funky extra empty bracket in the name.
- $extra = $key == 'select_multiple' ? '[]' : '';
- $edit["submitted[$key]$extra"] = $value;
- }
- }
- return $edit;
- }
- /**
- * Utility function to print out the current page being tested.
- */
- public function webformPrintPage() {
- $this->verbose($this->drupalGetContent());
- }
- }
|