auto_entitylabel-8.x-3.x-dev/tests/src/FunctionalJavascript/AutoEntityLabelBatchTest.php

tests/src/FunctionalJavascript/AutoEntityLabelBatchTest.php
<?php

namespace Drupal\Tests\auto_entitylabel\FunctionalJavascript;

use Drupal\FunctionalJavascriptTests\WebDriverTestBase;

/**
 * Tests batch operations on re-save.
 *
 * @group auto_entitylabel
 *
 * @requires module token
 */
class AutoEntityLabelBatchTest extends WebDriverTestBase {

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

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

  /**
   * User variable.
   *
   * @var bool|\Drupal\user\Entity\User|false
   */
  protected $user;

  /**
   * Node storage variable.
   *
   * @var \Drupal\node\NodeStorageInterface
   */
  protected $nodeStorage;

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

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

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

    $this->user = $this->drupalCreateUser([], '', TRUE);
    $this->drupalLogin($this->user);

    $this->nodeType = $this->createContentType(['type' => 'page']);

    $this->configFactory = $this->container->get('config.factory');
    $this->nodeStorage = $this->container->get('entity_type.manager')->getStorage('node');
  }

  /**
   * Tests that re-save batch works correctly.
   */
  public function testBatchProcess() {
    /** @var \Drupal\FunctionalJavascriptTests\JSWebAssert $webAssert */
    $webAssert = $this->assertSession();
    $this->createTestNodes(10, 'page');
    $pagesIDs = $this->nodeStorage->getQuery()
      ->accessCheck(FALSE)
      ->condition('type', 'page')->execute();
    foreach ($this->nodeStorage->loadMultiple($pagesIDs) as $index => $page) {
      $this->assertEquals('Testing node page ' . ($index - 1), $page->get('title')->value);
      $page->save();
    }
    $this->configFactory
      ->getEditable("auto_entitylabel.settings.node.{$this->nodeType->id()}")
      ->set('status', 1)
      ->set('pattern', 'Test node [current-user:account-name]')
      ->save();
    $this->drupalGet('/admin/structure/types/manage/page/auto-label');
    $webAssert->pageTextContains('AUTOMATIC LABEL GENERATION FOR');
    $webAssert->fieldExists('status');
    $webAssert->fieldExists('pattern');
    $webAssert->fieldExists('save');
    $webAssert->fieldExists('chunk');
    $edit = [
      'save' => TRUE,
      'chunk' => 5,
    ];
    $this->submitForm($edit, 'Save configuration');
    $webAssert->assertWaitOnAjaxRequest();
    $webAssert->pageTextContains('The configuration options have been saved.');
    $webAssert->pageTextContains('Resaved 10 labels.');
    foreach ($this->nodeStorage->loadMultiple($pagesIDs) as $page) {
      $this->assertEquals('Test node ' . $this->user->getAccountName(), $page->get('title')->value);
    }
  }

  /**
   * Creates number of nodes of provided type.
   *
   * @param int $numberOfNodes
   *   Number of nodes to be created.
   * @param string $nodeType
   *   Type of node to be created.
   */
  public function createTestNodes(int $numberOfNodes, string $nodeType) {
    for ($i = 0; $i < $numberOfNodes; $i++) {
      $this->drupalCreateNode([
        'type' => $nodeType,
        'title' => 'Testing node ' . $nodeType . ' ' . $i,
      ]);
    }
  }

}

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

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