diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 458f4e217..767e33046 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -7,6 +7,8 @@ class CaseLogsController < ApplicationController before_action :find_resource, except: %i[create index edit] def index + set_session_filters if params[:status].present? + @pagy, @case_logs = pagy(filtered_case_logs) respond_to do |format| @@ -78,11 +80,6 @@ class CaseLogsController < ApplicationController end end - def filter - session[:case_logs_filters] = { status: params[:status] }.to_json - redirect_back(fallback_location: root_path) - end - private API_ACTIONS = %w[create show update destroy].freeze @@ -130,4 +127,8 @@ private user_case_logs.filter_by_status(status_filter) end + + def set_session_filters + session[:case_logs_filters] = { status: params[:status] }.to_json + end end diff --git a/app/views/case_logs/_log_filters.erb b/app/views/case_logs/_log_filters.erb index 0fda14454..4e5593a62 100644 --- a/app/views/case_logs/_log_filters.erb +++ b/app/views/case_logs/_log_filters.erb @@ -12,7 +12,7 @@
- <%= form_with url: "/logs/filter", html: { method: :post } do |f| %> + <%= form_with url: "/logs", html: { method: :get } do |f| %> <%= f.govuk_check_boxes_fieldset :status, legend: { text: "Status", size: "s"} do %>
<% statuses = status_filters %> diff --git a/config/routes.rb b/config/routes.rb index 36169aabf..4cb364878 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -90,8 +90,6 @@ Rails.application.routes.draw do end end - post "/logs/filter", to: "case_logs#filter" - scope via: :all do match "/404", to: "errors#not_found" match "/429", to: "errors#too_many_requests", status: 429 diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb index f111b0e76..505da354e 100644 --- a/spec/requests/case_logs_controller_spec.rb +++ b/spec/requests/case_logs_controller_spec.rb @@ -189,12 +189,23 @@ RSpec.describe CaseLogsController, type: :request do in_progress_case_row_log = "#{in_progress_case_log.id}" completed_case_row_log = "#{completed_case_log.id}" - post "/logs/filter", headers: headers, params: { status: %w[in_progress completed] } - get "/logs", headers: headers, params: {} + get "/logs?status[]=in_progress&status[]=completed", headers: headers, params: {} expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) expect(CGI.unescape_html(response.body)).to include(completed_case_row_log) - post "/logs/filter", headers: headers, params: { status: %w[in_progress] } + get "/logs?status[]=in_progress", headers: headers, params: {} + expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) + expect(CGI.unescape_html(response.body)).not_to include(completed_case_row_log) + end + + it "does not reset the filters" do + in_progress_case_row_log = "#{in_progress_case_log.id}" + completed_case_row_log = "#{completed_case_log.id}" + + get "/logs?status[]=in_progress", headers: headers, params: {} + expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) + expect(CGI.unescape_html(response.body)).not_to include(completed_case_row_log) + get "/logs", headers: headers, params: {} expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) expect(CGI.unescape_html(response.body)).not_to include(completed_case_row_log)