tell when query params have been stored
This commit is contained in:
parent
73fa572236
commit
e212055ef8
2 changed files with 28 additions and 3 deletions
|
@ -1,17 +1,25 @@
|
||||||
module QueryParamsStoreConcern
|
module QueryParamsStoreConcern
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
helper_method :stored_query_params?
|
||||||
|
end
|
||||||
|
|
||||||
def store_query_params
|
def store_query_params
|
||||||
# Don't override already stored params, because we could do goings and comings with authentication, and
|
# Don't override already stored params, because we could do goings and comings with authentication, and
|
||||||
# lost previously stored params
|
# 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
|
session[:stored_params] = request.query_parameters.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def retrieve_and_delete_stored_query_params
|
def retrieve_and_delete_stored_query_params
|
||||||
return {} if session[:stored_params].blank?
|
return {} unless stored_query_params?
|
||||||
|
|
||||||
JSON.parse(session.delete(:stored_params))
|
JSON.parse(session.delete(:stored_params))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def stored_query_params?
|
||||||
|
session[:stored_params].present?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,7 +15,7 @@ RSpec.describe QueryParamsStoreConcern, type: :controller do
|
||||||
let(:params) { { param1: "param1" } }
|
let(:params) { { param1: "param1" } }
|
||||||
|
|
||||||
it "does nothing" do
|
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] }
|
expect { store_query_params }.not_to change { session[:stored_params] }
|
||||||
end
|
end
|
||||||
|
@ -63,4 +63,21 @@ RSpec.describe QueryParamsStoreConcern, type: :controller do
|
||||||
end
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue