From 0653d6b67e5d1337ac9f0afc9263631a8e6dab0c Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org> Date: Tue, 2 May 2017 12:18:55 +0100 Subject: [PATCH] Issue #2868841 by erozqba, Sam152, kristiaanvandeneynde, mikeker: \Drupal\user\Plugin\views\filter\Roles::calculateDependencies breaks when using the empty/not empty operators --- .../user/src/Plugin/views/filter/Roles.php | 3 ++ .../Kernel/Views/HandlerFilterRolesTest.php | 32 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/core/modules/user/src/Plugin/views/filter/Roles.php b/core/modules/user/src/Plugin/views/filter/Roles.php index d84e3240949b..47adafb8b698 100644 --- a/core/modules/user/src/Plugin/views/filter/Roles.php +++ b/core/modules/user/src/Plugin/views/filter/Roles.php @@ -74,6 +74,9 @@ public function operators() { */ public function calculateDependencies() { $dependencies = []; + if (in_array($this->operator, ['empty', 'not empty'])) { + return $dependencies; + } foreach ($this->value as $role_id) { $role = $this->roleStorage->load($role_id); $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName(); diff --git a/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php b/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php index 306e813323f6..ec5a06bf1cb0 100644 --- a/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php +++ b/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php @@ -34,6 +34,19 @@ public function testDependencies() { ]; $this->assertEqual($expected, $view->getDependencies()); + $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', + ]; + $view->save(); + $expected['config'][] = 'user.role.test_user_role'; + $this->assertEqual($expected, $view->getDependencies()); + + $view = View::load('test_user_name'); $display = &$view->getDisplay('default'); $display['display_options']['filters']['roles_target_id'] = [ 'id' => 'roles_target_id', @@ -42,10 +55,26 @@ public function testDependencies() { 'value' => [ 'test_user_role' => 'test_user_role', ], + 'operator' => 'empty', + 'plugin_id' => 'user_roles', + ]; + $view->save(); + unset($expected['config']); + $this->assertEqual($expected, $view->getDependencies()); + + $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', + ], + 'operator' => 'not empty', 'plugin_id' => 'user_roles', ]; $view->save(); - $expected['config'][] = 'user.role.test_user_role'; $this->assertEqual($expected, $view->getDependencies()); $view = Views::getView('test_user_name'); @@ -63,7 +92,6 @@ public function testDependencies() { 'plugin_id' => 'user_roles', ]; $view->save(); - unset($expected['config']); $this->assertEqual($expected, $view->getDependencies()); } -- GitLab