diff --git a/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php index ab5fa75..ff0d886 100644 --- a/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php +++ b/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php @@ -8,6 +8,9 @@ namespace Drupal\Tests\field\Unit; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\Field\FieldItemBase; +use Drupal\Core\Field\FieldStorageDefinitionInterface; +use Drupal\Core\Field\FieldTypePluginManagerInterface; use Drupal\field\Entity\FieldStorageConfig; use Drupal\Tests\UnitTestCase; @@ -40,15 +43,24 @@ class FieldStorageConfigEntityUnitTest extends UnitTestCase { protected $uuid; /** + * The field type manager. + * + * @var \Drupal\Core\Field\FieldTypePluginManagerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + protected $fieldTypeManager; + + /** * {@inheritdoc} */ protected function setUp() { $this->entityManager = $this->getMock('\Drupal\Core\Entity\EntityManagerInterface'); $this->uuid = $this->getMock('\Drupal\Component\Uuid\UuidInterface'); + $this->fieldTypeManager = $this->getMock(FieldTypePluginManagerInterface::class); $container = new ContainerBuilder(); $container->set('entity.manager', $this->entityManager); $container->set('uuid', $this->uuid); + $container->set('plugin.manager.field.field_type', $this->fieldTypeManager); \Drupal::setContainer($container); } @@ -73,18 +85,19 @@ public function testCalculateDependencies() { // ConfigEntityBase::addDependency() to get the provider of the field config // entity type and once in FieldStorageConfig::calculateDependencies() to // get the provider of the entity type that field is attached to. - $this->entityManager->expects($this->at(0)) + $this->entityManager->expects($this->any()) ->method('getDefinition') - ->with('field_storage_config') - ->will($this->returnValue($fieldStorageConfigentityType)); - $this->entityManager->expects($this->at(1)) - ->method('getDefinition') - ->with($attached_entity_type_id) - ->will($this->returnValue($attached_entity_type)); - $this->entityManager->expects($this->at(2)) + ->willReturnMap([ + ['field_storage_config', TRUE, $fieldStorageConfigentityType], + [$attached_entity_type_id, TRUE, $attached_entity_type], + ]); + + $this->fieldTypeManager->expects($this->atLeastOnce()) ->method('getDefinition') - ->with('field_storage_config') - ->will($this->returnValue($fieldStorageConfigentityType)); + ->with('test_field_type', FALSE) + ->willReturn([ + 'class' => TestFieldType::class, + ]); $field_storage = new FieldStorageConfig(array( 'entity_type' => $attached_entity_type_id, @@ -94,8 +107,37 @@ public function testCalculateDependencies() { )); $dependencies = $field_storage->calculateDependencies()->getDependencies(); - $this->assertContains('test_module', $dependencies['module']); - $this->assertContains('entity_provider_module', $dependencies['module']); + $this->assertEquals(['entity_provider_module', 'entity_test', 'test_module'], $dependencies['module']); + $this->assertEquals(['stark'], $dependencies['theme']); + } + +} + +class TestFieldType extends FieldItemBase { + + /** + * {@inheritdoc} + */ + public static function calculateStorageDependencies(FieldStorageDefinitionInterface $field_definition) { + $dependencies = []; + $dependencies['module'] = ['entity_test']; + $dependencies['theme'] = ['stark']; + + return $dependencies; + } + + /** + * {@inheritdoc} + */ + public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) { + return []; + } + + /** + * {@inheritdoc} + */ + public static function schema(FieldStorageDefinitionInterface $field_definition) { + return []; } } diff --git a/core/modules/system/src/Tests/Update/RecalculatedDependencyTest.php b/core/modules/system/src/Tests/Update/RecalculatedDependencyTest.php index 36fa215..53a832a 100644 --- a/core/modules/system/src/Tests/Update/RecalculatedDependencyTest.php +++ b/core/modules/system/src/Tests/Update/RecalculatedDependencyTest.php @@ -30,16 +30,21 @@ public function testUpdate() { $this->runUpdates(); $data = \Drupal::config('field.field.node.article.field_tags')->get(); - $this->assertEqual(['taxonomy'], $data['dependencies']['module']); + $this->assertFalse(isset($data['dependencies']['module'])); + $this->assertEqual([ + 'field.storage.node.field_tags', + 'node.type.article', + 'taxonomy.vocabulary.tags' + ], $data['dependencies']['config']); + + $data = \Drupal::config('field.storage.node.field_tags')->get(); + $this->assertEqual(['node', 'taxonomy'], $data['dependencies']['module']); $data = \Drupal::config('field.field.user.user.user_picture')->get(); - $this->assertEqual(['file', 'image', 'user'], $data['dependencies']['module']); + $this->assertEqual(['image', 'user'], $data['dependencies']['module']); $data = \Drupal::config('field.storage.node.field_image')->get(); - $this->assertEqual(['image', 'node'], $data['dependencies']['module']); - - $data = \Drupal::config('field.storage.node.field_tags')->get(); - $this->assertEqual(['node'], $data['dependencies']['module']); + $this->assertEqual(['file', 'image', 'node'], $data['dependencies']['module']); } } diff --git a/core/profiles/standard/config/install/field.field.node.article.field_image.yml b/core/profiles/standard/config/install/field.field.node.article.field_image.yml index 4c90f17..b69d603 100644 --- a/core/profiles/standard/config/install/field.field.node.article.field_image.yml +++ b/core/profiles/standard/config/install/field.field.node.article.field_image.yml @@ -5,7 +5,6 @@ dependencies: - field.storage.node.field_image - node.type.article module: - - file - image id: node.article.field_image field_name: field_image diff --git a/core/profiles/standard/config/install/field.field.node.article.field_tags.yml b/core/profiles/standard/config/install/field.field.node.article.field_tags.yml index e86bb5d..1b9c4cc 100644 --- a/core/profiles/standard/config/install/field.field.node.article.field_tags.yml +++ b/core/profiles/standard/config/install/field.field.node.article.field_tags.yml @@ -5,8 +5,6 @@ dependencies: - field.storage.node.field_tags - node.type.article - taxonomy.vocabulary.tags - module: - - taxonomy id: node.article.field_tags field_name: field_tags entity_type: node diff --git a/core/profiles/standard/config/install/field.field.user.user.user_picture.yml b/core/profiles/standard/config/install/field.field.user.user.user_picture.yml index 560f363..5145085 100644 --- a/core/profiles/standard/config/install/field.field.user.user.user_picture.yml +++ b/core/profiles/standard/config/install/field.field.user.user.user_picture.yml @@ -4,7 +4,6 @@ dependencies: config: - field.storage.user.user_picture module: - - file - image - user id: user.user.user_picture diff --git a/core/profiles/standard/config/install/field.storage.node.field_image.yml b/core/profiles/standard/config/install/field.storage.node.field_image.yml index bce946d..e4da708 100644 --- a/core/profiles/standard/config/install/field.storage.node.field_image.yml +++ b/core/profiles/standard/config/install/field.storage.node.field_image.yml @@ -2,6 +2,7 @@ langcode: en status: true dependencies: module: + - file - image - node id: node.field_image diff --git a/core/profiles/standard/config/install/field.storage.node.field_tags.yml b/core/profiles/standard/config/install/field.storage.node.field_tags.yml index 69b9edc..73f821f 100644 --- a/core/profiles/standard/config/install/field.storage.node.field_tags.yml +++ b/core/profiles/standard/config/install/field.storage.node.field_tags.yml @@ -3,6 +3,7 @@ status: true dependencies: module: - node + - taxonomy id: node.field_tags field_name: field_tags entity_type: node diff --git a/core/profiles/standard/config/install/field.storage.user.user_picture.yml b/core/profiles/standard/config/install/field.storage.user.user_picture.yml index 2d47c28..8253628 100644 --- a/core/profiles/standard/config/install/field.storage.user.user_picture.yml +++ b/core/profiles/standard/config/install/field.storage.user.user_picture.yml @@ -2,6 +2,7 @@ langcode: en status: true dependencies: module: + - file - image - user id: user.user_picture