Chris@14
|
1 <?php
|
Chris@14
|
2
|
Chris@14
|
3 namespace Drupal\views\Tests\Update;
|
Chris@14
|
4
|
Chris@14
|
5 use Drupal\system\Tests\Update\UpdatePathTestBase;
|
Chris@14
|
6 use Drupal\views\Views;
|
Chris@14
|
7
|
Chris@14
|
8 /**
|
Chris@14
|
9 * Tests the upgrade path for views multi-value base field data.
|
Chris@14
|
10 *
|
Chris@14
|
11 * @see views_update_8500()
|
Chris@14
|
12 *
|
Chris@14
|
13 * @group Update
|
Chris@14
|
14 */
|
Chris@14
|
15 class EntityViewsMultiValueBaseFieldDataUpdateTest extends UpdatePathTestBase {
|
Chris@14
|
16
|
Chris@14
|
17 /**
|
Chris@14
|
18 * {@inheritdoc}
|
Chris@14
|
19 */
|
Chris@14
|
20 protected function setDatabaseDumpFiles() {
|
Chris@14
|
21 $this->databaseDumpFiles = [
|
Chris@14
|
22 __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
|
Chris@14
|
23 __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.views-entity-views-data-2846614.php',
|
Chris@14
|
24 ];
|
Chris@14
|
25 }
|
Chris@14
|
26
|
Chris@14
|
27 /**
|
Chris@14
|
28 * Tests multi-value base field views data is updated correctly.
|
Chris@14
|
29 */
|
Chris@14
|
30 public function testUpdateMultiValueBaseFields() {
|
Chris@14
|
31 $this->runUpdates();
|
Chris@14
|
32
|
Chris@14
|
33 $view = Views::getView('test_user_multi_value');
|
Chris@14
|
34 $display = $view->storage->get('display');
|
Chris@14
|
35
|
Chris@14
|
36 // Check each handler type present in the configuration to make sure the
|
Chris@14
|
37 // field got updated correctly.
|
Chris@14
|
38 foreach (['fields', 'filters', 'arguments'] as $type) {
|
Chris@14
|
39 $handler_config = $display['default']['display_options'][$type]['roles'];
|
Chris@14
|
40
|
Chris@14
|
41 // The ID should remain unchanged. Otherwise the update handler could
|
Chris@14
|
42 // overwrite a separate handler config.
|
Chris@14
|
43 $this->assertEqual('roles', $handler_config['id']);
|
Chris@14
|
44 // The field should be updated from 'roles' to the correct column name.
|
Chris@14
|
45 $this->assertEqual('roles_target_id', $handler_config['field']);
|
Chris@14
|
46 // Check the table is still correct.
|
Chris@14
|
47 $this->assertEqual('user__roles', $handler_config['table']);
|
Chris@14
|
48
|
Chris@14
|
49 // The plugin ID should be updated as well.
|
Chris@14
|
50 $this->assertEqual($type === 'arguments' ? 'user__roles_rid' : 'user_roles', $handler_config['plugin_id']);
|
Chris@14
|
51 }
|
Chris@14
|
52 }
|
Chris@14
|
53
|
Chris@14
|
54 }
|