You are here

function CommentNotifyTestCase::testCommentNotifyAnonymousUserFunctionalTest in Comment Notify 6

Same name and namespace in other branches
  1. 7 comment_notify.test \CommentNotifyTestCase::testCommentNotifyAnonymousUserFunctionalTest()

Test various behaviors for anonymous users.

File

./comment_notify.test, line 30

Class

CommentNotifyTestCase

Code

function testCommentNotifyAnonymousUserFunctionalTest() {

  // Code that does something to be tested.
  // Create and login administrative user.
  $admin_user = $this
    ->drupalCreateUser(array(
    'administer comment notify',
    'administer permissions',
    'administer comments',
  ));
  $this
    ->drupalLogin($admin_user);

  // Enable comment notify on this node and allow anonymous information in comments.
  variable_set('comment_notify_node_types', array(
    'story' => 'story',
  ));
  variable_set('comment_anonymous_story', 1);

  // Create a node with comments allowed.
  $this->node = $this
    ->drupalCreateNode(array(
    'type' => 'story',
    'promote' => 1,
    'comment' => 2,
  ));

  // Allow anonymous users to post comments and get notifications.
  $this
    ->setPermission('anonymous user', array(
    'access comments' => TRUE,
    'access content' => TRUE,
    'post comments' => TRUE,
    'post comments without approval' => TRUE,
    'subscribe to comments' => TRUE,
  ));
  $this
    ->drupalLogout();

  // Notify type 1 - All comments on the node.
  // First confirm that we properly require an e-mail address.
  $subscribe_1 = array(
    'notify' => TRUE,
    'notify_type' => 1,
  );
  $this
    ->postCommentNotifyComment($this->node, $this
    ->randomName(), $this
    ->randomName(), TRUE, TRUE, $subscribe_1);
  $this
    ->assertText(t('If you want to subscribe to comments you must supply a valid e-mail address.'), t('Anonymous user must leave E-mail if they want to get notifications.'));

  // Try again with an e-mail address.
  $contact_1 = array(
    'mail' => $this
      ->randomName() . '@' . $this
      ->randomName(),
  );
  $anonymous_comment_1 = $this
    ->postCommentNotifyComment($this->node, $this
    ->randomName(), $this
    ->randomName(), TRUE, $subscribe_1, $contact_1);

  // Confirm that the notification is saved.
  $result = db_result(db_query("SELECT notify FROM {comment_notify} WHERE cid = %d", $anonymous_comment_1['id']));
  $this
    ->assertEqual($result, $subscribe_1['notify_type'], 'Notify selection option 1 is saved properly.');

  // Notify type 2 - replies to a comment.
  $subscribe_2 = array(
    'notify' => TRUE,
    'notify_type' => 2,
  );
  $contact_2 = array(
    'mail' => $this
      ->randomName() . '@' . $this
      ->randomName(),
  );
  $anonymous_comment_2 = $this
    ->postCommentNotifyComment($this->node, $this
    ->randomName(), $this
    ->randomName(), TRUE, $subscribe_2, $contact_2);

  // Confirm that the notification is saved.
  $result = db_result(db_query("SELECT notify FROM {comment_notify} WHERE cid = %d", $anonymous_comment_2['id']));
  $this
    ->assertEqual($result, $subscribe_2['notify_type'], 'Notify selection option 2 is saved properly.');

  // Confirm that the original subscriber with all comments on this node got their mail.
  $this
    ->assertMail('to', $contact_1['mail'], t('Message was sent to the proper anonymous user.'));

  // Notify type 0 (i.e. only one mode is enabled).
  variable_set('comment_notify_available_alerts', array(
    1 => 0,
    2 => 2,
  ));
  $subscribe_0 = array(
    'notify' => TRUE,
  );
  $contact_0 = array(
    'mail' => $this
      ->randomName() . '@' . $this
      ->randomName(),
  );
  $anonymous_comment_0 = $this
    ->postCommentNotifyComment($this->node, $this
    ->randomName(), $this
    ->randomName(), TRUE, $subscribe_0, $contact_0);

  // Confirm that the notification is saved.
  $result = db_result(db_query("SELECT notify FROM {comment_notify} WHERE cid = %d", $anonymous_comment_0['id']));
  $this
    ->assertEqual($result, 2, 'Notify selection option 0 is saved properly.');

  // TODO yet more tests.
}