summaryrefslogtreecommitdiff
path: root/modules/tracker/tracker.test
blob: 5f6f65dadd8fa85239f7234e914a9d512052f114 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?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('comment', '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.'));
  }
}