diff --git a/core/modules/file/src/Tests/Views/FileViewsDataTest.php b/core/modules/file/src/Tests/Views/FileViewsDataTest.php index e69de29..9ba1a64 100644 --- a/core/modules/file/src/Tests/Views/FileViewsDataTest.php +++ b/core/modules/file/src/Tests/Views/FileViewsDataTest.php @@ -0,0 +1,97 @@ + 'entity_test', + 'field_name' => 'field_base_file', + 'type' => 'file', + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test', + 'field_name' => 'field_base_file', + 'bundle' => 'entity_test', + ))->save(); + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test__field_base_file'); + $relationship = $views_data['field_base_file_target_id']['relationship']; + $this->assertEqual($relationship['id'], 'standard'); + $this->assertEqual($relationship['base'], 'file_managed'); + $this->assertEqual($relationship['base field'], 'fid'); + $this->assertEqual($relationship['entity type'], 'file'); + // Check the backwards reference. + $views_data = Views::viewsData()->get('file_managed'); + $relationship = $views_data['reverse_field_base_file_entity_test']['relationship']; + $this->assertEqual($relationship['id'], 'entity_reverse'); + $this->assertEqual($relationship['base'], 'entity_test'); + $this->assertEqual($relationship['base field'], 'id'); + $this->assertEqual($relationship['field table'], 'entity_test__field_base_file'); + $this->assertEqual($relationship['field field'], 'field_base_file_target_id'); + $this->assertEqual($relationship['field_name'], 'field_base_file'); + $this->assertEqual($relationship['entity_type'], 'entity_test'); + $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]); + + // Create file field to entity_test_mul. + FieldStorageConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_file', + 'type' => 'file', + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_file', + 'bundle' => 'entity_test_mul', + ))->save(); + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test_mul__field_data_file'); + $relationship = $views_data['field_data_file_target_id']['relationship']; + $this->assertEqual($relationship['id'], 'standard'); + $this->assertEqual($relationship['base'], 'file_managed'); + $this->assertEqual($relationship['base field'], 'fid'); + $this->assertEqual($relationship['entity type'], 'file'); + // Check the backwards reference. + $views_data = Views::viewsData()->get('file_managed'); + $relationship = $views_data['reverse_field_data_file_entity_test_mul']['relationship']; + $this->assertEqual($relationship['id'], 'entity_reverse'); + $this->assertEqual($relationship['base'], 'entity_test_mul_property_data'); + $this->assertEqual($relationship['base field'], 'id'); + $this->assertEqual($relationship['field table'], 'entity_test_mul__field_data_file'); + $this->assertEqual($relationship['field field'], 'field_data_file_target_id'); + $this->assertEqual($relationship['field_name'], 'field_data_file'); + $this->assertEqual($relationship['entity_type'], 'entity_test_mul'); + $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]); + } + +} diff --git a/core/modules/image/image.views.inc b/core/modules/image/image.views.inc index b9fe66a..1a87b73 100644 --- a/core/modules/image/image.views.inc +++ b/core/modules/image/image.views.inc @@ -22,6 +22,7 @@ function image_field_views_data(FieldStorageConfigInterface $field_storage) { $data[$table_name][$field_storage->getName() . '_target_id']['relationship'] = array( 'id' => 'standard', 'base' => 'file_managed', + 'entity type' => 'file', 'base field' => 'fid', 'label' => t('image from !field_name', array('!field_name' => $field_storage->getName())), ); diff --git a/core/modules/image/src/Tests/Views/ImageViewsDataTest.php b/core/modules/image/src/Tests/Views/ImageViewsDataTest.php index e69de29..82dd590 100644 --- a/core/modules/image/src/Tests/Views/ImageViewsDataTest.php +++ b/core/modules/image/src/Tests/Views/ImageViewsDataTest.php @@ -0,0 +1,97 @@ + 'entity_test', + 'field_name' => 'field_base_image', + 'type' => 'image', + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test', + 'field_name' => 'field_base_image', + 'bundle' => 'entity_test', + ))->save(); + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test__field_base_image'); + $relationship = $views_data['field_base_image_target_id']['relationship']; + $this->assertEqual($relationship['id'], 'standard'); + $this->assertEqual($relationship['base'], 'file_managed'); + $this->assertEqual($relationship['base field'], 'fid'); + $this->assertEqual($relationship['entity type'], 'file'); + // Check the backwards reference. + $views_data = Views::viewsData()->get('file_managed'); + $relationship = $views_data['reverse_field_base_image_entity_test']['relationship']; + $this->assertEqual($relationship['id'], 'entity_reverse'); + $this->assertEqual($relationship['base'], 'entity_test'); + $this->assertEqual($relationship['base field'], 'id'); + $this->assertEqual($relationship['field table'], 'entity_test__field_base_image'); + $this->assertEqual($relationship['field field'], 'field_base_image_target_id'); + $this->assertEqual($relationship['field_name'], 'field_base_image'); + $this->assertEqual($relationship['entity_type'], 'entity_test'); + $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]); + + // Create image field to entity_test_mul. + FieldStorageConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_image', + 'type' => 'image', + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'entity_test_mul', + 'field_name' => 'field_data_image', + 'bundle' => 'entity_test_mul', + ))->save(); + // Check the generated views data. + $views_data = Views::viewsData()->get('entity_test_mul__field_data_image'); + $relationship = $views_data['field_data_image_target_id']['relationship']; + $this->assertEqual($relationship['id'], 'standard'); + $this->assertEqual($relationship['base'], 'file_managed'); + $this->assertEqual($relationship['base field'], 'fid'); + $this->assertEqual($relationship['entity type'], 'file'); + // Check the backwards reference. + $views_data = Views::viewsData()->get('file_managed'); + $relationship = $views_data['reverse_field_data_image_entity_test_mul']['relationship']; + $this->assertEqual($relationship['id'], 'entity_reverse'); + $this->assertEqual($relationship['base'], 'entity_test_mul_property_data'); + $this->assertEqual($relationship['base field'], 'id'); + $this->assertEqual($relationship['field table'], 'entity_test_mul__field_data_image'); + $this->assertEqual($relationship['field field'], 'field_data_image_target_id'); + $this->assertEqual($relationship['field_name'], 'field_data_image'); + $this->assertEqual($relationship['entity_type'], 'entity_test_mul'); + $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]); + } + +}