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

Skip to content
Snippets Groups Projects
Commit 54aaa42a authored by escuriola's avatar escuriola
Browse files

OEL-1160: Corporate logo testing.

parent a7b3fa6f
No related branches found
No related tags found
1 merge request!71OEL-1160: Header refactor.
<?php
declare(strict_types = 1);
namespace Drupal\Tests\oe_whitelabel_helper\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Symfony\Component\DomCrawler\Crawler;
use Drupal\language\Entity\ConfigurableLanguage;
/**
* Tests the Corporate Logo Block rendering.
*/
class CorporateLogoBlockTest extends KernelTestBase {
/**
* Languages.
*
* @var array
*/
protected $languages = [];
/**
* {@inheritdoc}
*/
protected static $modules = [
'block',
'language',
'oe_bootstrap_theme_helper',
'oe_whitelabel_helper',
'system',
'ui_patterns',
'ui_patterns_library',
'user',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig(['language']);
$this->installEntitySchema('configurable_language');
\Drupal::service('theme_installer')->install(['oe_whitelabel']);
\Drupal::configFactory()
->getEditable('system.theme')
->set('default', 'oe_whitelabel')
->save();
$this->container->set('theme.registry', NULL);
}
/**
* Tests the rendering of blocks.
*
* @param string $lang
* Language code.
*
* @dataProvider providerTestLogoBlockRendering
*/
public function testLogoBlockRendering(string $lang): void {
if ($lang !== 'en') {
$this->setLanguageByCode($lang);
}
// Assert EC logo.
$entity_type_manager = $this->container
->get('entity_type.manager')
->getStorage('block');
$entity = $entity_type_manager->create([
'id' => 'sitebranding',
'theme' => 'oe_whitelabel',
'plugin' => 'system_branding_block',
'settings' => [
'id' => 'system_branding_block',
'label' => 'Site Branding',
'provider' => 'system',
'label_display' => '0',
],
]);
$entity->save();
$builder = \Drupal::entityTypeManager()->getViewBuilder('block');
$build = $builder->view($entity, 'block');
$render = $this->container->get('renderer')->renderRoot($build);
$crawler = new Crawler($render->__toString());
$logo = $crawler->filter('img');
$this->assertCount(1, $logo);
$expected = "/themes/contrib/oe_bootstrap_theme/assets/logos/ec/logo-ec--{$lang}.svg";
$this->assertSame($expected, $logo->attr('src'));
// Assert EU logo.
$entity_type_manager = $this->container
->get('entity_type.manager')
->getStorage('block');
$entity = $entity_type_manager->create([
'id' => 'sitebranding',
'theme' => 'oe_whitelabel',
'plugin' => 'system_branding_block',
'settings' => [
'id' => 'system_branding_block',
'label' => 'Corporate Logo Block',
'provider' => 'system',
'label_display' => '0',
],
]);
$entity->save();
$builder = \Drupal::entityTypeManager()->getViewBuilder('block');
$build = $builder->view($entity, 'block');
$render = $this->container->get('renderer')->renderRoot($build);
$crawler = new Crawler($render->__toString());
$logo = $crawler->filter('img');
$this->assertCount(1, $logo);
$expected = "/themes/contrib/oe_bootstrap_theme/assets/logos/eu/logo-eu--{$lang}.svg";
$this->assertSame($expected, $logo->attr('src'));
$picture = $crawler->filter('picture');
$this->assertCount(1, $picture);
$source = $crawler->filter('source');
$expected = "/themes/contrib/oe_bootstrap_theme/assets/logos/eu/mobile/logo-eu--{$lang}.svg";
$this->assertSame($expected, $source->attr('srcset'));
}
/**
* Sets language from lang code.
*
* @param string $language_code
* The language code.
*/
protected function setLanguageByCode(string $language_code) :void {
$this->languages[$language_code] = ConfigurableLanguage::createFromLangcode($language_code);
$this->languages[$language_code]->save();
$this->languageManager = $this->container->get('language_manager');
$this->languageManager->reset();
\Drupal::service('language.default')->set($this->languages[$language_code]);
}
/**
* Provides test data for ::providerTestLogoBlockRendering().
*
* @return array[]
* Test data.
*/
public function providerTestLogoBlockRendering(): array {
return [
'default' => [
'en',
],
'german' => [
'de',
],
];
}
}
<?php
declare(strict_types = 1);
namespace Drupal\Tests\oe_whitelabel\Functional;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\BrowserTestBase;
/**
* Tests that corporate logos are displayed correctly.
*/
class CorporateHeaderLogosTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected static $modules = [
'language',
'oe_whitelabel_helper',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
// Enable and set OpenEuropa Theme as default.
\Drupal::service('theme_installer')->install(['oe_whitelabel']);
\Drupal::configFactory()
->getEditable('system.theme')
->set('default', 'oe_whitelabel')
->save();
\Drupal::service('module_installer')->install(['language']);
$language = ConfigurableLanguage::createFromLangcode('es');
$language->save();
// Rebuild the ui_pattern definitions to collect the ones provided by
// oe_whitelabel itself.
\Drupal::service('plugin.manager.ui_patterns')->clearCachedDefinitions();
}
/**
* Tests that the breadcrumbs are cached correctly.
*/
public function testCorporateHeaderLogos(): void {
// Create a user that does have permission to administer theme settings.
$user = $this->drupalCreateUser(['administer themes']);
$this->drupalLogin($user);
$this->drupalGet('<front>');
$page = $this->getSession()->getPage();
$assert_session = $this->assertSession();
$assert_session->elementExists('css', 'header.bcl-header.bcl-header--neutral');
$assert_session->elementExists('css', 'img[alt="Home logo"]');
// Visit theme administration page.
$this->drupalGet('/admin/appearance/settings/oe_whitelabel');
// Select EU component library and save configuration.
$page->selectFieldOption('Component library', 'European Union');
$page->pressButton('Save configuration');
$this->drupalGet('<front>');
$assert_session->elementExists('css', 'header.bcl-header.bcl-header--eu');
$assert_session->elementExists('css', 'header > nav > div > div > a[href="https://european-union.europa.eu/index_en"]');
$assert_session->elementExists('css', 'picture > source[srcset="/build/themes/contrib/oe_bootstrap_theme/assets/logos/eu/mobile/logo-eu--en.svg"]');
$assert_session->elementExists('css', 'picture > img[src="/build/themes/contrib/oe_bootstrap_theme/assets/logos/eu/logo-eu--en.svg"]');
$this->drupalGet('es/');
$assert_session->elementExists('css', 'header.bcl-header.bcl-header--eu');
$assert_session->elementExists('css', 'header > nav > div > div > a[href="https://european-union.europa.eu/index_es"]');
$assert_session->elementExists('css', 'picture > source[srcset="/build/themes/contrib/oe_bootstrap_theme/assets/logos/eu/mobile/logo-eu--es.svg"]');
$assert_session->elementExists('css', 'picture > img[src="/build/themes/contrib/oe_bootstrap_theme/assets/logos/eu/logo-eu--es.svg"]');
// Visit theme administration page.
$this->drupalGet('/admin/appearance/settings/oe_whitelabel');
// Select EC component library and save configuration.
$page->selectFieldOption('Component library', 'European Commission');
$page->pressButton('Save configuration');
$this->drupalGet('<front>');
$assert_session->elementExists('css', 'header.bcl-header.bcl-header--ec');
$assert_session->elementExists('css', 'header > nav > div > div > a[href="https://ec.europa.eu/info/index_en"]');
$assert_session->elementExists('css', 'img[src="/build/themes/contrib/oe_bootstrap_theme/assets/logos/ec/logo-ec--en.svg"]');
$this->drupalGet('es/');
$assert_session->elementExists('css', 'header.bcl-header.bcl-header--ec');
$assert_session->elementExists('css', 'header > nav > div > div > a[href="https://ec.europa.eu/info/index_es"]');
$assert_session->elementExists('css', 'img[src="/build/themes/contrib/oe_bootstrap_theme/assets/logos/ec/logo-ec--es.svg"]');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment