mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
Use correct configuration for group filter on user administration
https://community.openproject.org/work_packages/74763
This commit is contained in:
@@ -46,8 +46,15 @@ module Users
|
||||
when Queries::Users::Filters::GroupFilter
|
||||
{
|
||||
autocomplete_options: {
|
||||
component: "opce-group-autocompleter",
|
||||
resource: "groups"
|
||||
component: "opce-user-autocompleter",
|
||||
resource: "principals",
|
||||
url: ::API::V3::Utilities::PathHelper::ApiV3Path.principals,
|
||||
filters: [
|
||||
{ name: "type", operator: "=", values: %w[Group] }
|
||||
],
|
||||
searchKey: "any_name_attribute",
|
||||
inputValue: filter.values,
|
||||
bindValue: "id"
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -30,4 +30,8 @@
|
||||
|
||||
class Queries::Users::Filters::GroupFilter < Queries::Users::Filters::UserFilter
|
||||
include Queries::Filters::Shared::GroupFilter
|
||||
|
||||
def human_name
|
||||
I18n.t(:label_group)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -42,6 +42,7 @@ RSpec.describe "index users", :js do
|
||||
describe "filtering", :js do
|
||||
let!(:alice) { create(:user, login: "alice", firstname: "Alice", lastname: "Smith") }
|
||||
let!(:bob) { create(:user, login: "bob", firstname: "Bob", lastname: "Jones") }
|
||||
let!(:my_group) { create(:group, lastname: "My group", members: [alice]) }
|
||||
|
||||
it "filters by name via the search input and updates without a page reload" do
|
||||
index_page.visit!
|
||||
@@ -62,6 +63,22 @@ RSpec.describe "index users", :js do
|
||||
index_page.filter_by_status(I18n.t(:status_registered))
|
||||
index_page.expect_listed(registered)
|
||||
end
|
||||
|
||||
it "filters by group and keeps that filter after reload" do
|
||||
index_page.visit!
|
||||
expect(page).to have_css("td.username a", text: alice.login)
|
||||
expect(page).to have_css("td.username a", text: bob.login)
|
||||
|
||||
index_page.filter_by_group("My group")
|
||||
index_page.expect_listed(alice)
|
||||
index_page.expect_not_listed(bob)
|
||||
|
||||
page.refresh
|
||||
|
||||
index_page.expect_group_filter("My group")
|
||||
index_page.expect_listed(alice)
|
||||
index_page.expect_not_listed(bob)
|
||||
end
|
||||
end
|
||||
|
||||
describe "with some sortable users" do
|
||||
|
||||
@@ -44,7 +44,7 @@ RSpec.describe Queries::Users::Filters::GroupFilter do
|
||||
it_behaves_like "basic query filter" do
|
||||
let(:class_key) { :group }
|
||||
let(:type) { :list_optional }
|
||||
let(:name) { I18n.t("query_fields.member_of_group") }
|
||||
let(:name) { I18n.t(:label_group) }
|
||||
|
||||
describe "#allowed_values" do
|
||||
it "is a list of the possible values" do
|
||||
|
||||
@@ -34,6 +34,8 @@ module Pages
|
||||
module Admin
|
||||
module Users
|
||||
class Index < ::Pages::Page
|
||||
include ::Components::Autocompleter::NgSelectAutocompleteHelpers
|
||||
|
||||
def path
|
||||
"/users"
|
||||
end
|
||||
@@ -60,6 +62,12 @@ module Pages
|
||||
.to have_css("tr.generic-table--empty-row", text: "There is currently nothing to display.")
|
||||
end
|
||||
|
||||
def expect_not_listed(*users)
|
||||
users.each do |user|
|
||||
expect(page).to have_no_css("td.username a", text: user.login)
|
||||
end
|
||||
end
|
||||
|
||||
def expect_user_locked(user)
|
||||
expect(page)
|
||||
.to have_css("tr.user.locked td.username", text: user.login)
|
||||
@@ -85,6 +93,29 @@ module Pages
|
||||
wait_for_network_idle
|
||||
end
|
||||
|
||||
def filter_by_group(value)
|
||||
open_filter_panel
|
||||
unless page.has_css?("li.advanced-filters--filter[data-filter-name='group']:not(.hidden)")
|
||||
select "Group", from: "add_filter_select"
|
||||
end
|
||||
|
||||
within_filter("group") do
|
||||
select_autocomplete find('[data-filter-autocomplete="true"]'),
|
||||
query: value,
|
||||
results_selector: "body"
|
||||
end
|
||||
|
||||
wait_for_network_idle
|
||||
end
|
||||
|
||||
def expect_group_filter(value)
|
||||
open_filter_panel
|
||||
|
||||
within_filter("group") do
|
||||
expect_current_autocompleter_value find('[data-filter-autocomplete="true"]'), value
|
||||
end
|
||||
end
|
||||
|
||||
def clear_filters
|
||||
find_by_id("user-filters-form-clear-button").click
|
||||
|
||||
@@ -105,7 +136,7 @@ module Pages
|
||||
end
|
||||
|
||||
def within_filter(name, &)
|
||||
within("[data-filter-name='#{name}']", &)
|
||||
within("li.advanced-filters--filter[data-filter-name='#{name}']:not(.hidden)", &)
|
||||
end
|
||||
|
||||
def order_by(key)
|
||||
|
||||
Reference in New Issue
Block a user