public function FieldTranslationSqlStorageTest::testFieldSqlStorage in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Entity/FieldTranslationSqlStorageTest.php \Drupal\system\Tests\Entity\FieldTranslationSqlStorageTest::testFieldSqlStorage()
Tests field SQL storage.
File
- core/
modules/ system/ src/ Tests/ Entity/ FieldTranslationSqlStorageTest.php, line 24 - Contains \Drupal\system\Tests\Entity\FieldTranslationSqlStorageTest.
Class
- FieldTranslationSqlStorageTest
- Tests Field translation SQL Storage.
Namespace
Drupal\system\Tests\EntityCode
public function testFieldSqlStorage() {
$entity_type = 'entity_test_mul';
$controller = $this->entityManager
->getStorage($entity_type);
$values = array(
$this->fieldName => $this
->randomMachineName(),
$this->untranslatableFieldName => $this
->randomMachineName(),
);
$entity = $controller
->create($values);
$entity
->save();
// Tests that when changing language field language codes are still correct.
$langcode = $this->langcodes[0];
$entity->langcode->value = $langcode;
$entity
->save();
$this
->assertFieldStorageLangcode($entity, 'Field language successfully changed from language neutral.');
$langcode = $this->langcodes[1];
$entity->langcode->value = $langcode;
$entity
->save();
$this
->assertFieldStorageLangcode($entity, 'Field language successfully changed.');
$langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
$entity->langcode->value = $langcode;
$entity
->save();
$this
->assertFieldStorageLangcode($entity, 'Field language successfully changed to language neutral.');
// Test that after switching field translatability things keep working as
// before.
$this
->toggleFieldTranslatability($entity_type, $entity_type);
$entity = $this
->reloadEntity($entity);
foreach (array(
$this->fieldName,
$this->untranslatableFieldName,
) as $field_name) {
$this
->assertEqual($entity
->get($field_name)->value, $values[$field_name], 'Field language works as expected after switching translatability.');
}
// Test that after disabling field translatability translated values are not
// loaded.
$this
->toggleFieldTranslatability($entity_type, $entity_type);
$entity = $this
->reloadEntity($entity);
$entity->langcode->value = $this->langcodes[0];
$translation = $entity
->addTranslation($this->langcodes[1]);
$translated_value = $this
->randomMachineName();
$translation
->get($this->fieldName)->value = $translated_value;
$translation
->save();
$this
->toggleFieldTranslatability($entity_type, $entity_type);
$entity = $this
->reloadEntity($entity);
$this
->assertEqual($entity
->getTranslation($this->langcodes[1])
->get($this->fieldName)->value, $values[$this->fieldName], 'Existing field translations are not loaded for untranslatable fields.');
}