? sites/all/modules/cck
? sites/all/modules/devel
? sites/default/settings.php
? sites/default/files/.htaccess
? sites/default/files/simpletest
Index: modules/filter/filter.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.test,v
retrieving revision 1.23
diff -u -p -r1.23 filter.test
--- modules/filter/filter.test	12 Jun 2009 08:39:37 -0000	1.23
+++ modules/filter/filter.test	14 Jun 2009 19:20:59 -0000
@@ -192,8 +192,8 @@ class FilterTestCase extends DrupalWebTe
   function setUp() {
     parent::setUp();
 
-    $admin_user = $this->drupalCreateUser(array('administer filters', 'create page content'));
-    $this->drupalLogin($admin_user);
+    $this->user = $this->drupalCreateUser(array('administer filters', 'create page content'));
+    $this->drupalLogin($this->user);
   }
 
   /**
@@ -221,13 +221,26 @@ class FilterTestCase extends DrupalWebTe
 
   }
 
-  function createFormat($filter) {
+  /**
+   * Create filter.
+   *
+   * @param $filters array of filter ids.
+   *
+   **/
+  function createFormat($roles,$filters) {
     $edit = array(
-      'name' => $this->randomName(),
-      'roles[2]' => TRUE,
       'filters[filter/' . $filter . ']' => TRUE,
     );
+    foreach ($filters as $id => $filter) {
+      $edit['filters[' . $id . ']'] = TRUE;
+    }
+    foreach ($roles as $rid => $label) {
+      $edit['roles[' . $rid . ']'] = TRUE;
+    }
+
     $this->drupalPost('admin/settings/filter/add', $edit, t('Save configuration'));
+    $this->assertRaw(t('Added input format %format.', array('%format' => $edit['name'])), t('New filter created.'));
+
     return db_query("SELECT * FROM {filter_format} WHERE name = :name", array(':name' => $edit['name']))->fetchObject();
   }
 
@@ -237,4 +250,53 @@ class FilterTestCase extends DrupalWebTe
       $this->drupalPost('admin/settings/formats/delete/' . $format->format, array(), t('Delete'));
     }
   }
+
+  /**
+   * Test if there is a help tip provided by all filters.
+   *
+   **/
+  function testFilterHelp() {
+
+    // Enable all available filters.
+    $filters = filter_list_all();
+    ksort($filters);
+
+    // Create dummy format that is to make sure more than one format is
+    // available.
+    $format_dummy = $this->createFormat($this->user->roles, $filters);
+
+    // Create format with all available filters.
+    $format = $this->createFormat($this->user->roles, $filters);
+
+    $this->assertNotNull($format, t('Format found in database.'));
+
+    $this->drupalGet('node/add/page');
+
+    // Check the more link button.
+    $this->assertText(t('More information about formatting options'),t('Found the More button'));
+
+    // Check for the right help text.
+    $this->assertTrue($this->parse(),'Prepare for xpath');
+
+    // Make sure that more than one format is enabled (works only if more than
+    // one format available).
+    $fields = $this->xpath("//div[@id='edit-format-".$format->format."-wrapper']/div");
+
+    $missingHelpCount = 0;
+
+    // Get the filters tip here.
+    foreach ($filters as $id => $filter) {
+      $orig_filter = filter_filter_tips($filter->delta,$format->name);
+      $tips[$filter->delta] = $orig_filter;
+
+      // Check if a filter is available.
+      if (!$orig_filter) {
+        // If one fails to provide a tip - remove one delta for the li index.
+        $missingHelpCount++;
+      }
+      else {
+        $this->assertEqual(htmlentities((string)$fields[0]->ul->li[$filter->delta - $missingHelpCount]), $tips[$filter->delta], t('Filter help text match !filter', array('!filter' => $filter->name)));
+      }
+    }
+  }
 }
