X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fcomment%2Fsrc%2FTests%2FCommentBlockTest.php;fp=web%2Fcore%2Fmodules%2Fcomment%2Fsrc%2FTests%2FCommentBlockTest.php;h=37cc5de6209bdabba9b78635abd8c3a11f6eca0b;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/comment/src/Tests/CommentBlockTest.php b/web/core/modules/comment/src/Tests/CommentBlockTest.php new file mode 100644 index 000000000..37cc5de62 --- /dev/null +++ b/web/core/modules/comment/src/Tests/CommentBlockTest.php @@ -0,0 +1,90 @@ +adminUser = $this->drupalCreateUser([ + 'administer content types', + 'administer comments', + 'skip comment approval', + 'post comments', + 'access comments', + 'access content', + 'administer blocks', + ]); + } + + /** + * Tests the recent comments block. + */ + public function testRecentCommentBlock() { + $this->drupalLogin($this->adminUser); + $block = $this->drupalPlaceBlock('views_block:comments_recent-block_1'); + + // Add some test comments, with and without subjects. Because the 10 newest + // comments should be shown by the block, we create 11 to test that behavior + // below. + $timestamp = REQUEST_TIME; + for ($i = 0; $i < 11; ++$i) { + $subject = ($i % 2) ? $this->randomMachineName() : ''; + $comments[$i] = $this->postComment($this->node, $this->randomMachineName(), $subject); + $comments[$i]->created->value = $timestamp--; + $comments[$i]->save(); + } + + // Test that a user without the 'access comments' permission cannot see the + // block. + $this->drupalLogout(); + user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, ['access comments']); + $this->drupalGet(''); + $this->assertNoText(t('Recent comments')); + user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access comments']); + + // Test that a user with the 'access comments' permission can see the + // block. + $this->drupalLogin($this->webUser); + $this->drupalGet(''); + $this->assertText(t('Recent comments')); + + // Test the only the 10 latest comments are shown and in the proper order. + $this->assertNoText($comments[10]->getSubject(), 'Comment 11 not found in block.'); + for ($i = 0; $i < 10; $i++) { + $this->assertText($comments[$i]->getSubject(), SafeMarkup::format('Comment @number found in block.', ['@number' => 10 - $i])); + if ($i > 1) { + $previous_position = $position; + $position = strpos($this->getRawContent(), $comments[$i]->getSubject()); + $this->assertTrue($position > $previous_position, SafeMarkup::format('Comment @a appears after comment @b', ['@a' => 10 - $i, '@b' => 11 - $i])); + } + $position = strpos($this->getRawContent(), $comments[$i]->getSubject()); + } + + // Test that links to comments work when comments are across pages. + $this->setCommentsPerPage(1); + + for ($i = 0; $i < 10; $i++) { + $this->clickLink($comments[$i]->getSubject()); + $this->assertText($comments[$i]->getSubject(), 'Comment link goes to correct page.'); + $this->assertRaw('