From 94185c9f218c06dcc02b7011232ce9b0dfd758bb Mon Sep 17 00:00:00 2001 From: drishu <aszilagyi@live.com> Date: Fri, 18 Mar 2022 12:10:37 +0200 Subject: [PATCH] OEL-1167: Fixup test. --- .../Kernel/ContentLanguageSwitcherTest.php | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php index 421aa86a..33881e78 100644 --- a/tests/src/Kernel/ContentLanguageSwitcherTest.php +++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php @@ -13,6 +13,7 @@ use Symfony\Component\HttpFoundation\Request; * Test content language switcher rendering. */ class ContentLanguageSwitcherTest extends KernelTestBase { + /** * {@inheritdoc} */ @@ -84,7 +85,6 @@ class ContentLanguageSwitcherTest extends KernelTestBase { 'title' => 'Hello, world!', 'type' => 'oe_demo_translatable_page', ]); - /** @var \Drupal\Core\Entity\EntityInterface $translation */ $node->addTranslation('es', ['title' => '¡Hola mundo!'])->save(); @@ -96,7 +96,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase { $block_manager = \Drupal::service('plugin.manager.block'); $config = [ 'id' => 'oe_multilingual_content_language_switcher', - 'label' => 'OpenEuropa Content Language Switcher', + 'label' => 'Content language switcher', 'provider' => 'oe_multilingual', 'label_display' => '0', ]; @@ -104,6 +104,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase { /** @var \Drupal\Core\Block\BlockBase $plugin_block */ $plugin_block = $block_manager->createInstance('oe_multilingual_content_language_switcher', $config); $render = $plugin_block->build(); + $html = (string) $this->container->get('renderer')->renderRoot($render); $crawler = new Crawler($html); @@ -115,8 +116,11 @@ class ContentLanguageSwitcherTest extends KernelTestBase { // will have it. $this->assertUnavailableLanguage($crawler, 'This page is not available in българÑки.'); + // Make sure that selected language is properly rendered. + $this->assertSelectedLanguage($crawler, 'English'); + // Make sure that available languages are properly rendered. - $this->assertTranslationLinks($crawler, ['español', 'English']); + $this->assertTranslationLinks($crawler, ['español']); // Remove the spanish translation. $node->removeTranslation('es'); @@ -136,12 +140,6 @@ class ContentLanguageSwitcherTest extends KernelTestBase { // Verify that the content has been rendered in the fallback language. $this->assertSelectedLanguage($crawler, 'English'); - // Simulate a request to the canonical route of the node base language. - $this->setCurrentRequest('/node/' . $node->id()); - - $html = (string) $this->container->get('renderer')->renderRoot($render); - $crawler = new Crawler($html); - // Make sure that no language links are rendered. $this->assertTranslationLinks($crawler, []); } @@ -155,7 +153,8 @@ class ContentLanguageSwitcherTest extends KernelTestBase { * The label of the language. */ protected function assertSelectedLanguage(Crawler $crawler, string $expected): void { - $actual = $crawler->filter('#dropdown-languages > div > a')->text(); + // The selected language link will contain a svg, so we target that. + $actual = $crawler->filter('#dropdown-languages > div > a > svg')->parents()->first()->text(); $this->assertEquals($expected, trim($actual)); } @@ -182,6 +181,10 @@ class ContentLanguageSwitcherTest extends KernelTestBase { */ protected function assertTranslationLinks(Crawler $crawler, array $expected): void { $elements = $crawler->filter('#dropdown-languages > div > a'); + // Filter out the selected language. + $elements = $elements->reduce(function (Crawler $crawler) { + return $crawler->filter('svg')->count() === 0; + }); $this->assertSameSize($expected, $elements); $actual = array_column(iterator_to_array($elements), 'nodeValue'); -- GitLab