123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace Drupal\Tests\node\Functional;
- use Drupal\comment\CommentInterface;
- use Drupal\comment\Tests\CommentTestTrait;
- use Drupal\comment\Entity\Comment;
- use Drupal\Tests\BrowserTestBase;
- /**
- * Tests access controlled node views have the right amount of comment pages.
- *
- * @group node
- */
- class NodeAccessPagerTest extends BrowserTestBase {
- use CommentTestTrait;
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = ['node_access_test', 'comment', 'forum'];
- protected function setUp() {
- parent::setUp();
- node_access_rebuild();
- $this->drupalCreateContentType(['type' => 'page', 'name' => t('Basic page')]);
- $this->addDefaultCommentField('node', 'page');
- $this->webUser = $this->drupalCreateUser(['access content', 'access comments', 'node test view']);
- }
- /**
- * Tests the comment pager for nodes with multiple grants per realm.
- */
- public function testCommentPager() {
- // Create a node.
- $node = $this->drupalCreateNode();
- // Create 60 comments.
- for ($i = 0; $i < 60; $i++) {
- $comment = Comment::create([
- 'entity_id' => $node->id(),
- 'entity_type' => 'node',
- 'field_name' => 'comment',
- 'subject' => $this->randomMachineName(),
- 'comment_body' => [
- ['value' => $this->randomMachineName()],
- ],
- 'status' => CommentInterface::PUBLISHED,
- ]);
- $comment->save();
- }
- $this->drupalLogin($this->webUser);
- // View the node page. With the default 50 comments per page there should
- // be two pages (0, 1) but no third (2) page.
- $this->drupalGet('node/' . $node->id());
- $this->assertText($node->label());
- $this->assertText(t('Comments'));
- $this->assertRaw('page=1');
- $this->assertNoRaw('page=2');
- }
- /**
- * Tests the forum node pager for nodes with multiple grants per realm.
- */
- public function testForumPager() {
- // Look up the forums vocabulary ID.
- $vid = $this->config('forum.settings')->get('vocabulary');
- $this->assertTrue($vid, 'Forum navigation vocabulary ID is set.');
- // Look up the general discussion term.
- $tree = \Drupal::entityManager()->getStorage('taxonomy_term')->loadTree($vid, 0, 1);
- $tid = reset($tree)->tid;
- $this->assertTrue($tid, 'General discussion term is found in the forum vocabulary.');
- // Create 30 nodes.
- for ($i = 0; $i < 30; $i++) {
- $this->drupalCreateNode([
- 'nid' => NULL,
- 'type' => 'forum',
- 'taxonomy_forums' => [
- ['target_id' => $tid],
- ],
- ]);
- }
- // View the general discussion forum page. With the default 25 nodes per
- // page there should be two pages for 30 nodes, no more.
- $this->drupalLogin($this->webUser);
- $this->drupalGet('forum/' . $tid);
- $this->assertRaw('page=1');
- $this->assertNoRaw('page=2');
- }
- }
|