class ContentTranslationEntityBundleInfoTest
Same name and namespace in other branches
- 11.x core/modules/content_translation/tests/src/Kernel/ContentTranslationEntityBundleInfoTest.php \Drupal\Tests\content_translation\Kernel\ContentTranslationEntityBundleInfoTest
- 10 core/modules/content_translation/tests/src/Kernel/ContentTranslationEntityBundleInfoTest.php \Drupal\Tests\content_translation\Kernel\ContentTranslationEntityBundleInfoTest
- 8.9.x core/modules/content_translation/tests/src/Kernel/ContentTranslationEntityBundleInfoTest.php \Drupal\Tests\content_translation\Kernel\ContentTranslationEntityBundleInfoTest
Tests the Content Translation bundle info logic.
@group content_translation
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertLegacyTrait, \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\content_translation\Kernel\ContentTranslationEntityBundleInfoTest extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of ContentTranslationEntityBundleInfoTest
File
-
core/
modules/ content_translation/ tests/ src/ Kernel/ ContentTranslationEntityBundleInfoTest.php, line 16
Namespace
Drupal\Tests\content_translation\KernelView source
class ContentTranslationEntityBundleInfoTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'system',
'node',
'user',
'language',
'content_translation_test',
'content_translation',
'entity_test',
];
/**
* The content translation manager.
*
* @var \Drupal\content_translation\ContentTranslationManagerInterface
*/
protected $contentTranslationManager;
/**
* The bundle info service.
*
* @var \Drupal\Core\Entity\EntityTypeBundleInfo
*/
protected $bundleInfo;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->contentTranslationManager = $this->container
->get('content_translation.manager');
$this->bundleInfo = $this->container
->get('entity_type.bundle.info');
$this->installEntitySchema('entity_test_mul');
ConfigurableLanguage::createFromLangcode('it')->save();
}
/**
* Tests that modules can know whether bundles are translatable.
*/
public function testHookInvocationOrder() {
$this->contentTranslationManager
->setEnabled('entity_test_mul', 'entity_test_mul', TRUE);
$this->bundleInfo
->clearCachedBundles();
$this->bundleInfo
->getAllBundleInfo();
// Verify that the test module comes first in the module list, which would
// normally make its hook implementation to be invoked first.
/** @var \Drupal\Core\Extension\ModuleHandlerInterface $module_handler */
$module_handler = $this->container
->get('module_handler');
$module_list = $module_handler->getModuleList();
$expected_modules = [
'content_translation_test',
'content_translation',
];
$actual_modules = array_keys(array_intersect_key($module_list, array_flip($expected_modules)));
$this->assertEquals($expected_modules, $actual_modules);
// Check that the "content_translation_test" hook implementation has access
// to the "translatable" bundle info property.
/** @var \Drupal\Core\State\StateInterface $state */
$state = $this->container
->get('state');
$this->assertTrue($state->get('content_translation_test.translatable'));
}
/**
* Tests that field synchronization is skipped for disabled bundles.
*/
public function testFieldSynchronizationWithDisabledBundle() {
$entity = EntityTestMul::create();
$entity->save();
/** @var \Drupal\Core\Entity\ContentEntityInterface $translation */
$translation = $entity->addTranslation('it');
$translation->save();
$this->assertTrue($entity->isTranslatable());
}
/**
* Tests that bundle translation settings are propagated on creation.
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function testBundleClearOnLanguageContentSettingInsert() {
$node = $this->getBundledNode();
$this->assertFalse($node->isTranslatable());
$this->contentTranslationManager
->setEnabled('node', 'bundle_test', TRUE);
$this->assertTrue($node->isTranslatable(), "Bundle info was not cleared on language_content_settings creation.");
}
/**
* Tests that bundle translation setting changes are propagated.
*
* @throws \Drupal\Core\Entity\EntityStorageException
* @throws \Exception
*/
public function testBundleClearOnLanguageContentSettingUpdate() {
$node = $this->getBundledNode();
$this->assertFalse($node->isTranslatable());
$this->container
->get('entity_type.manager')
->getStorage('language_content_settings')
->create([
'target_entity_type_id' => 'node',
'target_bundle' => 'bundle_test',
])
->save();
$this->assertFalse($node->isTranslatable());
$this->contentTranslationManager
->setEnabled('node', 'bundle_test', TRUE);
$this->assertTrue($node->isTranslatable(), "Bundle info was not cleared on language_content_settings update.");
}
/**
* Gets a new bundled node for testing.
*
* @return \Drupal\node\Entity\Node
* The new node.
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
protected function getBundledNode() {
$this->installEntitySchema('node');
$bundle = NodeType::create([
'type' => 'bundle_test',
'label' => 'Bundle Test',
]);
$bundle->save();
$node = Node::create([
'type' => 'bundle_test',
]);
return $node;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.