@@ -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