diff --git a/tests/src/Kernel/MultilingualTest.php b/tests/src/Kernel/MultilingualTest.php new file mode 100644 index 0000000..11530cd --- /dev/null +++ b/tests/src/Kernel/MultilingualTest.php @@ -0,0 +1,217 @@ +baseLangCode = "de"; + $this->translateToLangcode = "fr"; + $this->nodeType = "test_article"; + $this->nodeTitle = "Test Node DE"; + $this->nodeTitleTranslated = "Test Node FR"; + $this->categoryName = "Category DE"; + $this->categoryNameTranslated = "Category FR"; + $this->entityReferenceFieldName ="category"; + + ConfigurableLanguage::createFromLangcode($this->translateToLangcode)->save(); + + $this->installEntitySchema('user'); + $this->installEntitySchema('node'); + $this->installEntitySchema('taxonomy_term'); + + $vocabulary = Vocabulary::create([ + 'name' => 'Category', + 'vid' => 'category', + 'langcode' => $this->baseLangCode, + 'translatable' => TRUE + ]); + $vocabulary->save(); + $this->vocab = $vocabulary; + + $node_type = NodeType::create([ + 'type' => $this->nodeType, + 'translatable' => TRUE + ]); + $node_type->save(); + + $term = Term::create([ + 'parent' => [], + 'name' => $this->categoryName, + 'vid' => $this->vocab->id(), + 'langcode' => $this->baseLangCode + ]); + $term->save(); + + $term->addTranslation($this->translateToLangcode, [ + "name" => $this->categoryNameTranslated + ]); + $term->save(); + $this->term = $term; + + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_' . $this->entityReferenceFieldName, + 'entity_type' => 'node', + 'type' => 'entity_reference', + 'settings' => array( + 'target_type' => 'taxonomy_term' + ), + ]); + $field_storage->save(); + + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => $this->nodeType, + ]); + $field->save(); + $this->field = $field; + + $article = Node::create([ + 'title' => $this->nodeTitle, + 'type' => $this->nodeType, + 'langcode' => $this->baseLangCode, + 'field_'.$this->entityReferenceFieldName => [ + 'entity' => $this->term + ], + ]); + + $article->addTranslation($this->translateToLangcode, [ + 'title' => $this->nodeTitleTranslated + ]); + $article->save(); + + $this->article = $article; + + /** @var \Drupal\user\RoleInterface $role */ + $role = Role::create(['id' => RoleInterface::ANONYMOUS_ID]); + $role->grantPermission('access content'); + $role->save(); + + entity_create('entity_view_mode', [ + 'targetEntityType' => 'node', + 'id' => "node.token", + 'status' => TRUE, + 'label' => 'Token', + ])->save(); + $entity_display = entity_get_display('node', $this->nodeType, 'token'); + $entity_display->setComponent('field_' . $this->entityReferenceFieldName, [ + 'type' => 'entity_reference_label', + 'settings' => [ + 'link' => FALSE, + ] + ]); + $entity_display->save(); + } + + public function testFieldTokenMultilingual() { + + $tokens = [ + 'title' => $this->nodeTitle, + 'field_'.$this->entityReferenceFieldName => $this->categoryName, + ]; + + $this->assertTokens("node",['node' => $this->article], $tokens); + + $tokens = [ + 'title' => $this->nodeTitleTranslated, + 'field_'.$this->entityReferenceFieldName => $this->categoryNameTranslated + ]; + + $this->assertTokens("node",['node' => $this->article->getTranslation($this->translateToLangcode)], $tokens); + + } +}