3 namespace Drupal\Tests\options\Kernel\Views;
5 use Drupal\field\Entity\FieldStorageConfig;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
8 use Drupal\views\Views;
11 * Tests file views data.
15 class FileViewsDataTest extends ViewsKernelTestBase {
22 public static $modules = ['file', 'views', 'entity_test', 'user', 'field'];
25 * Tests views data generated for file field relationship.
27 * @see file_field_views_data()
28 * @see file_field_views_data_views_data_alter()
30 public function testRelationshipViewsData() {
31 // Create file field to entity_test.
32 FieldStorageConfig::create([
33 'entity_type' => 'entity_test',
34 'field_name' => 'field_base_file',
38 'entity_type' => 'entity_test',
39 'field_name' => 'field_base_file',
40 'bundle' => 'entity_test',
42 // Check the generated views data.
43 $views_data = Views::viewsData()->get('entity_test__field_base_file');
44 $relationship = $views_data['field_base_file_target_id']['relationship'];
45 $this->assertEqual($relationship['id'], 'standard');
46 $this->assertEqual($relationship['base'], 'file_managed');
47 $this->assertEqual($relationship['base field'], 'fid');
48 $this->assertEqual($relationship['entity type'], 'file');
49 // Check the backwards reference.
50 $views_data = Views::viewsData()->get('file_managed');
51 $relationship = $views_data['reverse_field_base_file_entity_test']['relationship'];
52 $this->assertEqual($relationship['id'], 'entity_reverse');
53 $this->assertEqual($relationship['base'], 'entity_test');
54 $this->assertEqual($relationship['base field'], 'id');
55 $this->assertEqual($relationship['field table'], 'entity_test__field_base_file');
56 $this->assertEqual($relationship['field field'], 'field_base_file_target_id');
57 $this->assertEqual($relationship['field_name'], 'field_base_file');
58 $this->assertEqual($relationship['entity_type'], 'entity_test');
59 $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]);
61 // Create file field to entity_test_mul.
62 FieldStorageConfig::create([
63 'entity_type' => 'entity_test_mul',
64 'field_name' => 'field_data_file',
68 'entity_type' => 'entity_test_mul',
69 'field_name' => 'field_data_file',
70 'bundle' => 'entity_test_mul',
72 // Check the generated views data.
73 $views_data = Views::viewsData()->get('entity_test_mul__field_data_file');
74 $relationship = $views_data['field_data_file_target_id']['relationship'];
75 $this->assertEqual($relationship['id'], 'standard');
76 $this->assertEqual($relationship['base'], 'file_managed');
77 $this->assertEqual($relationship['base field'], 'fid');
78 $this->assertEqual($relationship['entity type'], 'file');
79 // Check the backwards reference.
80 $views_data = Views::viewsData()->get('file_managed');
81 $relationship = $views_data['reverse_field_data_file_entity_test_mul']['relationship'];
82 $this->assertEqual($relationship['id'], 'entity_reverse');
83 $this->assertEqual($relationship['base'], 'entity_test_mul_property_data');
84 $this->assertEqual($relationship['base field'], 'id');
85 $this->assertEqual($relationship['field table'], 'entity_test_mul__field_data_file');
86 $this->assertEqual($relationship['field field'], 'field_data_file_target_id');
87 $this->assertEqual($relationship['field_name'], 'field_data_file');
88 $this->assertEqual($relationship['entity_type'], 'entity_test_mul');
89 $this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]);