test_helpers-1.0.0-alpha6/src/Stub/LanguageDefaultStub.php

src/Stub/LanguageDefaultStub.php
<?php

namespace Drupal\test_helpers\Stub;

use Drupal\Core\Language\Language;
use Drupal\Core\Language\LanguageDefault;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\Language\LanguageManager;
use Drupal\test_helpers\TestHelpers;

/**
 * A stub of the Drupal's default ConfigurableLanguageManager class.
 *
 *  @package TestHelpers\DrupalServiceStubs
 */
class LanguageDefaultStub extends LanguageDefault {

  /**
   * {@inheritdoc}
   */
  public function __construct(?array $values = NULL) {
    if ($values === NULL) {
      $values = [
        'id' => 'en',
        // In a configuration record the 'label' term is used instead of 'name'.
        'label' => LanguageManager::getStandardLanguageList()['en'][0],
      ];
    }
    TestHelpers::service('config.factory')->stubSetConfig('language.entity.' . $values['id'], $values);

    parent::__construct($values);
  }

  /**
   * {@inheritdoc}
   */
  public function set(LanguageInterface $language) {
    parent::set($language);
    // @phpstan-ignore-next-line We need a static call here.
    if (\Drupal::hasService('language_manager')) {
      // @phpstan-ignore-next-line We need a static call here.
      \Drupal::service('language_manager')->reset();
    }
  }

  /**
   * Sets the new default language by the language code.
   */
  public function stubSetByCode($code) {
    $language = new Language([
      'id' => $code,
      // In a configuration record the 'label' term is used instead of 'name'.
      'label' => LanguageManager::getStandardLanguageList()[$code][0],
    ]);
    $this->set($language);
    TestHelpers::service('language_manager')->reset();
  }

}

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

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