1 comment.test CommentNodeChangesTestCase::testNodeCommentSettings()

Tests opening, closing, and hiding comments.

File

core/modules/comment/tests/comment.test, line 2195
Tests for the Comment module.

Class

CommentNodeChangesTestCase
Tests that comments behave correctly when the node is changed.

Code

function testNodeCommentSettings() {
  $this->backdropLogin($this->admin_user);

  // Check that the comment settings only include "Open" and "Closed" if
  // no comments yet exist.
  $this->backdropGet('node/' . $this->node->nid . '/edit');
  $this->assertField('edit-comment-' . COMMENT_NODE_OPEN, 'Comments open field found.');
  $this->assertField('edit-comment-' . COMMENT_NODE_CLOSED, 'Comments closed field found.');
  $this->assertNoField('edit-comment-' . COMMENT_NODE_HIDDEN, 'Comments hidden field not shown when no comments exist.');

  // Post a comment with the default settings (comments open).
  $comment = $this->postComment($this->node, $this->randomName());
  $this->backdropGet('node/' . $this->node->nid);
  $this->assertTrue($this->commentExists($comment), 'Comments shown when comments are open.');
  $this->assertEqual(count($this->xpath('//form[@id="comment-form"]')), 1, 'Comment form found on node page when comments are open.');

  // Now check that the hidden option exists in the edit form.
  $this->backdropGet('node/' . $this->node->nid . '/edit');
  $this->assertField('edit-comment-hidden', 'Comments hidden field shown after comments have been added.');

  // Close the comments and check that adding a comment is no longer possible.
  $edit = array(
    'comment' => COMMENT_NODE_CLOSED,
  );
  $this->backdropPost(NULL, $edit, t('Save'));
  $this->assertTrue($this->commentExists($comment), 'Comments shown when comments are closed.');
  $this->assertEqual(count($this->xpath('//form[@id="comment-form"]')), 0, 'Comment form not on node page when comments are closed.');

  // Hide comments and check that adding comments is disabled also.
  $edit = array(
    'comment_hidden' => TRUE,
  );
  $this->backdropPost('node/' . $this->node->nid . '/edit', $edit, t('Save'));
  $this->assertFalse($this->commentExists($comment), 'Comments are not shown when hidden.');
  $this->assertEqual(count($this->xpath('//form[@id="comment-form"]')), 0, 'Comment form not on node page when comments are hidden.');

}