Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
MultilingualBlockTest.php 7.29 KiB
Newer Older
<?php

declare(strict_types = 1);

namespace Drupal\Tests\oe_whitelabel\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Symfony\Component\DomCrawler\Crawler;

/**
 * Tests the OE Multilingual Block rendering.
 */
class MultilingualBlockTest extends KernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'block',
    'content_translation',
    'ctools',
    'language',
    'locale',
    'oe_bootstrap_theme_helper',
    'oe_multilingual',
    'path',
    'path_alias',
    'system',
    'token',
    'ui_patterns',
    'ui_patterns_library',
    'user',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    /** @var \Drupal\Core\Extension\ThemeInstallerInterface $theme_installer */
    \Drupal::service('theme_installer')->install(['oe_whitelabel']);

    \Drupal::configFactory()
      ->getEditable('system.theme')
      ->set('default', 'oe_whitelabel')
      ->save();

    $this->container->set('theme.registry', NULL);
drishu's avatar
drishu committed
    $this->installSchema('locale', [
      'locales_location',
      'locales_target',
      'locales_source',
      'locale_file',
    ]);
drishu's avatar
drishu committed
    $this->installSchema('user', ['users_data']);
drishu's avatar
drishu committed
      'locale',
drishu's avatar
drishu committed
      'content_translation',
drishu's avatar
drishu committed
    $this->container->get('module_handler')->loadInclude('oe_multilingual', 'install');
    oe_multilingual_install(FALSE);

    \Drupal::service('kernel')->rebuildContainer();
  }

  /**
   * Tests the rendering of blocks.
   */
  public function testBlockRendering(): void {
    $entity_type_manager = $this->container
      ->get('entity_type.manager')
      ->getStorage('block');
    $entity = $entity_type_manager->load('oe_whitelabel_language_switcher');
    $builder = \Drupal::entityTypeManager()->getViewBuilder('block');
    $build = $builder->view($entity, 'block');
    $render = $this->container->get('renderer')->renderRoot($build);
    $crawler = new Crawler($render->__toString());

    $block = $crawler->filter('div.language-switcher');
drishu's avatar
drishu committed
    $this->assertCount(1, $block);
    $link = $crawler->filter('div.language-switcher > a');
drishu's avatar
drishu committed
    $this->assertSame('English', trim($link->text()));
    $this->assertSame('http://localhost/en/%3Cnone%3E', $link->attr('href'));
    $title = $crawler->filter('h5#languageeModalLabel');
    $this->assertSame('Select your language', $title->text());
    $button_header = $crawler->filter('button.btn-close');
    $this->assertSame('Close', $button_header->attr('aria-label'));
    $button_close = $crawler->filter('button.btn.btn-secondary');
    $this->assertSame('Close', $button_close->text());
    $link_language = $crawler->filter('a#link_bg');
    $this->assertSame('http://localhost/bg/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('български', $link_language->text());
    $link_language = $crawler->filter('a#link_cs');
    $this->assertSame('http://localhost/cs/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('čeština', $link_language->text());
    $link_language = $crawler->filter('a#link_da');
    $this->assertSame('http://localhost/da/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('dansk', $link_language->text());
    $link_language = $crawler->filter('a#link_de');
    $this->assertSame('http://localhost/de/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('Deutsch', $link_language->text());
    $link_language = $crawler->filter('a#link_et');
    $this->assertSame('http://localhost/et/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('eesti', $link_language->text());
    $link_language = $crawler->filter('a#link_el');
    $this->assertSame('http://localhost/el/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('ελληνικά', $link_language->text());
    $link_language = $crawler->filter('a#link_en');
    $this->assertSame('http://localhost/en/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('English', $link_language->text());
    $link_language = $crawler->filter('a#link_es');
    $this->assertSame('http://localhost/es/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('español', $link_language->text());
    $link_language = $crawler->filter('a#link_fr');
    $this->assertSame('http://localhost/fr/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('français', $link_language->text());
    $link_language = $crawler->filter('a#link_ga');
    $this->assertSame('http://localhost/ga/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('Gaeilge', $link_language->text());
    $link_language = $crawler->filter('a#link_hr');
    $this->assertSame('http://localhost/hr/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('hrvatski', $link_language->text());
    $link_language = $crawler->filter('a#link_it');
    $this->assertSame('http://localhost/it/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('italiano', $link_language->text());
    $link_language = $crawler->filter('a#link_lt');
    $this->assertSame('http://localhost/lt/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('lietuvių', $link_language->text());
    $link_language = $crawler->filter('a#link_lv');
    $this->assertSame('http://localhost/lv/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('latviešu', $link_language->text());
    $link_language = $crawler->filter('a#link_hu');
    $this->assertSame('http://localhost/hu/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('magyar', $link_language->text());
    $link_language = $crawler->filter('a#link_mt');
    $this->assertSame('http://localhost/mt/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('Malti', $link_language->text());
    $link_language = $crawler->filter('a#link_nl');
    $this->assertSame('http://localhost/nl/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('Nederlands', $link_language->text());
    $link_language = $crawler->filter('a#link_pl');
    $this->assertSame('http://localhost/pl/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('polski', $link_language->text());
    $link_language = $crawler->filter('a#link_pt-pt');
    $this->assertSame('http://localhost/pt/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('português', $link_language->text());
    $link_language = $crawler->filter('a#link_ro');
    $this->assertSame('http://localhost/ro/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('română', $link_language->text());
    $link_language = $crawler->filter('a#link_sk');
    $this->assertSame('http://localhost/sk/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('slovenčina', $link_language->text());
    $link_language = $crawler->filter('a#link_sl');
    $this->assertSame('http://localhost/sl/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('slovenščina', $link_language->text());
    $link_language = $crawler->filter('a#link_fi');
    $this->assertSame('http://localhost/fi/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('suomi', $link_language->text());
    $link_language = $crawler->filter('a#link_sv');
    $this->assertSame('http://localhost/sv/%3Cnone%3E', $link_language->attr('href'));
    $this->assertSame('svenska', $link_language->text());