Browse Source

set filter from within get index

pull/449/head
Kat 3 years ago
parent
commit
bdc624cfa9
  1. 11
      app/controllers/case_logs_controller.rb
  2. 2
      app/views/case_logs/_log_filters.erb
  3. 2
      config/routes.rb
  4. 17
      spec/requests/case_logs_controller_spec.rb

11
app/controllers/case_logs_controller.rb

@ -7,6 +7,8 @@ class CaseLogsController < ApplicationController
before_action :find_resource, except: %i[create index edit] before_action :find_resource, except: %i[create index edit]
def index def index
set_session_filters if params[:status].present?
@pagy, @case_logs = pagy(filtered_case_logs) @pagy, @case_logs = pagy(filtered_case_logs)
respond_to do |format| respond_to do |format|
@ -78,11 +80,6 @@ class CaseLogsController < ApplicationController
end end
end end
def filter
session[:case_logs_filters] = { status: params[:status] }.to_json
redirect_back(fallback_location: root_path)
end
private private
API_ACTIONS = %w[create show update destroy].freeze API_ACTIONS = %w[create show update destroy].freeze
@ -130,4 +127,8 @@ private
user_case_logs.filter_by_status(status_filter) user_case_logs.filter_by_status(status_filter)
end end
def set_session_filters
session[:case_logs_filters] = { status: params[:status] }.to_json
end
end end

2
app/views/case_logs/_log_filters.erb

@ -12,7 +12,7 @@
</div> </div>
<div class="app-filter__content"> <div class="app-filter__content">
<div class="govuk-form-group app-filter__group"> <div class="govuk-form-group app-filter__group">
<%= 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 %> <%= f.govuk_check_boxes_fieldset :status, legend: { text: "Status", size: "s"} do %>
<div class="govuk-checkboxes govuk-checkboxes--small" data-module="govuk-checkboxes"> <div class="govuk-checkboxes govuk-checkboxes--small" data-module="govuk-checkboxes">
<% statuses = status_filters %> <% statuses = status_filters %>

2
config/routes.rb

@ -90,8 +90,6 @@ Rails.application.routes.draw do
end end
end end
post "/logs/filter", to: "case_logs#filter"
scope via: :all do scope via: :all do
match "/404", to: "errors#not_found" match "/404", to: "errors#not_found"
match "/429", to: "errors#too_many_requests", status: 429 match "/429", to: "errors#too_many_requests", status: 429

17
spec/requests/case_logs_controller_spec.rb

@ -189,12 +189,23 @@ RSpec.describe CaseLogsController, type: :request do
in_progress_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{in_progress_case_log.id}\">#{in_progress_case_log.id}</a>" in_progress_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{in_progress_case_log.id}\">#{in_progress_case_log.id}</a>"
completed_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{completed_case_log.id}\">#{completed_case_log.id}</a>" completed_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{completed_case_log.id}\">#{completed_case_log.id}</a>"
post "/logs/filter", headers: headers, params: { status: %w[in_progress completed] } get "/logs?status[]=in_progress&status[]=completed", headers: headers, params: {}
get "/logs", headers: headers, params: {}
expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) 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) 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 = "<a class=\"govuk-link\" href=\"/logs/#{in_progress_case_log.id}\">#{in_progress_case_log.id}</a>"
completed_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{completed_case_log.id}\">#{completed_case_log.id}</a>"
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: {} get "/logs", headers: headers, params: {}
expect(CGI.unescape_html(response.body)).to include(in_progress_case_row_log) 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) expect(CGI.unescape_html(response.body)).not_to include(completed_case_row_log)

Loading…
Cancel
Save