simplenews-3.0.0-alpha1/tests/src/Kernel/SimplenewsTokensMultilingualTest.php

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

namespace Drupal\Tests\simplenews\Kernel;

use Drupal\language\Entity\ConfigurableLanguage;

/**
 * Test the tokens multilingual replacements.
 *
 * @group simplenews
 */
class SimplenewsTokensMultilingualTest extends SimplenewsTokensTest {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'system',
    'token',
    'node',
    'user',
    'locale',
    'language',
    'simplenews',
  ];

  /**
   * The language manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

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

    $this->installConfig(['language']);
    $this->installSchema('locale', ['locales_source', 'locales_target', 'locales_location']);
    $this->installEntitySchema('configurable_language');

    $this->languageManager = $this->container->get('language_manager');

    // In order to reflect the changes for a multilingual site in the container
    // we have to rebuild it.
    ConfigurableLanguage::createFromLangcode('es')->save();

    $config = $this->config('language.negotiation');
    $config->set('url.prefixes', ['en' => 'en', 'es' => 'es'])->save();

    $this->container->get('kernel')->rebuildContainer();
  }

  /**
   * {@inheritdoc}
   *
   * @dataProvider simplenewsSubscriberActionUrlTokensDataProvider
   */
  public function testSimplenewsSubscriberActionUrlTokens($token, $action, $subscriber_langcode, $expected_uri_pattern) {
    parent::testSimplenewsSubscriberActionUrlTokens($token, $action, $subscriber_langcode, $expected_uri_pattern);
  }

  public function simplenewsSubscriberActionUrlTokensDataProvider() {
    // $token, $action, $subscriber_langcode, $expected_uri_pattern.
    return [
      ['unsubscribe-url', 'remove', NULL, 'base:/en/simplenews/remove/%subscriber_id/%newsletter_id/%request_time/%hash'],
      ['confirm-url', 'confirm', NULL, 'base:/en/simplenews/confirm/%subscriber_id/%request_time/%hash'],
      ['manage-url', 'manage', NULL, 'base:/en/simplenews/manage/%subscriber_id/%request_time/%hash'],
      ['unsubscribe-url', 'remove', 'es', 'base:/es/simplenews/remove/%subscriber_id/%newsletter_id/%request_time/%hash'],
      ['confirm-url', 'confirm', 'es', 'base:/es/simplenews/confirm/%subscriber_id/%request_time/%hash'],
      ['manage-url', 'manage', 'es', 'base:/es/simplenews/manage/%subscriber_id/%request_time/%hash'],
    ];
  }

  /**
   * {@inheritdoc}
   *
   * @dataProvider simplenewsNewsletterNameTokenDataProvider
   */
  public function testSimplenewsNewsletterNameToken($newsletter_name, $subscriber_langcode, $expected_name) {
    if ($subscriber_langcode === 'es') {
      if ($newsletter_name === 'Example') {
        $this->addTranslationForNewsletter($subscriber_langcode, 'Ejemplo');
      }

      $this->addTranslationForString('Unassigned newsletter', 'Boletín informativo no asignado', $subscriber_langcode);
    }

    parent::testSimplenewsNewsletterNameToken($newsletter_name, $subscriber_langcode, $expected_name);
  }

  /**
   * {@inheritdoc}
   */
  public function simplenewsNewsletterNameTokenDataProvider() {
    return [
      [NULL, NULL, 'Unassigned newsletter'],
      ['', NULL, 'Unassigned newsletter'],
      ['Example', NULL, 'Example'],
      [NULL, 'es', 'Boletín informativo no asignado'],
      ['', 'es', 'Boletín informativo no asignado'],
      ['Example', 'es', 'Ejemplo'],
    ];
  }

  /**
   * Adds translation for newsletter.
   *
   * @return void
   */
  protected function addTranslationForNewsletter($langcode, $name) {
    $translation = $this->languageManager->getLanguageConfigOverride($langcode, $this->newsletter->getConfigDependencyName());
    $translation->set('name', $name);
    $translation->save();
  }

  /**
   * Adds translation for strings.
   *
   * @return void
   */
  protected function addTranslationForString($source_string, $translated_string, $langcode) {
    $locale_storage = $this->container->get('locale.storage');
    $source = $locale_storage->findString(['source' => $source_string]);
    if ($source === NULL) {
      $source = $locale_storage->createString([
        'source' => $source_string,
      ])->save();
    }

    $locale_storage->createTranslation([
      'lid' => $source->lid,
      'language' => $langcode,
      'translation' => $translated_string,
    ])->save();
  }

}

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

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