Commit 98366a9e authored by alexpott's avatar alexpott
Browse files

Issue #11883 by samwilson, Add test coverage for...

Issue #11883 by samwilson, Add test coverage for auto-comment title functionality and word-breaking
parent 04a17f8b
......@@ -11,6 +11,7 @@
use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
use Drupal\comment\Entity\Comment;
use Drupal\user\RoleInterface;
use Drupal\filter\Entity\FilterFormat;
* Tests comment user interfaces.
......@@ -20,16 +21,22 @@
class CommentInterfaceTest extends CommentTestBase {
* Tests the comment interface.
* Set up comments to have subject and preview disabled.
function testCommentInterface() {
// Set comments to have subject and preview disabled.
public function setUp() {
$this->setCommentSettings('default_mode', CommentManagerInterface::COMMENT_MODE_THREADED, 'Comment paging changed.');
* Tests the comment interface.
public function testCommentInterface() {
// Post comment #1 without subject or preview.
......@@ -197,4 +204,81 @@ function testCommentInterface() {
* Test that the subject is automatically filled if disabled or left blank.
* When the subject field is blank or disabled, the first 29 characters of the
* comment body are used for the subject. If this would break within a word,
* then the break is put at the previous word boundary instead.
public function testAutoFilledSubject() {
$this->drupalGet('node/' . $this->node->id());
// Break when there is a word boundary before 29 characters.
$body_text = 'Lorem ipsum Lorem ipsum Loreming ipsum Lorem ipsum';
$comment1 = $this->postComment(NULL, $body_text, '', TRUE);
$this->assertTrue($this->commentExists($comment1), 'Form comment found.');
$this->assertEqual('Lorem ipsum Lorem ipsum', $comment1->getSubject());
// Break at 29 characters where there's no boundary before that.
$body_text2 = 'LoremipsumloremipsumLoremingipsumLoremipsum';
$comment2 = $this->postComment(NULL, $body_text2, '', TRUE);
$this->assertEqual('LoremipsumloremipsumLoremingi', $comment2->getSubject());
* Test that automatic subject is correctly created from HTML comment text.
* This is the same test as in CommentInterfaceTest::testAutoFilledSubject()
* with the additional check that HTML is stripped appropriately prior to
* character-counting.
public function testAutoFilledHtmlSubject() {
// Set up two default (i.e. filtered HTML) input formats, because then we
// can select one of them. Then create a user that can use these formats,
// log the user in, and then GET the node page on which to test the
// comments.
$filtered_html_format = FilterFormat::create(array(
'format' => 'filtered_html',
'name' => 'Filtered HTML',
$full_html_format = FilterFormat::create(array(
'format' => 'full_html',
'name' => 'Full HTML',
$html_user = $this->drupalCreateUser(array(
'access comments',
'post comments',
'edit own comments',
'skip comment approval',
'access content',
$this->drupalGet('node/' . $this->node->id());
// HTML should not be included in the character count.
$body_text1 = '<span></span><strong> </strong><span> </span><strong></strong>Hello World<br />';
$edit1 = array(
'comment_body[0][value]' => $body_text1,
'comment_body[0][format]' => 'filtered_html',
$this->drupalPostForm(NULL, $edit1, t('Save'));
$this->assertEqual('Hello World', Comment::load(1)->getSubject());
// If there's nothing other than HTML, the subject should be '(No subject)'.
$body_text2 = '<span></span><strong> </strong><span> </span><strong></strong> <br />';
$edit2 = array(
'comment_body[0][value]' => $body_text2,
'comment_body[0][format]' => 'filtered_html',
$this->drupalPostForm(NULL, $edit2, t('Save'));
$this->assertEqual('(No subject)', Comment::load(2)->getSubject());
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment