Commit d8ce1e2d authored by alexpott's avatar alexpott

Issue #2917006 by tedbow, amateescu, Wim Leers, sam-elayyoub, Pascal-,...

Issue #2917006 by tedbow, amateescu, Wim Leers, sam-elayyoub, Pascal-, jnimchuk, catch, alexpott, kruser, neclimdul, chris5156, Rick Hood: Views referencing missing roles fail views_post_update_revision_metadata_fields()

(cherry picked from commit a90dae47)
parent 271aa5c7
......@@ -88,9 +88,13 @@ public function calculateDependencies() {
}
foreach ((array) $this->value as $role_id) {
$role = $this->roleStorage->load($role_id);
if ($role = $this->roleStorage->load($role_id)) {
$dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName();
}
else {
trigger_error("The {$role_id} role does not exist. You should review and fix the configuration of the {$this->view->id()} view.", E_USER_WARNING);
}
}
return $dependencies;
}
......
......@@ -5,6 +5,7 @@
use Drupal\user\Entity\Role;
use Drupal\views\Entity\View;
use Drupal\views\Views;
use PHPUnit\Framework\Error\Warning;
/**
* Tests the roles filter handler.
......@@ -95,4 +96,28 @@ public function testDependencies() {
$this->assertEqual($expected, $view->getDependencies());
}
/**
* Tests that a warning is triggered if the filter references a missing role.
*/
public function testMissingRole() {
$role = Role::create(['id' => 'test_user_role']);
$role->save();
/** @var \Drupal\views\Entity\View $view */
$view = View::load('test_user_name');
$display = &$view->getDisplay('default');
$display['display_options']['filters']['roles_target_id'] = [
'id' => 'roles_target_id',
'table' => 'user__roles',
'field' => 'roles_target_id',
'value' => ['test_user_role' => 'test_user_role'],
'plugin_id' => 'user_roles',
];
// Ensure no warning is triggered before the role is deleted.
$view->calculateDependencies();
$role->delete();
$this->expectException(Warning::class);
$this->expectExceptionMessage('The test_user_role role does not exist. You should review and fix the configuration of the test_user_name view.');
$view->calculateDependencies();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment