tell when query params have been stored

This commit is contained in:
sebastiencarceles 2023-02-08 14:12:46 +01:00
parent 73fa572236
commit e212055ef8
2 changed files with 28 additions and 3 deletions

View file

@ -1,17 +1,25 @@
module QueryParamsStoreConcern
extend ActiveSupport::Concern
included do
helper_method :stored_query_params?
end
def store_query_params
# Don't override already stored params, because we could do goings and comings with authentication, and
# lost previously stored params
return if session[:stored_params].present? || request.query_parameters.empty?
return if stored_query_params? || request.query_parameters.empty?
session[:stored_params] = request.query_parameters.to_json
end
def retrieve_and_delete_stored_query_params
return {} if session[:stored_params].blank?
return {} unless stored_query_params?
JSON.parse(session.delete(:stored_params))
end
def stored_query_params?
session[:stored_params].present?
end
end

View file

@ -15,7 +15,7 @@ RSpec.describe QueryParamsStoreConcern, type: :controller do
let(:params) { { param1: "param1" } }
it "does nothing" do
session[:stored_params] = "there is alread something in there"
session[:stored_params] = "there is already something in there"
expect { store_query_params }.not_to change { session[:stored_params] }
end
@ -63,4 +63,21 @@ RSpec.describe QueryParamsStoreConcern, type: :controller do
end
end
end
describe '#stored_query_params?' do
subject(:stored_query_params?) { controller.stored_query_params? }
before { controller.store_query_params }
context 'when query params have been stored' do
let(:params) { { param1: "param1", param2: "param2" } }
it { is_expected.to eq(true) }
end
context 'when query params have not been stored' do
let(:params) { {} }
it { is_expected.to eq(false) }
end
end
end