diff --git a/core/modules/entity_reference/entity_reference.views.inc b/core/modules/entity_reference/entity_reference.views.inc index 3a9ddf2..75b9899 100644 --- a/core/modules/entity_reference/entity_reference.views.inc +++ b/core/modules/entity_reference/entity_reference.views.inc @@ -54,6 +54,7 @@ function entity_reference_field_views_data(FieldStorageConfigInterface $field_st 'base' => $entity_type->getDataTable() ?: $entity_type->getBaseTable(), 'base field' => $entity_type->getKey('id'), 'label' => t('@field_name', array('@field_name' => $field_storage->getName())), + 'entity type' => $entity_type_id, ); } diff --git a/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php b/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php index 9ae79a7..7de2cc1 100644 --- a/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php +++ b/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php @@ -151,4 +151,75 @@ public function testRelationship() { } } + /** + * Tests views data generated for relationship. + * + * @see entity_reference_field_views_data() + */ + public function testRelationshipViewsData() { + // Create reference from entity_test_mul to entity_test. + FieldStorageConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_test', + 'type' => 'entity_reference', + 'settings' => array( + 'target_type' => 'entity_test', + ), + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_test', + 'bundle' => 'entity_test_mul', + ))->save(); + + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test_mul__field_data_test'); + $this->assertEqual($views_data['field_data_test']['relationship']['id'], 'standard'); + $this->assertEqual($views_data['field_data_test']['relationship']['base'], 'entity_test'); + $this->assertEqual($views_data['field_data_test']['relationship']['base field'], 'id'); + $this->assertEqual($views_data['field_data_test']['relationship']['relationship field'], 'field_data_test_target_id'); + $this->assertEqual($views_data['field_data_test']['relationship']['entity type'], 'entity_test'); + + // Check the backwards reference. + $views_data = Views::viewsData()->get('entity_test'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['base'], 'entity_test_mul_property_data'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['base field'], 'id'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['field table'], 'entity_test_mul__field_data_test'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['field field'], 'field_data_test_target_id'); + $this->assertEqual($views_data['reverse__entity_test_mul__field_data_test']['relationship']['entity type'], 'entity_test_mul'); + + // Create reference from entity_test to entity_test_mul. + FieldStorageConfig::create(array( + 'entity_type' => 'entity_test', + 'field_name' => 'field_test_data', + 'type' => 'entity_reference', + 'settings' => array( + 'target_type' => 'entity_test_mul', + ), + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test', + 'field_name' => 'field_test_data', + 'bundle' => 'entity_test', + ))->save(); + + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test__field_test_data'); + $this->assertEqual($views_data['field_test_data']['relationship']['id'], 'standard'); + $this->assertEqual($views_data['field_test_data']['relationship']['base'], 'entity_test_mul_property_data'); + $this->assertEqual($views_data['field_test_data']['relationship']['base field'], 'id'); + $this->assertEqual($views_data['field_test_data']['relationship']['relationship field'], 'field_test_data_target_id'); + $this->assertEqual($views_data['field_test_data']['relationship']['entity type'], 'entity_test_mul'); + + // Check the backwards reference. + $views_data = Views::viewsData()->get('entity_test_mul_property_data'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['base'], 'entity_test'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['base field'], 'id'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['field table'], 'entity_test__field_test_data'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['field field'], 'field_test_data_target_id'); + $this->assertEqual($views_data['reverse__entity_test__field_test_data']['relationship']['entity type'], 'entity_test'); + } + }