function EntityTranslationTest::doTestLanguageChange
Same name in other branches
- 9 core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php \Drupal\KernelTests\Core\Entity\EntityTranslationTest::doTestLanguageChange()
- 8.9.x core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php \Drupal\KernelTests\Core\Entity\EntityTranslationTest::doTestLanguageChange()
- 11.x core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php \Drupal\KernelTests\Core\Entity\EntityTranslationTest::doTestLanguageChange()
Executes the entity language change test for the given entity type.
Parameters
string $entity_type: The entity type to run the tests with.
1 call to EntityTranslationTest::doTestLanguageChange()
- EntityTranslationTest::testLanguageChange in core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityTranslationTest.php - Tests that changing entity language does not break field language.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityTranslationTest.php, line 731
Class
- EntityTranslationTest
- Tests entity translation functionality.
Namespace
Drupal\KernelTests\Core\EntityCode
protected function doTestLanguageChange($entity_type) {
$langcode_key = $this->entityTypeManager
->getDefinition($entity_type)
->getKey('langcode');
$controller = $this->entityTypeManager
->getStorage($entity_type);
$langcode = $this->langcodes[0];
// Check that field languages match entity language regardless of field
// translatability.
$values = [
$langcode_key => $langcode,
$this->fieldName => $this->randomMachineName(),
$this->untranslatableFieldName => $this->randomMachineName(),
];
$entity = $controller->create($values);
foreach ([
$this->fieldName,
$this->untranslatableFieldName,
] as $field_name) {
$this->assertEquals($langcode, $entity->get($field_name)
->getLangcode(), 'Field language works as expected.');
}
// Check that field languages keep matching entity language even after
// changing it.
$langcode = $this->langcodes[1];
$entity->{$langcode_key}->value = $langcode;
foreach ([
$this->fieldName,
$this->untranslatableFieldName,
] as $field_name) {
$this->assertEquals($langcode, $entity->get($field_name)
->getLangcode(), 'Field language works as expected after changing entity language.');
}
// Check that entity translation does not affect the language of original
// field values and untranslatable ones.
$langcode = $this->langcodes[0];
$entity->addTranslation($this->langcodes[2], [
$this->fieldName => $this->randomMachineName(),
]);
$entity->{$langcode_key}->value = $langcode;
foreach ([
$this->fieldName,
$this->untranslatableFieldName,
] as $field_name) {
$this->assertEquals($langcode, $entity->get($field_name)
->getLangcode(), 'Field language works as expected after translating the entity and changing language.');
}
// Check that setting the default language to an existing translation
// language causes an exception to be thrown.
try {
$entity->{$langcode_key}->value = $this->langcodes[2];
$this->fail('An exception is thrown when setting the default language to an existing translation language');
} catch (\InvalidArgumentException $e) {
// Expected exception; just continue testing.
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.