From 99868e49efb17a44cd9b7b4de2eb05376bff5cb2 Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Wed, 26 Feb 2025 13:27:22 +0100 Subject: [PATCH] Introduces involvement by review filter --- .../webui/packages/bs_requests_controller.rb | 3 ++- .../webui/projects/bs_requests_controller.rb | 3 ++- .../webui/users/bs_requests_controller.rb | 9 +++++---- .../webui/packages/bs_requests/index.html.haml | 2 +- .../webui/projects/bs_requests/index.html.haml | 2 +- .../webui/shared/bs_requests/_form.html.haml | 4 ++-- .../bs_requests/_requests_filter.html.haml | 7 +++++-- .../webui/users/bs_requests/index.html.haml | 3 ++- .../packages/bs_requests_controller_spec.rb | 8 +++++++- .../projects/bs_requests_controller_spec.rb | 16 ++++++++++++++-- .../webui/users/bs_requests_controller_spec.rb | 12 +++++++++--- .../spec/features/beta/webui/my_requests_spec.rb | 2 +- .../features/beta/webui/package_requests_spec.rb | 2 +- .../features/beta/webui/project_requests_spec.rb | 2 +- 14 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/api/app/controllers/webui/packages/bs_requests_controller.rb b/src/api/app/controllers/webui/packages/bs_requests_controller.rb index a9280b99d30..7e2fb66695c 100644 --- a/src/api/app/controllers/webui/packages/bs_requests_controller.rb +++ b/src/api/app/controllers/webui/packages/bs_requests_controller.rb @@ -41,9 +41,10 @@ def filter_involvement @bs_requests = case when @selected_filter['involvement'].include?('incoming') @bs_requests.where(bs_request_actions: { target_package_id: @package.id }) - .or(@bs_requests.where(reviews: { package: @package })) when @selected_filter['involvement'].include?('outgoing') @bs_requests.where(bs_request_actions: { source_package_id: @package.id }) + when @selected_filter['involvement'].include?('review') + @bs_requests.where(reviews: { package: @package }) end end diff --git a/src/api/app/controllers/webui/projects/bs_requests_controller.rb b/src/api/app/controllers/webui/projects/bs_requests_controller.rb index d2b79265707..13170603cff 100644 --- a/src/api/app/controllers/webui/projects/bs_requests_controller.rb +++ b/src/api/app/controllers/webui/projects/bs_requests_controller.rb @@ -38,9 +38,10 @@ def filter_involvement @bs_requests = case when @selected_filter['involvement'].include?('incoming') @bs_requests.where(bs_request_actions: { target_project_id: @project.id }) - .or(@bs_requests.where(reviews: { project: @project })) when @selected_filter['involvement'].include?('outgoing') @bs_requests.where(bs_request_actions: { source_project_id: @project.id }) + when @selected_filter['involvement'].include?('review') + @bs_requests.where(reviews: { project: @project }) end end diff --git a/src/api/app/controllers/webui/users/bs_requests_controller.rb b/src/api/app/controllers/webui/users/bs_requests_controller.rb index 7140079515b..c8e7a5f349b 100644 --- a/src/api/app/controllers/webui/users/bs_requests_controller.rb +++ b/src/api/app/controllers/webui/users/bs_requests_controller.rb @@ -50,14 +50,15 @@ def filter_involvement when @selected_filter['involvement'].include?('incoming') @bs_requests.where(bs_request_actions: { target_project_id: User.session.involved_projects }) .or(@bs_requests.where(bs_request_actions: { target_package_id: User.session.involved_packages })) - .or(@bs_requests.where(reviews: { user: User.session })) - .or(@bs_requests.where(reviews: { group: User.session.groups })) - .or(@bs_requests.where(reviews: { project: User.session.involved_projects })) - .or(@bs_requests.where(reviews: { package: User.session.involved_packages })) when @selected_filter['involvement'].include?('outgoing') @bs_requests.where(creator: User.session) .or(@bs_requests.where(bs_request_actions: { source_project_id: User.session.involved_projects })) .or(@bs_requests.where(bs_request_actions: { source_package_id: User.session.involved_packages })) + when @selected_filter['involvement'].include?('review') + @bs_requests.where(reviews: { user: User.session }) + .or(@bs_requests.where(reviews: { group: User.session.groups })) + .or(@bs_requests.where(reviews: { project: User.session.involved_projects })) + .or(@bs_requests.where(reviews: { package: User.session.involved_packages })) end end diff --git a/src/api/app/views/webui/packages/bs_requests/index.html.haml b/src/api/app/views/webui/packages/bs_requests/index.html.haml index 48a8e22ce0e..96f8799d126 100644 --- a/src/api/app/views/webui/packages/bs_requests/index.html.haml +++ b/src/api/app/views/webui/packages/bs_requests/index.html.haml @@ -8,4 +8,4 @@ .card-body = render(partial: 'webui/shared/bs_requests/form', locals: { selected_filter: @selected_filter, bs_requests_creators: @bs_requests_creators, url: @url, - bs_requests: @bs_requests, project: @project }) + bs_requests: @bs_requests, viewed_object: 'Package' }) diff --git a/src/api/app/views/webui/projects/bs_requests/index.html.haml b/src/api/app/views/webui/projects/bs_requests/index.html.haml index 59dd1552ad6..4ef5f829038 100644 --- a/src/api/app/views/webui/projects/bs_requests/index.html.haml +++ b/src/api/app/views/webui/projects/bs_requests/index.html.haml @@ -7,4 +7,4 @@ .card-body = render(partial: 'webui/shared/bs_requests/form', locals: { selected_filter: @selected_filter, bs_requests_creators: @bs_requests_creators, - url: projects_requests_path(@project), bs_requests: @bs_requests, project: @project }) + url: projects_requests_path(@project), bs_requests: @bs_requests, viewed_object: 'Project' }) diff --git a/src/api/app/views/webui/shared/bs_requests/_form.html.haml b/src/api/app/views/webui/shared/bs_requests/_form.html.haml index e216aee6056..f1eb83312a6 100644 --- a/src/api/app/views/webui/shared/bs_requests/_form.html.haml +++ b/src/api/app/views/webui/shared/bs_requests/_form.html.haml @@ -8,8 +8,8 @@ %i.float-end.mt-1.fa.fa-chevron-down#requests-dropdown-trigger .collapse#content-selector-filters = render partial: 'webui/shared/bs_requests/requests_filter', - locals: { selected_filter: selected_filter, creators: bs_requests_creators, url: url, - project: defined?(project) ? project : nil } + locals: { selected_filter: selected_filter, url: url, + viewed_object: viewed_object } .col-md-8.col-lg-9.px-0.px-md-3.d-none.content-list-loading = render partial: 'webui/shared/loading', locals: { text: 'Loading...', wrapper_css: ['loading'] } .col-md-8.col-lg-9.px-0.px-md-3.content-list#requests-list diff --git a/src/api/app/views/webui/shared/bs_requests/_requests_filter.html.haml b/src/api/app/views/webui/shared/bs_requests/_requests_filter.html.haml index fe50dcc10fc..db9434657e9 100644 --- a/src/api/app/views/webui/shared/bs_requests/_requests_filter.html.haml +++ b/src/api/app/views/webui/shared/bs_requests/_requests_filter.html.haml @@ -5,12 +5,15 @@ aria: { expanded: 'true', controls: 'request-filter-involvement' } } %b Involvement .px-4.pb-2.accordion-collapse.collapse.show#request-filter-involvement - = render partial: 'webui/shared/check_box', locals: { label: 'Incoming', + = render partial: 'webui/shared/check_box', locals: { label: "To #{viewed_object}", key: 'involvement[incoming]', name: 'involvement[]', value: 'incoming', checked: selected_filter[:involvement]&.include?('incoming') } - = render partial: 'webui/shared/check_box', locals: { label: 'Outgoing', + = render partial: 'webui/shared/check_box', locals: { label: "From #{viewed_object}", key: 'involvement[outgoing]', name: 'involvement[]', value: 'outgoing', checked: selected_filter[:involvement]&.include?('outgoing') } + = render partial: 'webui/shared/check_box', locals: { label: "Review by #{viewed_object}", + key: 'involvement[review]', name: 'involvement[]', value: 'review', + checked: selected_filter[:involvement]&.include?('review') } .mt-2.mb-2.accordion-item.border-0.auto-submit-on-change .px-3.py-2.accordion-button.no-style{ data: { 'bs-toggle': 'collapse', 'bs-target': '#request-filter-state' }, diff --git a/src/api/app/views/webui/users/bs_requests/index.html.haml b/src/api/app/views/webui/users/bs_requests/index.html.haml index 41f5d1288a9..248917f94c6 100644 --- a/src/api/app/views/webui/users/bs_requests/index.html.haml +++ b/src/api/app/views/webui/users/bs_requests/index.html.haml @@ -1,4 +1,5 @@ - @pagetitle = requests_listing_pagetitle(@project) = render(partial: 'webui/shared/bs_requests/form', - locals: { selected_filter: @selected_filter, bs_requests_creators: @bs_requests_creators, url: @url, bs_requests: @bs_requests }) + locals: { selected_filter: @selected_filter, bs_requests_creators: @bs_requests_creators, + url: @url, bs_requests: @bs_requests, viewed_object: 'You' }) diff --git a/src/api/spec/controllers/webui/packages/bs_requests_controller_spec.rb b/src/api/spec/controllers/webui/packages/bs_requests_controller_spec.rb index ed09e3d2a88..33358504662 100644 --- a/src/api/spec/controllers/webui/packages/bs_requests_controller_spec.rb +++ b/src/api/spec/controllers/webui/packages/bs_requests_controller_spec.rb @@ -56,7 +56,7 @@ context 'and the involvement parameters is "incoming"' do let(:context_params) { { involvement: ['incoming'] } } - it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request, request_with_review) } + it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request) } end context 'and the involvement parameters is "outgoing"' do @@ -64,6 +64,12 @@ it { expect(assigns[:bs_requests]).to contain_exactly(outgoing_request) } end + + context 'and the involvement parameters is "review"' do + let(:context_params) { { involvement: ['review'] } } + + it { expect(assigns[:bs_requests]).to contain_exactly(request_with_review) } + end end end end diff --git a/src/api/spec/controllers/webui/projects/bs_requests_controller_spec.rb b/src/api/spec/controllers/webui/projects/bs_requests_controller_spec.rb index 7e07a7df8e2..84a42d266eb 100644 --- a/src/api/spec/controllers/webui/projects/bs_requests_controller_spec.rb +++ b/src/api/spec/controllers/webui/projects/bs_requests_controller_spec.rb @@ -59,7 +59,7 @@ context 'and the involvement parameters is "incoming"' do let(:context_params) { { involvement: ['incoming'] } } - it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request, request_with_review) } + it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request) } end context 'and the involvement parameters is "outgoing"' do @@ -67,6 +67,12 @@ it { expect(assigns[:bs_requests]).to contain_exactly(outgoing_request) } end + + context 'and the involvement parameters is "review"' do + let(:context_params) { { involvement: ['review'] } } + + it { expect(assigns[:bs_requests]).to contain_exactly(request_with_review) } + end end context 'when looking at the source_projects requests' do @@ -103,7 +109,7 @@ context 'and the involvement parameters is "incoming"' do let(:context_params) { { involvement: ['incoming'] } } - it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request, request_with_review) } + it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request) } end context 'and the involvement parameters is "outgoing"' do @@ -111,6 +117,12 @@ it { expect(assigns[:bs_requests]).to contain_exactly(outgoing_request) } end + + context 'and the involvement parameters is "review"' do + let(:context_params) { { involvement: ['review'] } } + + it { expect(assigns[:bs_requests]).to contain_exactly(request_with_review) } + end end end end diff --git a/src/api/spec/controllers/webui/users/bs_requests_controller_spec.rb b/src/api/spec/controllers/webui/users/bs_requests_controller_spec.rb index 2c9af0595a1..46b50500fda 100644 --- a/src/api/spec/controllers/webui/users/bs_requests_controller_spec.rb +++ b/src/api/spec/controllers/webui/users/bs_requests_controller_spec.rb @@ -78,18 +78,24 @@ it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request, outgoing_request, request_with_review) } - context 'and the involvement parameter is incoming' do + context 'and the involvement parameter is "incoming"' do let(:context_params) { { involvement: ['incoming'] } } - it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request, request_with_review) } + it { expect(assigns[:bs_requests]).to contain_exactly(incoming_request) } end - context 'and the involvement parameter is outgoing' do + context 'and the involvement parameter is "outgoing"' do let(:context_params) { { involvement: ['outgoing'] } } it { expect(assigns[:bs_requests]).to contain_exactly(outgoing_request) } end + context 'and the involvement parameter is "review"' do + let(:context_params) { { involvement: ['review'] } } + + it { expect(assigns[:bs_requests]).to contain_exactly(request_with_review) } + end + context 'and the state parameter is used' do let(:context_params) { { states: ['review'] } } diff --git a/src/api/spec/features/beta/webui/my_requests_spec.rb b/src/api/spec/features/beta/webui/my_requests_spec.rb index f48e804fee1..f42634e4a1d 100644 --- a/src/api/spec/features/beta/webui/my_requests_spec.rb +++ b/src/api/spec/features/beta/webui/my_requests_spec.rb @@ -39,7 +39,7 @@ it 'filter requests' do find_by_id('requests-dropdown-trigger').click if mobile? - check('Incoming', allow_label_click: true) + check('To User', allow_label_click: true) execute_script('$("#content-selector-filters-form").submit()') expect(page).to have_link(href: "/request/show/#{incoming_request.number}") diff --git a/src/api/spec/features/beta/webui/package_requests_spec.rb b/src/api/spec/features/beta/webui/package_requests_spec.rb index 6eba472be4f..6e43f77e6fd 100644 --- a/src/api/spec/features/beta/webui/package_requests_spec.rb +++ b/src/api/spec/features/beta/webui/package_requests_spec.rb @@ -43,7 +43,7 @@ it 'filters requests' do find_by_id('requests-dropdown-trigger').click if mobile? # open the filter dropdown - check('Incoming', allow_label_click: true) + check('To Package', allow_label_click: true) execute_script('$("#content-selector-filters-form").submit()') expect(page).to have_link(href: "/request/show/#{incoming_request.number}") diff --git a/src/api/spec/features/beta/webui/project_requests_spec.rb b/src/api/spec/features/beta/webui/project_requests_spec.rb index eebc189ef4b..ff578b6f711 100644 --- a/src/api/spec/features/beta/webui/project_requests_spec.rb +++ b/src/api/spec/features/beta/webui/project_requests_spec.rb @@ -40,7 +40,7 @@ it 'filter requests' do find_by_id('requests-dropdown-trigger').click if mobile? - check('Incoming', allow_label_click: true) + check('To Project', allow_label_click: true) execute_script('$("#content-selector-filters-form").submit()') expect(page).to have_link(href: "/request/show/#{incoming_request.number}")