.../Kernel/EntityEmbedFilterTranslationTest.php | 64 +++++++--------------- 1 file changed, 20 insertions(+), 44 deletions(-) diff --git a/tests/src/Kernel/EntityEmbedFilterTranslationTest.php b/tests/src/Kernel/EntityEmbedFilterTranslationTest.php index 7d55fb2..0863a7a 100644 --- a/tests/src/Kernel/EntityEmbedFilterTranslationTest.php +++ b/tests/src/Kernel/EntityEmbedFilterTranslationTest.php @@ -30,38 +30,10 @@ class EntityEmbedFilterTranslationTest extends EntityEmbedFilterTestBase { $this->node = $this->container->get('entity.manager') ->getStorage('node') ->load($this->node->id()); - } - /** - * Test translation title. - */ - public function testFilterTranslationTitle() { - $content = $this->createEmbedCode([ - 'data-entity-type' => 'node', - 'data-entity-uuid' => 'e7a3e1fe-b69b-417e-8ee4-c80cb7640e63', - 'data-view-mode' => 'teaser', - 'data-entity-embed-display' => 'entity_reference:entity_reference_label', - 'data-entity-embed-settings' => '{"link":"0"}', - ]); - - // Assert that title of embedded entity is unaffected when embedded entity - // lacks a matching translation. - $expected_title = $this->node->getTitle(); - $this->applyFilter($content, 'en'); - $this->assertRaw($expected_title); - $this->applyFilter($content, 'pt-br'); - $this->assertRaw($expected_title); - - // Translate the embedded entity to the same language as the context (i.e. - // the language of the host entity). $this->node->addTranslation('pt-br') ->setTitle('Embed em portugues') ->save(); - - // Assert that title is translated when embedded entity has a matching - // translation. - $this->applyFilter($content, 'pt-br'); - $this->assertRaw($this->node->getTranslation('pt-br')->getTitle()); } /** @@ -69,22 +41,14 @@ class EntityEmbedFilterTranslationTest extends EntityEmbedFilterTestBase { * * @dataProvider providerTestFilterTranslations */ - public function testFilterTranslations($text_langcode, $data_langcode, $expected_title_langcode) { - $text = $this->createEmbedCode( [ + public function testFilterTranslations($text_langcode, array $additional_attributes, $expected_title_langcode) { + $text = $this->createEmbedCode([ 'data-entity-type' => 'node', 'data-entity-uuid' => 'e7a3e1fe-b69b-417e-8ee4-c80cb7640e63', 'data-view-mode' => 'teaser', 'data-entity-embed-display' => 'entity_reference:entity_reference_label', 'data-entity-embed-settings' => '{"link":"0"}', - 'data-langcode' => $data_langcode, - ]); - - // Translate the embedded entity to the same language as the context (i.e. - // the language of the host entity). - $this->node->addTranslation('pt-br') - ->setTitle('Embed em portugues') - ->save(); - + ] + $additional_attributes); $this->applyFilter($text, $text_langcode); $this->assertRaw($this->node->getTranslation($expected_title_langcode)->getTitle()); } @@ -93,14 +57,26 @@ class EntityEmbedFilterTranslationTest extends EntityEmbedFilterTestBase { * Data provider for testFilterTranslations. */ public function providerTestFilterTranslations() { + $embedded_entity_translation_languages = ['en', 'pt-br']; + foreach (['en', 'pt-br', 'nl'] as $text_langcode) { + // When no `data-langcode` attribute is specified, the text language + // (which is set to the host entity's language) is respected. If that + // translation does not exist, it falls back to the default translation of + // the embedded entity. + yield ["text_langcode=$text_langcode (✅) ⇒ $text_langcode" => + $text_langcode, + [], + in_array($text_langcode, $embedded_entity_translation_languages) ? $text_langcode : 'en', + ]; + // When the embedded entity has a translation for the language code in the // `data-langcode` attribute, that translation is used, regardless of the // language of the text (which is set to the language of the host entity). - foreach (['en', 'pt-br'] as $data_langcode) { + foreach ($embedded_entity_translation_languages as $data_langcode) { yield "text_langcode=$text_langcode (✅); data-langcode=$data_langcode (✅) ⇒ $data_langcode" => [ $text_langcode, - $data_langcode, + ['data-langcode' => $data_langcode], $data_langcode, ]; } @@ -110,15 +86,15 @@ class EntityEmbedFilterTranslationTest extends EntityEmbedFilterTestBase { // of the embedded entity. yield "text_langcode=$text_langcode (✅); data-langcode=nl (🚫) ⇒ en" => [ $text_langcode, - 'nl', + ['data-langcode' => 'nl'], 'en', ]; // When specifying a invalid language code, it falls back to the default // translation of the embedded entity. yield "text_langcode=$text_langcode (✅); data-langcode=non-existing-and-even-invalid-langcode (🚫) ⇒ en" => [ - 'text_langcode' => $text_langcode, - 'data-langcode' => 'non-existing-and-even-invalid-langcode', + $text_langcode, + ['data-langcode' => 'non-existing-and-even-invalid-langcode'], 'en', ]; }