Loading src/EventSubscriber/DependencyCollector/EntityLanguage.php +18 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Drupal\depcalc\DependencyCalculatorEvents; use Drupal\depcalc\DependentEntityWrapper; use Drupal\depcalc\Event\CalculateEntityDependenciesEvent; use Drupal\depcalc\FieldExtractor; use Drupal\language\Entity\ContentLanguageSettings; /** * Class EntityLanguage. Loading Loading @@ -61,7 +62,7 @@ class EntityLanguage extends BaseDependencyCollector { foreach ($fields as $field) { /** @var \Drupal\language\Entity\ContentLanguageSettings $settings */ $settings = \Drupal::entityTypeManager()->getStorage('language_content_settings')->load("{$entity->getEntityTypeId()}.{$entity->bundle()}"); if (!$settings || !$settings->status() || !$settings->isLanguageAlterable()) { if (!$this->isContentTranslationEnabled($settings)) { return; } $settings_wrapper = new DependentEntityWrapper($settings); Loading @@ -81,6 +82,22 @@ class EntityLanguage extends BaseDependencyCollector { } } /** * Check when content translation is enabled. * * @param \Drupal\language\Entity\ContentLanguageSettings|null $settings * The content translation setting. * * @return bool * TRUE if content translation is enabled, FALSE otherwise. */ protected function isContentTranslationEnabled(?ContentLanguageSettings $settings): bool { if (!$settings || !$settings->status() || !$settings->get('third_party_settings')) { return FALSE; } return $settings->get('third_party_settings')['content_translation']['enabled'] ?? FALSE; } } tests/src/Kernel/EntityLanguageTest.php 0 → 100644 +136 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\depcalc\Kernel; use Drupal\depcalc\DependencyStack; use Drupal\depcalc\DependentEntityWrapper; use Drupal\KernelTests\KernelTestBase; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\language\Entity\ContentLanguageSettings; use Drupal\Tests\node\Traits\ContentTypeCreationTrait; use Drupal\Tests\node\Traits\NodeCreationTrait; /** * Class EntityLanguageTest. * * Test language dependency in node. * * @group depcalc */ class EntityLanguageTest extends KernelTestBase { use ContentTypeCreationTrait; use NodeCreationTrait; /** * {@inheritdoc} */ protected static $modules = [ 'content_translation', 'depcalc', 'field', 'filter', 'node', 'system', 'user', 'language', 'text', ]; /** * Calculates all the dependencies of a given entity. * * @var \Drupal\depcalc\DependencyCalculator */ protected $calculator; /** * Node object. * * @var \Drupal\node\Entity\Node */ protected $node; /** * Language object. * * @var \Drupal\Core\Language */ protected $language; /** * Dependencies uuids. * * @var array */ protected $dependencies; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installConfig(['language', 'field', 'filter', 'node', 'system']); $this->installSchema('node', 'node_access'); $this->installSchema('system', 'sequences'); $this->installEntitySchema('node_type'); $this->installEntitySchema('node'); $this->installEntitySchema('user'); $this->language = ConfigurableLanguage::load('en'); $this->calculator = $this->container->get('entity.dependency.calculator'); $this->createContentType([ 'type' => 'article', 'name' => 'article', ]); $this->node = $this->createNode([ 'type' => 'article', 'language' => 'en', ]); } /** * Tests node dependencies when entity translation is not enabled. */ public function testEntityTranslationNotEnabled(): void { $this->runEntityTranslationTest(); $this->assertArrayNotHasKey($this->language->uuid(), $this->dependencies); } /** * Tests node dependencies when entity translation is enabled. * * @throws \Drupal\Core\Entity\EntityStorageException */ public function testEntityTranslationEnabled(): void { $contentLanguageSettings = ContentLanguageSettings::loadByEntityTypeBundle('node', 'article'); $contentLanguageSettings->setThirdPartySetting('content_translation', 'enabled', TRUE) ->save(); $this->runEntityTranslationTest(); $this->assertArrayHasKey($this->language->uuid(), $this->dependencies); } /** * Calculate entity dependencies. */ protected function runEntityTranslationTest() { try { $wrapper = new DependentEntityWrapper($this->node); } catch (\Exception $exception) { $this->markTestIncomplete($exception->getMessage()); } $this->calculator->calculateDependencies($wrapper, new DependencyStack()); $this->dependencies = $wrapper->getDependencies(); } } tests/src/Kernel/EventSubscriber/DependencyCollector/ConfigEntityDependencyCollectorTest.php +3 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { */ public static $modules = [ 'breakpoint', 'content_translation', 'depcalc', 'field', 'filter', Loading Loading @@ -131,7 +132,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { new DependencyStack() ); $contentLanguageSettings->setDefaultLangcode('cs') ->setLanguageAlterable(FALSE) ->setThirdPartySetting('content_translation', 'enabled', FALSE) ->save(); $this->assertArrayNotHasKey($csLanguage->uuid(), $csDependencies); Loading @@ -139,7 +140,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { $this->assertArrayNotHasKey($contentLanguageSettings->uuid(), $csDependencies); $contentLanguageSettings->setDefaultLangcode('cs') ->setLanguageAlterable(TRUE) ->setThirdPartySetting('content_translation', 'enabled', TRUE) ->save(); $csNode = $this->createTestNode('cs'); Loading Loading
src/EventSubscriber/DependencyCollector/EntityLanguage.php +18 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Drupal\depcalc\DependencyCalculatorEvents; use Drupal\depcalc\DependentEntityWrapper; use Drupal\depcalc\Event\CalculateEntityDependenciesEvent; use Drupal\depcalc\FieldExtractor; use Drupal\language\Entity\ContentLanguageSettings; /** * Class EntityLanguage. Loading Loading @@ -61,7 +62,7 @@ class EntityLanguage extends BaseDependencyCollector { foreach ($fields as $field) { /** @var \Drupal\language\Entity\ContentLanguageSettings $settings */ $settings = \Drupal::entityTypeManager()->getStorage('language_content_settings')->load("{$entity->getEntityTypeId()}.{$entity->bundle()}"); if (!$settings || !$settings->status() || !$settings->isLanguageAlterable()) { if (!$this->isContentTranslationEnabled($settings)) { return; } $settings_wrapper = new DependentEntityWrapper($settings); Loading @@ -81,6 +82,22 @@ class EntityLanguage extends BaseDependencyCollector { } } /** * Check when content translation is enabled. * * @param \Drupal\language\Entity\ContentLanguageSettings|null $settings * The content translation setting. * * @return bool * TRUE if content translation is enabled, FALSE otherwise. */ protected function isContentTranslationEnabled(?ContentLanguageSettings $settings): bool { if (!$settings || !$settings->status() || !$settings->get('third_party_settings')) { return FALSE; } return $settings->get('third_party_settings')['content_translation']['enabled'] ?? FALSE; } }
tests/src/Kernel/EntityLanguageTest.php 0 → 100644 +136 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\depcalc\Kernel; use Drupal\depcalc\DependencyStack; use Drupal\depcalc\DependentEntityWrapper; use Drupal\KernelTests\KernelTestBase; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\language\Entity\ContentLanguageSettings; use Drupal\Tests\node\Traits\ContentTypeCreationTrait; use Drupal\Tests\node\Traits\NodeCreationTrait; /** * Class EntityLanguageTest. * * Test language dependency in node. * * @group depcalc */ class EntityLanguageTest extends KernelTestBase { use ContentTypeCreationTrait; use NodeCreationTrait; /** * {@inheritdoc} */ protected static $modules = [ 'content_translation', 'depcalc', 'field', 'filter', 'node', 'system', 'user', 'language', 'text', ]; /** * Calculates all the dependencies of a given entity. * * @var \Drupal\depcalc\DependencyCalculator */ protected $calculator; /** * Node object. * * @var \Drupal\node\Entity\Node */ protected $node; /** * Language object. * * @var \Drupal\Core\Language */ protected $language; /** * Dependencies uuids. * * @var array */ protected $dependencies; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installConfig(['language', 'field', 'filter', 'node', 'system']); $this->installSchema('node', 'node_access'); $this->installSchema('system', 'sequences'); $this->installEntitySchema('node_type'); $this->installEntitySchema('node'); $this->installEntitySchema('user'); $this->language = ConfigurableLanguage::load('en'); $this->calculator = $this->container->get('entity.dependency.calculator'); $this->createContentType([ 'type' => 'article', 'name' => 'article', ]); $this->node = $this->createNode([ 'type' => 'article', 'language' => 'en', ]); } /** * Tests node dependencies when entity translation is not enabled. */ public function testEntityTranslationNotEnabled(): void { $this->runEntityTranslationTest(); $this->assertArrayNotHasKey($this->language->uuid(), $this->dependencies); } /** * Tests node dependencies when entity translation is enabled. * * @throws \Drupal\Core\Entity\EntityStorageException */ public function testEntityTranslationEnabled(): void { $contentLanguageSettings = ContentLanguageSettings::loadByEntityTypeBundle('node', 'article'); $contentLanguageSettings->setThirdPartySetting('content_translation', 'enabled', TRUE) ->save(); $this->runEntityTranslationTest(); $this->assertArrayHasKey($this->language->uuid(), $this->dependencies); } /** * Calculate entity dependencies. */ protected function runEntityTranslationTest() { try { $wrapper = new DependentEntityWrapper($this->node); } catch (\Exception $exception) { $this->markTestIncomplete($exception->getMessage()); } $this->calculator->calculateDependencies($wrapper, new DependencyStack()); $this->dependencies = $wrapper->getDependencies(); } }
tests/src/Kernel/EventSubscriber/DependencyCollector/ConfigEntityDependencyCollectorTest.php +3 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { */ public static $modules = [ 'breakpoint', 'content_translation', 'depcalc', 'field', 'filter', Loading Loading @@ -131,7 +132,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { new DependencyStack() ); $contentLanguageSettings->setDefaultLangcode('cs') ->setLanguageAlterable(FALSE) ->setThirdPartySetting('content_translation', 'enabled', FALSE) ->save(); $this->assertArrayNotHasKey($csLanguage->uuid(), $csDependencies); Loading @@ -139,7 +140,7 @@ class ConfigEntityDependencyCollectorTest extends KernelTestBase { $this->assertArrayNotHasKey($contentLanguageSettings->uuid(), $csDependencies); $contentLanguageSettings->setDefaultLangcode('cs') ->setLanguageAlterable(TRUE) ->setThirdPartySetting('content_translation', 'enabled', TRUE) ->save(); $csNode = $this->createTestNode('cs'); Loading