diff --git a/core/modules/views/src/Tests/Update/EntityViewsMultiValueBaseFieldDataUpdateTest.php b/core/modules/views/src/Tests/Update/EntityViewsMultiValueBaseFieldDataUpdateTest.php new file mode 100644 index 0000000000..2631bb00fa --- /dev/null +++ b/core/modules/views/src/Tests/Update/EntityViewsMultiValueBaseFieldDataUpdateTest.php @@ -0,0 +1,50 @@ +databaseDumpFiles = [ + __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz', + ]; + } + + /** + * Tests multi-value base field views data is updated correctly. + */ + public function testUpdateMultiValueBaseFields() { + \Drupal::service('module_installer')->install(['entity_test', 'views_test_config']); + + ViewTestData::createTestViews(get_class($this), ['views_test_config']); + + $this->runUpdates(); + + $view = Views::getView('test_entity_multivalue_basefield_update'); + + // The field for this handler should get updated to use the correct field + // storage column name. + $display = $view->storage->get('display'); + $this->assertEqual('basefield_name', $view->storage->get($display['default']['display_options']['fields']['name']['field'])); + } + +} diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield_update.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield_update.yml new file mode 100644 index 0000000000..803d32a15f --- /dev/null +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_multivalue_basefield_update.yml @@ -0,0 +1,45 @@ +langcode: en +status: true +dependencies: + module: + - entity_test +id: test_entity_multivalue_basefield_update +label: '' +module: views +description: '' +tag: '' +base_table: entity_test_multivalue_basefield +base_field: id +core: '8' +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + fields: + id: + id: id + table: entity_test_multivalue_basefield + field: nid + relationship: none + plugin_id: field + entity_type: entity_test_multivalue_basefield + entity_field: id + name: + id: name + table: entity_test_multivalue_basefield__name + field: name + plugin_id: field + entity_type: entity_test_multivalue_basefield + entity_field: name + defaults: + fields: false + filters: false + sorts: + id: + id: id + table: entity_test_multivalue_basefield + field: id + order: asc diff --git a/core/modules/views/views.install b/core/modules/views/views.install index 588e9815e9..82cdee53d5 100644 --- a/core/modules/views/views.install +++ b/core/modules/views/views.install @@ -412,6 +412,15 @@ function views_update_8201() { // Empty update to cause a cache rebuild so that config schema get refreshed. } +/** + * @} End of "addtogroup updates-8.2.0". + */ + +/** + * @addtogroup updates-8.3.0 + * @{ + */ + /** * Update field names for multi-value base fields. */ @@ -446,6 +455,10 @@ function views_update_8300() { } } + if (empty($table_update_info)) { + return; + } + $config_factory = \Drupal::configFactory(); $handler_types = ['fields', 'arguments', 'sorts', 'relationships', 'filters']; @@ -482,12 +495,12 @@ function views_update_8300() { } if ($changed) { - $view->save(TRUE); + $view->save(); } } } /** - * @} End of "addtogroup updates-8.2.0". + * @} End of "addtogroup updates-8.3.0". */