diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/UserRidQueryTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/UserRidQueryTest.php new file mode 100644 index 0000000..2303e17 --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Tests/Entity/UserRidQueryTest.php @@ -0,0 +1,54 @@ + 'User role entity query', + 'description' => 'Tests the special Entity Query service for user roles.', + 'group' => 'User', + ); + } + + /** + * Test the special user role queries. + */ + public function testUserRoleQuery() { + $perms = array('cancel account', 'change own username'); + $roles = array(); + $accounts = array(); + foreach ($perms as $perm) { + $accounts[$perm] = $this->createUser(array(), array($perm)); + foreach ($accounts[$perm]->getRoles() as $role) { + if ($role != DRUPAL_AUTHENTICATED_RID) { + $roles[$perm] = $role; + } + } + } + $this->assertEqual(count($roles), 2); + foreach ($perms as $perm) { + $results = \Drupal::entityQuery('user') + ->condition('rid', $roles[$perm]) + ->execute(); + $this->assertEqual(count($results), 1); + $this->assertEqual(reset($results), $accounts[$perm]->id()); + } + + // Test a query with an IN condition for both roles. + $results = \Drupal::entityQuery('user') + ->condition('rid', $roles) + ->execute(); + $this->assertEqual(count($results), 2); + } + +}