Browse Source

use session instead of cookies

pull/449/head
Kat 3 years ago
parent
commit
5c29be5e6b
  1. 4
      app/controllers/case_logs_controller.rb
  2. 4
      app/helpers/filters_helper.rb
  3. 2
      spec/helpers/filters_helper_spec.rb
  4. 23
      spec/requests/case_logs_controller_spec.rb

4
app/controllers/case_logs_controller.rb

@ -79,7 +79,7 @@ class CaseLogsController < ApplicationController
end
def filter
cookies[:case_logs_filters] = { status: params[:status] }.to_json
session[:case_logs_filters] = { status: JSON.parse(params[:status]) }.to_json
redirect_back(fallback_location: root_path)
end
@ -125,7 +125,7 @@ private
def filtered_case_logs
user_case_logs = current_user.case_logs
status_filter = JSON.parse(cookies[:case_logs_filters])["status"] if cookies[:case_logs_filters].present?
status_filter = JSON.parse(session[:case_logs_filters])["status"] if session[:case_logs_filters].present?
return user_case_logs unless status_filter
user_case_logs.filter_by_status(status_filter)

4
app/helpers/filters_helper.rb

@ -1,8 +1,8 @@
module FiltersHelper
def filter_selected?(filter)
return true unless cookies[:case_logs_filters]
return true unless session[:case_logs_filters]
selected_filters = JSON.parse(cookies[:case_logs_filters])
selected_filters = JSON.parse(session[:case_logs_filters])
selected_filters["status"].present? && selected_filters["status"].include?(filter.to_s)
end
end

2
spec/helpers/filters_helper_spec.rb

@ -11,7 +11,7 @@ RSpec.describe FiltersHelper do
context "when one filter is selected" do
before do
cookies[:case_logs_filters] = { "status": "in_progress" }.to_json
session[:case_logs_filters] = { "status": "in_progress" }.to_json
end
it "returns false for non selected filters" do

23
spec/requests/case_logs_controller_spec.rb

@ -189,12 +189,12 @@ 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>"
completed_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{completed_case_log.id}\">#{completed_case_log.id}</a>"
cookies[:case_logs_filters] = { status: %w[in_progress completed] }.to_json
post "/logs/filter", headers: headers, params: { status: %w[in_progress completed].to_json }
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(completed_case_row_log)
cookies[:case_logs_filters] = { status: %w[in_progress] }.to_json
post "/logs/filter", headers: headers, params: { status: %w[in_progress].to_json }
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)
@ -654,23 +654,4 @@ RSpec.describe CaseLogsController, type: :request do
end
end
end
describe "POST #filter" do
let(:user) { FactoryBot.create(:user) }
let(:params) do
{
"status": ["In progress"],
}
end
before do
sign_in user
end
it "sets status filter in the cookies" do
expect(cookies[:case_logs_filters]).to be_nil
post "/logs/filter", headers: headers, params: params.to_json
expect(JSON.parse(cookies[:case_logs_filters])["status"]).to eq(["In progress"])
end
end
end

Loading…
Cancel
Save