t('Webform'), 'description' => t('Parent test suite used to setup Webform tests.'), 'group' => t('Webform'), ); } /** * Implementation of setUp(). */ function setUp() { // Enable Webform. parent::setUp('webform', 'profile'); // Create a profile field to test %profile tokens. db_query("INSERT INTO {profile_fields} (title, name, explanation, category, type, weight, required, register, visibility, autocomplete, options, page) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, '%s', '%s')", 'Gender', 'profile_gender', '', 'Profile', 'textfield', 0, 0, 0, 2, 0, '', ''); // 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 webforms', 'edit own webforms', 'access webform results', ); // Create a webform admin that will do all node creation. $permissions['admin'] = array( 'access content', 'administer nodes', 'create webforms', 'edit webforms', 'edit webform submissions', 'access webform results', 'clear webform results', ); foreach ($permissions as $user_key => $role_permissions) { $this->webform_users[$user_key] = $this->drupalCreateUser($role_permissions); $profile = array('profile_gender' => 'Female'); $this->webform_users[$user_key]->profile_gender = 'Female'; profile_save_profile($profile, $this->webform_users[$user_key], 'Profile'); } } /** * Implemenation of tearDown(). */ function tearDown() { // Delete the webform admin and any created nodes. foreach ($this->webform_users as $account) { $uid = $account->uid; $result = db_query('SELECT nid FROM {node} WHERE uid = %d', $uid); while ($node = db_fetch_array($result)) { node_delete($node['nid']); } user_delete(array(), $uid); } parent::tearDown(); } /** * */ 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. */ 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", // Top ), '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", // Top ), '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' => '
Description here
', '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' => 'Tests saving zero as a value.
', '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' => 'Tests saving zero as a value.
', 'items' => "