From d5509022a72fb21bc483d1e95d8210dbfd80b25d Mon Sep 17 00:00:00 2001 From: Matt Glaman Date: Thu, 7 Dec 2023 14:31:48 -0600 Subject: [PATCH 1/3] fix(next): next_entity_type_config dependencies Fixes dependencies in next_entity_type_config for the entity type and bundle being targeted. --- .../next/src/Entity/NextEntityTypeConfig.php | 14 +++++++++++ .../Entity/NextEntityTypeConfigTest.php | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/modules/next/src/Entity/NextEntityTypeConfig.php b/modules/next/src/Entity/NextEntityTypeConfig.php index c6284c170..5144943fe 100644 --- a/modules/next/src/Entity/NextEntityTypeConfig.php +++ b/modules/next/src/Entity/NextEntityTypeConfig.php @@ -240,6 +240,20 @@ public function getPluginCollections() { return $collections; } + /** + * {@inheritdoc} + * + * @todo add sites with onDependencyRemoval support. + */ + public function calculateDependencies() { + parent::calculateDependencies(); + [$entity_type_id, $bundle] = explode('.', $this->id()); + $target_entity_type = $this->entityTypeManager()->getDefinition($entity_type_id); + $bundle_config_dependency = $target_entity_type->getBundleConfigDependency($bundle); + $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']); + return $this; + } + /** * Wraps the site_resolver plugin manager. * diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php index ad134adb5..466417de5 100644 --- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php +++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php @@ -140,4 +140,27 @@ public function testRevalidator() { $this->assertSame('path', $revalidator->getId()); } + /** + * Tests config dependency calculation. + */ + public function testConfigDependencies(): void { + $blog_site = NextSite::create([ + 'id' => 'blog', + ]); + $blog_site->save(); + + // Create entity type config. + /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ + $entity_type_config = NextEntityTypeConfig::create([ + 'id' => 'node.page', + 'site_resolver' => 'site_selector', + 'configuration' => [ + 'sites' => [ + 'blog' => 'blog', + ], + ], + ]); + self::assertEquals([], $entity_type_config->getDependencies()); + } + } From 9a9258eccaa7916b9df6df6222d7ca3bd596ed71 Mon Sep 17 00:00:00 2001 From: Matt Glaman Date: Tue, 27 Feb 2024 14:38:58 -0600 Subject: [PATCH 2/3] fix(next): next_entity_type_config dependencies save test entity so dependencies are calculated --- .../next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php index 466417de5..818cda105 100644 --- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php +++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php @@ -160,6 +160,8 @@ public function testConfigDependencies(): void { ], ], ]); + // Saving causes dependency calculation. + $entity_type_config->save(); self::assertEquals([], $entity_type_config->getDependencies()); } From 40e285ed1199cc0ff0fd818eb4bb12cd8386d013 Mon Sep 17 00:00:00 2001 From: Matt Glaman Date: Tue, 27 Feb 2024 14:55:32 -0600 Subject: [PATCH 3/3] fix(next): next_entity_type_config dependencies fix test --- .../tests/src/Kernel/Entity/NextEntityTypeConfigTest.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php index 818cda105..a38341072 100644 --- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php +++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php @@ -5,6 +5,7 @@ use Drupal\KernelTests\KernelTestBase; use Drupal\next\Entity\NextEntityTypeConfig; use Drupal\next\Entity\NextSite; +use Drupal\node\Entity\NodeType; use Drupal\Tests\node\Traits\NodeCreationTrait; /** @@ -43,6 +44,8 @@ protected function setUp(): void { $this->installConfig(['filter']); $this->installSchema('system', ['sequences']); $this->installSchema('node', ['node_access']); + + NodeType::create(['type' => 'page'])->save(); } /** @@ -162,7 +165,11 @@ public function testConfigDependencies(): void { ]); // Saving causes dependency calculation. $entity_type_config->save(); - self::assertEquals([], $entity_type_config->getDependencies()); + self::assertEquals([ + 'config' => [ + 'node.type.page', + ], + ], $entity_type_config->getDependencies()); } }