function EntityTranslationTest::testEntityConstructor
Tests the entity constructor works with translations.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityTranslationTest.php, line 818
Class
- EntityTranslationTest
- Tests entity translation functionality.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testEntityConstructor() : void {
$default_langcode = $this->languageManager
->getDefaultLanguage()
->getId();
$langcodes = array_unique(array_merge($this->langcodes ?? [], [
$default_langcode,
]));
$this->assertGreaterThan(1, count($langcodes));
$bundle = $this->randomMachineName();
EntityTestHelper::createBundle($bundle);
$field_name = strtolower($this->randomMachineName());
$field_storage = FieldStorageConfig::create([
'field_name' => $field_name,
'entity_type' => 'entity_test',
'type' => 'text',
'cardinality' => 1,
]);
$field_storage->save();
$field_config = FieldConfig::create([
'field_name' => $field_name,
'entity_type' => 'entity_test',
'bundle' => $bundle,
'translatable' => TRUE,
]);
$field_config->save();
$values = [];
foreach ($langcodes as $langcode) {
$index = $langcode == $default_langcode ? LanguageInterface::LANGCODE_DEFAULT : $langcode;
$values[$field_name][$index][0]['value'] = $this->randomString();
}
$entity = new EntityTest($values, 'entity_test', $bundle, $langcodes);
$expected_languages = array_flip($langcodes);
foreach ($entity->getTranslationLanguages() as $language) {
/** @var \Drupal\Core\Language\LanguageInterface $language */
$this->assertTrue(isset($expected_languages[$language->getId()]));
unset($expected_languages[$language->getId()]);
}
$this->assertEmpty($expected_languages);
foreach ($langcodes as $langcode) {
$index = $langcode == $default_langcode ? LanguageInterface::LANGCODE_DEFAULT : $langcode;
$this->assertEquals($entity->getTranslation($langcode)->{$field_name}->value, $values[$field_name][$index][0]['value']);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.