auto_entitylabel-8.x-3.x-dev/tests/src/Kernel/AutoEntityLabelBookTest.php

tests/src/Kernel/AutoEntityLabelBookTest.php
<?php

namespace Drupal\Tests\auto_entitylabel\Kernel;

use Drupal\auto_entitylabel\AutoEntityLabelManager;
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;

/**
 * Tests for auto entity label and core book module interactions.
 *
 * @group auto_entitylabel
 *
 * @requires module token
 */
class AutoEntityLabelBookTest extends EntityKernelTestBase {

  use ContentTypeCreationTrait;
  use NodeCreationTrait;

  /**
   * Node type.
   *
   * @var \Drupal\node\Entity\NodeType
   */
  protected $nodeType;

  /**
   * Config factory service variable.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'system',
    'user',
    'node',
    'book',
    'filter',
    'token',
    'auto_entitylabel',
  ];

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

    $this->installEntitySchema('node');
    $this->installSchema('user', 'users_data');
    $this->installSchema('node', ['node_access']);
    $this->installSchema('book', ['book']);
    $this->installConfig(self::$modules);

    $this->nodeType = $this->createContentType(['type' => 'book_page']);
    $this->configFactory = $this->container->get('config.factory');

    $book_config = $this->config('book.settings');
    $allowed_types = $book_config->get('allowed_types');
    $allowed_types[] = $this->nodeType->id();
    $book_config->set('allowed_types', $allowed_types)->save();
  }

  /**
   * Tests book node creation with enabled settings.
   */
  public function testBookOption() {
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::ENABLED,
      'pattern' => '[node:author:name]',
    ]);
    $user = $this->createUser();
    $node = $this->createNode([
      'uid' => $user->id(),
      'type' => $this->nodeType->id(),
      'book' => [
        'bid' => 0,
        'pid' => -1,
        'weight' => 0,
      ],
    ]);
    $this->assertEquals($user->getAccountName(), $node->getTitle(), 'The title is set.');
  }

  /**
   * Sets the configuration values.
   *
   * @param array $params
   *   Array of values to be configured.
   */
  public function setConfiguration(array $params) {
    $autoEntityLabelSettings = $this->configFactory
      ->getEditable("auto_entitylabel.settings.node.{$this->nodeType->id()}");
    foreach ($params as $key => $value) {
      $autoEntityLabelSettings
        ->set($key, $value);
    }
    $autoEntityLabelSettings->save();
  }

}

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

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