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

tests/src/Kernel/AutoEntityLabelManagerTest.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 AutoEntityLabelManager methods.
 *
 * @group auto_entitylabel
 *
 * @requires module token
 */
class AutoEntityLabelManagerTest extends EntityKernelTestBase {

  use ContentTypeCreationTrait;
  use NodeCreationTrait;

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

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

  /**
   * AutoEntityLabelManager service.
   *
   * @var mixed
   */
  protected $autoEntityLabelManager;

  /**
   * Node entity.
   *
   * @var \Drupal\node\NodeInterface
   */
  protected $entity;

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'system',
    'user',
    'node',
    '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->installConfig(self::$modules);

    $this->nodeType = $this->createContentType(['type' => 'page']);
    $this->configFactory = $this->container->get('config.factory');
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::DISABLED,
    ]);
    $this->entity = $this->createNode([
      'title' => 'Test Node',
      'uid' => 1,
      'type' => $this->nodeType->id(),
    ]);
    $this->createAutoEntityLabelManager();
  }

  /**
   * Tests hasLabel() method.
   */
  public function testHasLabel() {
    $this->assertTrue($this->autoEntityLabelManager->hasLabel());
  }

  /**
   * Tests setLabel() method.
   */
  public function testSetLabel() {
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::ENABLED,
      'pattern' => 'Test Node',
    ]);
    $this->assertEquals('Test Node', $this->autoEntityLabelManager->setLabel());
  }

  /**
   * Tests hasAutoLabel() method.
   */
  public function testHasAutoLabel() {
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::ENABLED,
    ]);
    $this->assertTrue($this->autoEntityLabelManager->hasAutoLabel());

    $this->setConfiguration([
      'status' => AutoEntityLabelManager::DISABLED,
    ]);
    $this->assertNotTrue($this->autoEntityLabelManager->hasAutoLabel());
  }

  /**
   * Tests hasOptionalAutoLabel() method.
   */
  public function testHasOptionalAutoLabel() {
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::OPTIONAL,
    ]);
    $this->assertTrue($this->autoEntityLabelManager->hasOptionalAutoLabel());

    $this->setConfiguration([
      'status' => AutoEntityLabelManager::DISABLED,
    ]);
    $this->assertNotTrue($this->autoEntityLabelManager->hasOptionalAutoLabel());
  }

  /**
   * Tests autoLabelNeeded() method.
   */
  public function testAutoLabelNeeded() {
    $this->createAutoEntityLabelManager();
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::ENABLED,
    ]);
    $this->assertTrue($this->autoEntityLabelManager->autoLabelNeeded());

    $this->autoEntityLabelManager->setLabel();
    $this->assertNotTrue($this->autoEntityLabelManager->autoLabelNeeded());
  }

  /**
   * Tests isTitlePreserved() method.
   */
  public function testIsTitlePreserved() {
    $this->setConfiguration([
      'preserve_titles' => FALSE,
    ]);
    $this->assertNotTrue($this->autoEntityLabelManager->isTitlePreserved());

    $this->setConfiguration([
      'preserve_titles' => TRUE,
    ]);
    $this->assertTrue($this->autoEntityLabelManager->isTitlePreserved());
  }

  /**
   * Tests getStatus() method.
   */
  public function testGetStatus() {
    $this->setConfiguration([
      'status' => AutoEntityLabelManager::DISABLED,
    ]);
    $this->assertEquals(AutoEntityLabelManager::DISABLED, $this->autoEntityLabelManager->getStatus());

    $this->setConfiguration([
      'status' => AutoEntityLabelManager::ENABLED,
    ]);
    $this->assertEquals(AutoEntityLabelManager::ENABLED, $this->autoEntityLabelManager->getStatus());

    $this->setConfiguration([
      'status' => AutoEntityLabelManager::OPTIONAL,
    ]);
    $this->assertEquals(AutoEntityLabelManager::OPTIONAL, $this->autoEntityLabelManager->getStatus());

    $this->setConfiguration([
      'status' => AutoEntityLabelManager::PREFILLED,
    ]);
    $this->assertEquals(AutoEntityLabelManager::PREFILLED, $this->autoEntityLabelManager->getStatus());
  }

  /**
   * Tests getPattern() method.
   */
  public function testGetPattern() {
    $this->setConfiguration([
      'pattern' => '',
    ]);
    $this->assertEquals('', $this->autoEntityLabelManager->getPattern());

    $this->setConfiguration([
      'pattern' => 'Testing pattern',
    ]);
    $this->assertEquals('Testing pattern', $this->autoEntityLabelManager->getPattern());

    $this->setConfiguration([
      'pattern' => '[node:author:name]',
    ]);
    $this->assertEquals('[node:author:name]', $this->autoEntityLabelManager->getPattern());
  }

  /**
   * Tests getLabelName() method.
   */
  public function testGetLabelName() {
    $this->assertEquals('title', $this->autoEntityLabelManager->getLabelName());
  }

  /**
   * 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();
  }

  /**
   * Creates new instance of AutoEntityLabelManager class.
   */
  public function createAutoEntityLabelManager() {
    $this->autoEntityLabelManager = new AutoEntityLabelManager(
      $this->entity,
      $this->configFactory,
      $this->container->get('entity_type.manager'),
      $this->container->get('token'),
      $this->container->get('module_handler'),
    );
  }

}

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

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