Skip to content

Commit a02ad94

Browse files
committed
[#68702] Add specs for group membership filtering
1 parent 3c65985 commit a02ad94

File tree

1 file changed

+58
-3
lines changed

1 file changed

+58
-3
lines changed

spec/features/projects/lists/filters_spec.rb

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -497,8 +497,9 @@ def load_and_open_filters(user)
497497

498498
describe "user cf filter" do
499499
let(:some_user) { create(:user, member_with_roles: { project => [project_role] }) }
500-
let!(:some_group) { create(:group, member_with_roles: { project => [project_role] }) }
501500
let!(:some_placeholder) { create(:placeholder_user, member_with_roles: { project => [project_role] }) }
501+
let!(:some_group) { create(:group, members: [some_user], member_with_roles: { project => [project_role] }) }
502+
let!(:empty_group) { create(:group, member_with_roles: { project => [project_role] }) }
502503

503504
let!(:user_cf) do
504505
create(:user_project_custom_field,
@@ -508,26 +509,80 @@ def load_and_open_filters(user)
508509
end
509510
end
510511

511-
it "filters for the project that has the corresponding value" do
512+
it "filters for the project that has the correct user" do
512513
load_and_open_filters manager
513514

514515
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [some_user.name])
515516

516517
projects_page.expect_projects_listed(project)
517518
end
518519

520+
it "filters for any group where the user is a member" do
521+
load_and_open_filters manager
522+
523+
# Since the user is member of this group, this project will match the filter
524+
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [some_group.name])
525+
526+
projects_page.expect_projects_listed(project)
527+
end
528+
519529
it "displays the visible project members, groups and placeholders as available options" do
520530
load_and_open_filters manager
521531

522532
expected_options = [
533+
{ name: empty_group.name },
534+
{ name: some_group.name },
523535
{ name: some_user.name, email: some_user.mail },
524536
{ name: some_placeholder.name },
525-
{ name: some_group.name },
526537
{ name: manager.name, email: manager.mail }
527538
]
528539

529540
projects_page.expect_user_autocomplete_options_for(user_cf, expected_options)
530541
end
542+
543+
context "with the cf field set to a group" do
544+
before do
545+
project.update(custom_field_values: { user_cf.id => [some_group.id] })
546+
end
547+
548+
it "filters for the group" do
549+
load_and_open_filters manager
550+
551+
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [some_group.name])
552+
553+
projects_page.expect_projects_listed(project)
554+
end
555+
556+
it "filters for users that are members of the group" do
557+
load_and_open_filters manager
558+
559+
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [some_user.name])
560+
561+
projects_page.expect_projects_listed(project)
562+
end
563+
564+
it "does not match if you filter for another group" do
565+
load_and_open_filters manager
566+
567+
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [empty_group.name])
568+
569+
projects_page.expect_projects_not_listed(project)
570+
end
571+
end
572+
573+
context "with the cf field set to a placeholder user" do
574+
before do
575+
project.update(custom_field_values: { user_cf.id => [some_placeholder.id] })
576+
end
577+
578+
it "filters for the placeholder user" do
579+
load_and_open_filters manager
580+
581+
projects_page.set_filter(user_cf.column_name, user_cf.name, "is (OR)", [some_placeholder.name])
582+
583+
projects_page.expect_projects_listed(project)
584+
end
585+
end
531586
end
532587

533588
describe "list cf filter" do

0 commit comments

Comments
 (0)