- Patch #276588 by boombatower, jpetso: tests for contact module categories.

merge-requests/26/head
Dries Buytaert 2008-09-17 06:54:11 +00:00
parent a8143e47b7
commit 21aab5e667
1 changed files with 29 additions and 3 deletions

View File

@ -34,7 +34,8 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
// Set settings. // Set settings.
$edit = array(); $edit = array();
$edit['contact_form_information'] = $this->randomName(100); $contact_form_information = $this->randomName(100);
$edit['contact_form_information'] = $contact_form_information;
$edit['contact_hourly_threshold'] = 3; $edit['contact_hourly_threshold'] = 3;
$edit['contact_default_status'] = TRUE; $edit['contact_default_status'] = TRUE;
$this->drupalPost('admin/build/contact/settings', $edit, t('Save configuration')); $this->drupalPost('admin/build/contact/settings', $edit, t('Save configuration'));
@ -43,6 +44,13 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
// Delete old categories to ensure that new categories are used. // Delete old categories to ensure that new categories are used.
$this->deleteCategories(); $this->deleteCategories();
// Ensure that the contact form won't be shown without categories.
$this->setPermission('anonymous user', array('access site-wide contact form' => TRUE));
$this->drupalLogout();
$this->drupalGet('contact');
$this->assertText(t('The contact form has not been configured.'), t('Contact form will not work without categories configured.'));
$this->drupalLogin($admin_user);
// Add categories. // Add categories.
// Test invalid recipients. // Test invalid recipients.
$invalid_recipients = array('invalid', 'invalid@', 'invalid@site', 'invalid@site.', '@site.', '@site.com'); $invalid_recipients = array('invalid', 'invalid@', 'invalid@site', 'invalid@site.', '@site.', '@site.com');
@ -56,12 +64,12 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
$this->assertText(t('Category field is required.'), t('Caught empty category field')); $this->assertText(t('Category field is required.'), t('Caught empty category field'));
$this->assertText(t('Recipients field is required.'), t('Caught empty recipients field.')); $this->assertText(t('Recipients field is required.'), t('Caught empty recipients field.'));
// Create valid categories. // Create first valid category.
$recipients = array('simpletest@example.com', 'simpletest2@example.com', 'simpletest3@example.com'); $recipients = array('simpletest@example.com', 'simpletest2@example.com', 'simpletest3@example.com');
$this->addCategory($category = $this->randomName(16), implode(',', array($recipients[0])), '', TRUE); $this->addCategory($category = $this->randomName(16), implode(',', array($recipients[0])), '', TRUE);
$this->assertRaw(t('Category %category has been added.', array('%category' => $category)), t('Category successfully added.')); $this->assertRaw(t('Category %category has been added.', array('%category' => $category)), t('Category successfully added.'));
// Test update contact form category // Test update contact form category.
$categories = $this->getCategories(); $categories = $this->getCategories();
$category_id = $this->updateCategory($categories, $category = $this->randomName(16), $recipients_str = implode(',', array($recipients[0], $recipients[1])), $reply = $this->randomName(30), FALSE); $category_id = $this->updateCategory($categories, $category = $this->randomName(16), $recipients_str = implode(',', array($recipients[0], $recipients[1])), $reply = $this->randomName(30), FALSE);
$category_array = db_fetch_array(db_query('SELECT category, recipients, reply, selected FROM {contact} WHERE cid = %d', array($category_id))); $category_array = db_fetch_array(db_query('SELECT category, recipients, reply, selected FROM {contact} WHERE cid = %d', array($category_id)));
@ -71,6 +79,15 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
$this->assertFalse($category_array['selected']); $this->assertFalse($category_array['selected']);
$this->assertRaw(t('Category %category has been updated.', array('%category' => $category)), t('Category successfully updated.')); $this->assertRaw(t('Category %category has been updated.', array('%category' => $category)), t('Category successfully updated.'));
// Ensure that the contact form is shown without a category selection input.
$this->setPermission('anonymous user', array('access site-wide contact form' => TRUE));
$this->drupalLogout();
$this->drupalGet('contact');
$this->assertText($contact_form_information, t('Contact form is shown when there is one category.'));
$this->assertNoText(t('Category'), t('When there is only one category, the category selection element is hidden.'));
$this->drupalLogin($admin_user);
// Add more categories.
$this->addCategory($category = $this->randomName(16), implode(',', array($recipients[0], $recipients[1])), '', FALSE); $this->addCategory($category = $this->randomName(16), implode(',', array($recipients[0], $recipients[1])), '', FALSE);
$this->assertRaw(t('Category %category has been added.', array('%category' => $category)), t('Category successfully added.')); $this->assertRaw(t('Category %category has been added.', array('%category' => $category)), t('Category successfully added.'));
@ -114,6 +131,15 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
$this->submitContact($this->randomName(16), $recipients[0], $this->randomName(16), $categories[0], ''); $this->submitContact($this->randomName(16), $recipients[0], $this->randomName(16), $categories[0], '');
$this->assertText(t('Message field is required.'), t('Message required.')); $this->assertText(t('Message field is required.'), t('Message required.'));
// Test contact form with no default category selected.
db_query('UPDATE {contact} SET selected = 0');
$this->drupalGet('contact');
$this->assertRaw(t('- Please choose -'), t('Without selected categories the visitor is asked to chose a category.'));
// Submit contact form with invalid category id (cid 0).
$this->submitContact($this->randomName(16), $recipients[0], $this->randomName(16), 0, '');
$this->assertText(t('You must select a valid category.'), t('Valid category required.'));
// Submit contact form with correct values and check flood interval. // Submit contact form with correct values and check flood interval.
for ($i = 0; $i < $edit['contact_hourly_threshold']; $i++) { for ($i = 0; $i < $edit['contact_hourly_threshold']; $i++) {
$this->submitContact($this->randomName(16), $recipients[0], $this->randomName(16), $categories[0], $this->randomName(64)); $this->submitContact($this->randomName(16), $recipients[0], $this->randomName(16), $categories[0], $this->randomName(64));