Index: modules/node/node.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.test,v
retrieving revision 1.86
diff -u -p -r1.86 node.test
--- modules/node/node.test	26 May 2010 07:52:12 -0000	1.86
+++ modules/node/node.test	6 Jun 2010 14:43:08 -0000
@@ -1667,6 +1667,94 @@ class NodeQueryAlter extends DrupalWebTe
   }
 }

+/*
+ * Test single and multiple node deletion functionality.
+ */
+class NodeDeleteTestCase extends DrupalWebTestCase {
+  protected $admin_user;
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Nodes deletion',
+      'description' => 'Test single and multiple node deletion functionality.',
+      'group' => 'Node'
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+    $this->admin_user = $this->drupalCreateUser(array('administer nodes', 'create article content', 'create page content', 'edit any article content', 'edit any page content', 'delete any article content', 'delete any page content', 'access content overview'));
+    $this->drupalLogin($this->admin_user);
+  }
+
+  /**
+   *  Test single node delete from node/[NID]/delete page.
+   */
+  function testSingleNodeDelete() {
+    // Create article node.
+    $articleTitle = $this->randomName(16);
+    $article = $this->drupalCreateNode(array('type' => 'article', 'title' => $articleTitle));
+    $this->assertTrue(is_object($article) && isset($article->nid), t('Article type node has been created.'));
+
+    // Create page node.
+    $pageTitle = $this->randomName(16);
+    $page = $this->drupalCreateNode(array('type' => 'page', 'title' => $pageTitle));
+    $this->assertTrue(is_object($page) && isset($page->nid), t('Page type node has been created.'));
+
+    // Check that the nodes have been created.
+    $article = $this->drupalGetNodeByTitle($articleTitle);
+    $this->assertTrue($article, t('Created article node found in database.'));
+    $page = $this->drupalGetNodeByTitle($pageTitle);
+    $this->assertTrue($page, t('Created page node found in database.'));
+
+    // Delete the nodes.
+    $this->drupalPost('node/' . $article->nid . '/delete', array(), t('Delete'));
+    $this->drupalPost('node/' . $page->nid . '/delete', array(), t('Delete'));
+
+    // Check that all the nodes have been deleted.
+    $count = db_select('node', 'n')
+      ->condition('n.nid', array($article->nid, $page->nid), 'IN')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    $this->assertEqual($count, 0, t('All created nodes have been deleted.'));
+  }
+
+  /**
+   *  Test multiple node delete from admin/content page
+   */
+  function testMultipleNodeDelete() {
+    $pageIDs = array();
+    $settings = array('operation' => 'delete');
+
+    // Create five nodes.
+    for ($i = 0; $i < 5; $i++) {
+      $pageTitle = $this->randomName(16);
+      $page = $this->drupalCreateNode(array('type' => 'page', 'title' => $pageTitle));
+      $this->assertTrue(is_object($page) && isset($page->nid), t('Page type node has been created'));
+
+      $pageIDs[] = $page->nid;
+      $settings['nodes[' . $page->nid . ']'] = $page->nid;
+
+      // Check that the nodes have been created.
+      $page = $this->drupalGetNodeByTitle($pageTitle);
+      $this->assertTrue($page, t('Created page node found in database.'));
+    }
+
+    // Delete all created nodes.
+    $this->drupalPost('admin/content', $settings, t('Update'));
+    $this->drupalPost(NULL, NULL, t('Delete'));
+
+    // Check that all the nodes have been deleted.
+    $count = db_select('node', 'n')
+      ->condition('n.nid', $pageIDs, 'IN')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    $this->assertEqual($count, 0, t('All created nodes have been deleted.'));
+  }
+}
+
 /**
  * Test node token replacement in strings.
  */
