diff --git a/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php b/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php index cc750fa..44930ed 100644 --- a/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php +++ b/core/modules/views/src/Tests/Entity/ViewEntityDependenciesTest.php @@ -8,6 +8,7 @@ namespace Drupal\views\Tests\Entity; use Drupal\Component\Utility\Unicode; +use Drupal\field\Entity\FieldStorageConfig; use Drupal\views\Tests\ViewUnitTestBase; use Drupal\views\Views; @@ -74,6 +75,12 @@ public function testCalculateDependencies() { 'comment_type' => $comment_type->id(), ), ))->save(); + entity_create('field_config', array( + 'field_storage' => FieldStorageConfig::loadByName('node', 'body'), + 'bundle' => $content_type->id(), + 'label' => $this->randomMachineName() . '_body', + 'settings' => array('display_summary' => TRUE), + ))->save(); // Force a flush of the in-memory storage. $this->container->get('views.views_data')->clear(); @@ -107,7 +114,8 @@ public function testCalculateDependencies() { $expected['test_argument_dependency'] = [ 'config' => [ - 'core.entity_view_mode.node.teaser' + 'core.entity_view_mode.node.teaser', + 'field.storage.node.body' ], 'content' => [ 'ArgumentDefaultTest', @@ -117,6 +125,7 @@ public function testCalculateDependencies() { 'node', // The argument handler is provided by the search module. 'search', + 'text', 'user' ], ]; @@ -129,6 +138,40 @@ public function testCalculateDependencies() { $config = $this->config('views.view.' . $view_id); \Drupal::service('config.storage.staging')->write($view_id, $config->get()); } + + // Ensure that dependencies are calculated on the display level. + $expected_display['default'] = [ + 'config' => [ + 'core.entity_view_mode.node.teaser', + ], + 'content' => [ + 'ArgumentDefaultTest', + 'ArgumentValidatorTest' + ], + 'module' => [ + 'node', + 'search', + 'user', + 'views' + ], + ]; + $expected_display['page'] = [ + 'config' => [ + 'field.storage.node.body' + ], + 'module' => [ + 'node', + 'text', + 'views' + ], + ]; + + $view = Views::getView('test_argument_dependency'); + $view->initDisplay(); + foreach ($view->displayHandlers as $display) { + // Calculate the dependencies each display has. + $this->assertEqual($expected_display[$display->getPluginId()], $display->calculateDependencies()); + } } } diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_dependency.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_dependency.yml index fce7f88..d170425 100644 --- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_dependency.yml +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_dependency.yml @@ -3,12 +3,14 @@ status: true dependencies: config: - core.entity_view_mode.node.teaser + - field.storage.node.body content: - ArgumentDefaultTest - ArgumentValidatorTest module: - node - search + - text - user id: test_argument_dependency label: test_argument_dependency @@ -218,3 +220,124 @@ display: display_extenders: { } field_langcode: '***LANGUAGE_language_content***' field_langcode_add_to_query: null + page_1: + display_plugin: page + id: page_1 + display_title: Page + position: 1 + display_options: + display_extenders: { } + field_langcode: '***LANGUAGE_language_content***' + field_langcode_add_to_query: null + path: test_argument_dependency + style: + type: default + options: { } + defaults: + style: false + row: false + fields: false + row: + type: fields + options: + default_field_elements: true + inline: { } + separator: '' + hide_empty: false + fields: + title: + id: title + table: node_field_data + field: title + entity_type: node + entity_field: title + label: '' + alter: + alter_text: false + make_link: false + absolute: false + trim: false + word_boundary: false + ellipsis: false + strip_tags: false + html: false + hide_empty: false + empty_zero: false + link_to_node: true + plugin_id: node + relationship: none + group_type: group + admin_label: '' + exclude: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_alter_empty: true + body: + id: body + table: node__body + field: body + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: '' + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: text_default + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: all + delta_offset: '0' + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field