Index: modules/profile/profile.test =================================================================== RCS file: /cvs/drupal/drupal/modules/profile/profile.test,v retrieving revision 1.3 diff -u -p -d -r1.3 profile.test --- modules/profile/profile.test 2 May 2008 15:24:47 -0000 1.3 +++ modules/profile/profile.test 3 May 2008 15:58:48 -0000 @@ -1,18 +1,12 @@ 'Test single field', - 'description' => t('Testing profile module with add/edit/delete new fields into profile page') , - 'group' => t('Profile')); - } function setUp() { parent::setUp(); @@ -26,92 +20,6 @@ class ProfileTestCase extends DrupalWebT } /** - * Test each of the field types. List selection and date fields are tested - * separately because they need some special handling. - */ - function testProfileFields() { - // Set test values for every field type. - $field_types = array( - 'textfield' => $this->randomName(), - 'textarea' => $this->randomName(), - 'list' => $this->randomName(), - 'checkbox' => 1, - 'url' => 'http://www.' . $this->randomName(10). '.org', - ); - - // For each field type, create a field, give it a value and delete the field. - foreach ($field_types as $type => $value) { - $field = $this->createProfileField($type); - $this->setProfileField($field, $value); - $this->deleteProfileField($field); - } - } - - /** - * Create a list selection field, give it a value, and delete the field. - */ - function testProfileSelectionField() { - $edit = array( - 'options' => implode("\n", range(1, 10)), - ); - $field = $this->createProfileField('selection', 'simpletest', $edit); - - $this->setProfileField($field, rand(1, 10)); - - $this->deleteProfileField($field); - } - - /** - * Create a date field, give it a value, and delete the field. - */ - function testProfileDateField() { - variable_set('date_format_short', 'm/d/Y - H:i'); - $field = $this->createProfileField('date'); - - // Set date to January 09, 1983 - $edit = array( - $field['form_name'] .'[month]' => 1, - $field['form_name'] .'[day]' => 9, - $field['form_name'] .'[year]' => 1983, - ); - - $this->drupalPost('user/' . $this->normal_user->uid . '/edit/' . $field['category'], $edit, t('Save')); - - // Check profile page. - $this->drupalGet('user/' . $this->normal_user->uid); - $this->assertText($field['title'], t('Found profile field with title %title', array('%title' => $field['title']))); - - $this->assertText('01/09/1983', t('Found date profile field.')); - - $this->deleteProfileField($field); - } - - function testProfileFieldWeights() { - $category = $this->randomName(); - $field1 = $this->createProfileField('textfield', $category, array('weight' => 1)); - $field2 = $this->createProfileField('textfield', $category, array('weight' => -1)); - - $this->setProfileField($field1, $this->randomName(4, 'first_')); - $this->setProfileField($field2, $this->randomName(4, 'second_')); - - $profile_edit = $this->drupalGet('user/' . $this->normal_user->uid . '/edit/' . $category); - $this->assertTrue(strpos($profile_edit, $field1['title']) > strpos($profile_edit, $field2['title']), t('Profile field weights are respected on the user edit form.')); - - $profile_page = $this->drupalGet('user/' . $this->normal_user->uid); - $this->assertTrue(strpos($profile_page, $field1['title']) > strpos($profile_page, $field2['title']), t('Profile field weights are respected on the user profile page.')); - } - - /** - * TODO: - * - Test field visibility - * - Test profile browsing - * - Test autocomplete - * - Test required fields - * - Test fields on registration form - * - Test updating fields - */ - - /** * Create a profile field. * * @param $type @@ -209,3 +117,141 @@ class ProfileTestCase extends DrupalWebT $this->assertNoText($field['title'], t('Checking deleted field %title', array('%title' => $field['title']))); } } + +class ProfileTestFields extends ProfileTestCase { + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => 'Test single fields', + 'description' => t('Testing profile module with add/edit/delete textfield, textarea, list, checkbox, and url fields into profile page') , + 'group' => t('Profile')); + } + + /** + * Test each of the field types. List selection and date fields are tested + * separately because they need some special handling. + */ + function testProfileFields() { + // Set test values for every field type. + $field_types = array( + 'textfield' => $this->randomName(), + 'textarea' => $this->randomName(), + 'list' => $this->randomName(), + 'checkbox' => 1, + 'url' => 'http://www.' . $this->randomName(10). '.org', + ); + + // For each field type, create a field, give it a value and delete the field. + foreach ($field_types as $type => $value) { + $field = $this->createProfileField($type); + $this->setProfileField($field, $value); + $this->deleteProfileField($field); + } + } +} + +class ProfileTestSelect extends ProfileTestCase { + + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => 'Test select field', + 'description' => t('Testing profile module with add/edit/delete a select field') , + 'group' => t('Profile')); + } + + /** + * Create a list selection field, give it a value, and delete the field. + */ + function testProfileSelectionField() { + $edit = array( + 'options' => implode("\n", range(1, 10)), + ); + $field = $this->createProfileField('selection', 'simpletest', $edit); + + $this->setProfileField($field, rand(1, 10)); + + $this->deleteProfileField($field); + } +} + +class ProfileTestDate extends ProfileTestCase { + + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => 'Test date field', + 'description' => t('Testing profile module with add/edit/delete a date field') , + 'group' => t('Profile')); + } + + /** + * Create a date field, give it a value, and delete the field. + */ + function testProfileDateField() { + variable_set('date_format_short', 'm/d/Y - H:i'); + $field = $this->createProfileField('date'); + + // Set date to January 09, 1983 + $edit = array( + $field['form_name'] .'[month]' => 1, + $field['form_name'] .'[day]' => 9, + $field['form_name'] .'[year]' => 1983, + ); + + $this->drupalPost('user/' . $this->normal_user->uid . '/edit/' . $field['category'], $edit, t('Save')); + + // Check profile page. + $this->drupalGet('user/' . $this->normal_user->uid); + $this->assertText($field['title'], t('Found profile field with title %title', array('%title' => $field['title']))); + + $this->assertText('01/09/1983', t('Found date profile field.')); + + $this->deleteProfileField($field); + } +} + +class ProfileTestWeights extends ProfileTestCase { + + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => 'Test field weights', + 'description' => t('Testing profile modules weigting of fields') , + 'group' => t('Profile')); + } + + function testProfileFieldWeights() { + $category = $this->randomName(); + $field1 = $this->createProfileField('textfield', $category, array('weight' => 1)); + $field2 = $this->createProfileField('textfield', $category, array('weight' => -1)); + + $this->setProfileField($field1, $this->randomName(4, 'first_')); + $this->setProfileField($field2, $this->randomName(4, 'second_')); + + $profile_edit = $this->drupalGet('user/' . $this->normal_user->uid . '/edit/' . $category); + $this->assertTrue(strpos($profile_edit, $field1['title']) > strpos($profile_edit, $field2['title']), t('Profile field weights are respected on the user edit form.')); + + $profile_page = $this->drupalGet('user/' . $this->normal_user->uid); + $this->assertTrue(strpos($profile_page, $field1['title']) > strpos($profile_page, $field2['title']), t('Profile field weights are respected on the user profile page.')); + } +} + + /** + * TODO: + * - Test field visibility + * - Test profile browsing + * - Test autocomplete + * - Test required fields + * - Test fields on registration form + * - Test updating fields + */ +