knowledge-8.x-1.x-dev/tests/src/Functional/KnowledgeNodeAccessTest.php

tests/src/Functional/KnowledgeNodeAccessTest.php
<?php

namespace Drupal\Tests\knowledge\Functional;

use Drupal\knowledge\KnowledgeManagerInterface;

/**
 * Tests knowledge with node access.
 *
 * Verifies there is no PostgreSQL error when viewing a node with threaded
 * knowledge (a knowledge and a reply), if a node access module is in use.
 *
 * @group knowledge
 */
class KnowledgeNodeAccessTest extends KnowledgeTestBase {

  /**
   * Modules to install.
   *
   * @var array
   */
  protected static $modules = ['node_access_test'];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    node_access_rebuild();

    // Re-create user.
    $this->webUser = $this->drupalCreateUser([
      'access knowledge',
      'post knowledge',
      'create article content',
      'edit own knowledge',
      'node test view',
      'skip knowledge approval',
    ]);

    // Set the author of the created node to the web_user uid.
    $this->node->setOwnerId($this->webUser->id())->save();
  }

  /**
   * Tests that threaded knowledge can be viewed.
   */
  public function testThreadedKnowledgeView() {
    // Set knowledge to have subject required and preview disabled.
    $this->drupalLogin($this->adminUser);
    $this->setKnowledgePreview(DRUPAL_DISABLED);
    $this->setKnowledgeForm(TRUE);
    $this->setKnowledgeSubject(TRUE);
    $this->setKnowledgeSettings('default_mode', KnowledgeManagerInterface::KNOWLEDGE_MODE_THREADED, 'Knowledge paging changed.');
    $this->drupalLogout();

    // Post knowledge.
    $this->drupalLogin($this->webUser);
    $knowledge_text = $this->randomMachineName();
    $knowledge_subject = $this->randomMachineName();
    $knowledge = $this->postKnowledge($this->node, $knowledge_text, $knowledge_subject);
    $this->assertTrue($this->knowledgeExists($knowledge), 'Knowledge found.');

    // Check knowledge display.
    $this->drupalGet('node/' . $this->node->id());
    $this->assertSession()->pageTextContains($knowledge_subject);
    $this->assertSession()->pageTextContains($knowledge_text);

    // Reply to knowledge, creating second knowledge.
    $this->drupalGet('knowledge/reply/node/' . $this->node->id() . '/knowledge/' . $knowledge->id());
    $reply_text = $this->randomMachineName();
    $reply_subject = $this->randomMachineName();
    $reply = $this->postKnowledge(NULL, $reply_text, $reply_subject, TRUE);
    $this->assertTrue($this->knowledgeExists($reply, TRUE), 'Reply found.');

    // Go to the node page and verify knowledge and reply are visible.
    $this->drupalGet('node/' . $this->node->id());
    $this->assertSession()->pageTextContains($knowledge_text);
    $this->assertSession()->pageTextContains($knowledge_subject);
    $this->assertSession()->pageTextContains($reply_text);
    $this->assertSession()->pageTextContains($reply_subject);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc