summaryrefslogtreecommitdiff
path: root/modules/tracker
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tracker')
-rw-r--r--modules/tracker/tracker.test145
1 files changed, 145 insertions, 0 deletions
diff --git a/modules/tracker/tracker.test b/modules/tracker/tracker.test
new file mode 100644
index 000000000..3e400de76
--- /dev/null
+++ b/modules/tracker/tracker.test
@@ -0,0 +1,145 @@
+<?php
+// $Id$
+
+class TrackerTest extends DrupalWebTestCase {
+ protected $user;
+ protected $other_user;
+ protected $new_node;
+
+ /**
+ * Implementation of getInfo().
+ */
+ function getInfo() {
+ return array(
+ 'name' => t('Tracker'),
+ 'description' => t('Create nodes and check for their display in the tracker listings.'),
+ 'group' => t('Tracker')
+ );
+ }
+
+ /**
+ * Implementation of setUp().
+ */
+ function setUp() {
+ parent::setUp();
+
+ $this->drupalModuleEnable('comment');
+ $this->drupalModuleEnable('tracker');
+
+ $permissions = array('access comments', 'post comments', 'post comments without approval');
+ $this->user = $this->drupalCreateUser($permissions);
+ $this->other_user = $this->drupalCreateUser($permissions);
+ }
+
+ /**
+ * Test the presence of nodes on the global tracker listing.
+ */
+ function testTrackerAll() {
+ $this->drupalLogin($this->user);
+
+ $page1 = array(
+ 'title' => $this->randomName(4, 'published_'),
+ 'status' => 1,
+ );
+ $page2 = array(
+ 'title' => $this->randomName(4, 'unpublished_'),
+ 'status' => 0,
+ );
+ $this->drupalCreateNode($page1);
+ $this->drupalCreateNode($page2);
+
+ $this->drupalGet('tracker');
+ $this->assertText($page1['title'], t('Nodes show up in the tracker listing.'));
+ $this->assertNoText($page2['title'], t('Unpublished nodes do not show up in the tracker listing.'));
+ }
+
+ /**
+ * Test the presence of nodes on a user's tracker listing.
+ */
+ function testTrackerUser() {
+ $this->drupalLogin($this->user);
+
+ $page1 = array(
+ 'title' => $this->randomName(4, 'published_'),
+ 'uid' => $this->user->uid,
+ 'status' => 1,
+ );
+ $page2 = array(
+ 'title' => $this->randomName(4, 'unpublished_'),
+ 'uid' => $this->user->uid,
+ 'status' => 0,
+ );
+ $this->drupalCreateNode($page1);
+ $this->drupalCreateNode($page2);
+
+ $this->drupalGet('user/' . $this->user->uid . '/track');
+ $this->assertText($page1['title'], t("Nodes show up in the author's tracker listing."));
+ $this->assertNoText($page2['title'], t("Unpublished nodes do not show up in the author's tracker listing."));
+ }
+
+ /**
+ * Test the presence of the "new" flag for nodes.
+ */
+ function testTrackerNewNodes() {
+ $this->drupalLogin($this->user);
+
+ $edit = array(
+ 'title' => $this->randomName(),
+ );
+ $node = $this->drupalCreateNode($edit);
+
+ $this->drupalGet('tracker');
+ $this->assertPattern('/'. $edit['title'] . '.*new/', t('New nodes are flagged as such in the tracker listing.'));
+
+ $this->drupalGet('node/' . $node->nid);
+ $this->drupalGet('tracker');
+ $this->assertNoPattern('/'. $edit['title'] . '.*new/', t('Visited nodes are not flagged as new.'));
+
+ $this->drupalLogin($this->other_user);
+ $this->drupalGet('tracker');
+ $this->assertPattern('/'. $edit['title'] . '.*new/', t('For another user, new nodes are flagged as such in the tracker listing.'));
+
+ $this->drupalGet('node/' . $node->nid);
+ $this->drupalGet('tracker');
+ $this->assertNoPattern('/'. $edit['title'] . '.*new/', t('For another user, visited nodes are not flagged as new.'));
+ }
+
+ /**
+ * Test comment counters on the tracker listing.
+ */
+ function testTrackerNewComments() {
+ // Make node preview optional
+ variable_set('comment_preview_page', 0);
+
+ $this->drupalLogin($this->user);
+
+ $edit = array(
+ 'comment' => 2,
+ 'title' => $this->randomName(),
+ );
+ $node = $this->drupalCreateNode($edit);
+
+ // Add a comment to the page.
+ $comment = array(
+ 'subject' => $this->randomName(),
+ 'comment' => $this->randomName(20),
+ );
+ $this->drupalPost('comment/reply/' . $node->nid, $comment, t('Save')); // The new comment is automatically viewed by the current user.
+
+ $this->drupalLogin($this->other_user);
+ $this->drupalGet('tracker');
+ $this->assertText('1 new', t('New comments are counted on the tracker listing pages.'));
+ $this->drupalGet('node/' . $node->nid);
+
+ // Add another comment as other_user.
+ $comment = array(
+ 'subject' => $this->randomName(),
+ 'comment' => $this->randomName(20),
+ );
+ $this->drupalPost('comment/reply/' . $node->nid, $comment, t('Save'));
+
+ $this->drupalLogin($this->user);
+ $this->drupalGet('tracker');
+ $this->assertText('1 new', t('New comments are counted on the tracker listing pages.'));
+ }
+}