workbench_access-8.x-1.x-dev/tests/src/Kernel/ConfigDependenciesTest.php

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

namespace Drupal\Tests\workbench_access\Kernel;

use Drupal\field\Entity\FieldConfig;
use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Entity\NodeType;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\UiHelperTrait;
use Drupal\Tests\user\Traits\UserCreationTrait;
use Drupal\Tests\workbench_access\Traits\WorkbenchAccessTestTrait;
use Drupal\workbench_access\Plugin\views\field\Section;

/**
 * Defines a class for testing config dependencies.
 *
 * @group workbench_access
 */
class ConfigDependenciesTest extends KernelTestBase {

  use ContentTypeCreationTrait;
  use UiHelperTrait;
  use UserCreationTrait;
  use WorkbenchAccessTestTrait;

  /**
   * Access vocabulary.
   *
   * @var \Drupal\taxonomy\VocabularyInterface
   */
  protected $vocabulary;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'node',
    'text',
    'system',
    'user',
    'workbench_access',
    'field',
    'filter',
    'taxonomy',
    'options',
  ];

  /**
   * Access scheme.
   *
   * @var \Drupal\workbench_access\Entity\AccessSchemeInterface
   */
  protected $scheme;

  /**
   * Access scheme.
   *
   * @var \Drupal\workbench_access\Entity\AccessSchemeInterface
   */
  protected $menuScheme;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->installEntitySchema('node');
    $this->installConfig(['filter', 'node', 'workbench_access', 'system']);
    $this->installEntitySchema('user');
    $this->installEntitySchema('taxonomy_term');
    $this->installSchema('system', ['sequences']);
    $node_type = $this->createContentType(['type' => 'page']);
    $node_type2 = $this->createContentType(['type' => 'article']);
    $this->vocabulary = $this->setUpVocabulary();
    $this->setUpTaxonomyFieldForEntityType('node', $node_type->id(), $this->vocabulary->id());
    $this->setUpTaxonomyFieldForEntityType('node', $node_type->id(), $this->vocabulary->id(), 'field_section');
    $this->scheme = $this->setUpTaxonomyScheme($node_type, $this->vocabulary);
    $configuration = $this->scheme->getAccessScheme()->getConfiguration();
    $configuration['fields'][] = [
      'field' => 'field_section',
      'entity_type' => 'node',
      'bundle' => 'page',
    ];
    $this->scheme->getAccessScheme()->setConfiguration($configuration);
    $this->scheme->save();
    $this->menuScheme = $this->setUpMenuScheme([
      $node_type->id(),
      $node_type2->id(),
    ], ['main'], 'menu_scheme');
  }

  /**
   * Tests views field dependencies.
   */
  public function testViewsFieldDependencies() {
    $configuration = [
      'scheme' => 'editorial_section',
    ];
    $handler = Section::create($this->container, $configuration, 'section:editorial_section', []);

    $dependencies = $handler->calculateDependencies();
    $this->assertEquals(['config' => ['workbench_access.access_scheme.editorial_section']], $dependencies);
  }

  /**
   * Tests scheme dependencies.
   */
  public function testSchemeDependencies() {
    $this->assertEquals([
      'config' => [
        'field.field.node.page.field_section',
        'field.field.node.page.field_workbench_access',
        'taxonomy.vocabulary.workbench_access',
      ],
    ], $this->scheme->getDependencies());
    $this->assertEquals([
      'config' => [
        'node.type.article',
        'node.type.page',
        'system.menu.main',
      ],
    ], $this->menuScheme->getDependencies());
    // Delete the article content type.
    NodeType::load('article')->delete();
    $this->menuScheme = $this->loadUnchangedScheme($this->menuScheme->id());
    $this->assertEquals([
      'config' => [
        'node.type.page',
        'system.menu.main',
      ],
    ], $this->menuScheme->getDependencies());
    $this->assertEquals(['page'], $this->menuScheme->getAccessScheme()->getConfiguration()['bundles']);
    FieldConfig::load('node.page.field_section')->delete();
    $this->scheme = $this->loadUnchangedScheme($this->scheme->id());
    $this->assertEquals([
      'config' => [
        'field.field.node.page.field_workbench_access',
        'taxonomy.vocabulary.workbench_access',
      ],
    ], $this->scheme->getDependencies());
  }

}

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

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