localgov_alert_banner-1.8.5/tests/src/Kernel/SchedulingInstallTest.php

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

declare(strict_types=1);

namespace Drupal\Tests\localgov_alert_banner\Kernel;

use Drupal\Core\Extension\MissingDependencyException;
use Drupal\KernelTests\KernelTestBase;
use Drupal\user\Entity\Role;

/**
 * Test enabling scheduling.
 *
 * @group localgov_alert_banner
 */
class SchedulingInstallTest extends KernelTestBase {

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'condition_field',
    'content_moderation',
    'field',
    'link',
    'options',
    'system',
    'text',
    'user',
    'views',
    'workflows',
  ];

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

    $this->installEntitySchema('workflow');
    $this->installEntitySchema('user');
    $this->installConfig([
      'content_moderation',
      'system',
    ]);

  }

  /**
   * Check alert banners are configured when enabling scheduled transitions.
   */
  public function testEnableScheduledTransitions(): void {
    \Drupal::service('module_installer')->install(['localgov_alert_banner']);

    // Add extra alert banner type.
    $this->container->get('entity_type.manager')
      ->getStorage('localgov_alert_banner_type')
      ->create(['id' => 'extra_type', 'label' => 'Extra type'])
      ->save();

    // Check scheduled transitions config.
    $bundles = \Drupal::service('config.factory')->get('scheduled_transitions.settings')->get('bundles');
    $this->assertEmpty($bundles);
    try {
      \Drupal::service('module_installer')->install(['scheduled_transitions']);
    }
    catch (MissingDependencyException $e) {
      return;
    }
    $bundles = \Drupal::service('config.factory')->get('scheduled_transitions.settings')->get('bundles');
    $this->assertEquals([
      [
        'entity_type' => 'localgov_alert_banner',
        'bundle' => 'extra_type',
      ],
      [
        'entity_type' => 'localgov_alert_banner',
        'bundle' => 'localgov_alert_banner',
      ],
    ], $bundles);

    // Check permissions.
    $publisher = Role::load('emergency_publisher');
    $permissions = [
      'add scheduled transitions localgov_alert_banner localgov_alert_banner',
      'add scheduled transitions localgov_alert_banner extra_type',
      'reschedule scheduled transitions localgov_alert_banner localgov_alert_banner',
      'reschedule scheduled transitions localgov_alert_banner extra_type',
      'view scheduled transitions localgov_alert_banner localgov_alert_banner',
      'view scheduled transitions localgov_alert_banner extra_type',
    ];
    foreach ($permissions as $permission) {
      $this->assertTrue($publisher->hasPermission($permission));
    }
  }

  /**
   * Check scheduled transitions are configured when enabling alert banners.
   */
  public function testEnableLocalGovAlertBanner(): void {
    try {
      \Drupal::service('module_installer')->install(['scheduled_transitions']);
    }
    catch (MissingDependencyException $e) {
      return;
    }

    // Check scheduled transitions config.
    $bundles = \Drupal::service('config.factory')->get('scheduled_transitions.settings')->get('bundles');
    $this->assertEmpty($bundles);
    \Drupal::service('module_installer')->install(['localgov_alert_banner']);
    $bundles = \Drupal::service('config.factory')->get('scheduled_transitions.settings')->get('bundles');
    $this->assertEquals([
      [
        'entity_type' => 'localgov_alert_banner',
        'bundle' => 'localgov_alert_banner',
      ],
    ], $bundles);

    // Check permissions.
    $publisher = Role::load('emergency_publisher');
    $permissions = [
      'add scheduled transitions localgov_alert_banner localgov_alert_banner',
      'reschedule scheduled transitions localgov_alert_banner localgov_alert_banner',
      'view scheduled transitions localgov_alert_banner localgov_alert_banner',
    ];
    foreach ($permissions as $permission) {
      $this->assertTrue($publisher->hasPermission($permission));
    }
  }

}

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

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