From e212055ef8929eeaeaa8c2dd319d0840552ef8f8 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 14:12:46 +0100 Subject: [PATCH] tell when query params have been stored --- .../concerns/query_params_store_concern.rb | 12 ++++++++++-- .../query_params_store_concern_spec.rb | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/controllers/concerns/query_params_store_concern.rb b/app/controllers/concerns/query_params_store_concern.rb index 31c8828ee..f4011abc0 100644 --- a/app/controllers/concerns/query_params_store_concern.rb +++ b/app/controllers/concerns/query_params_store_concern.rb @@ -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 diff --git a/spec/controllers/concerns/query_params_store_concern_spec.rb b/spec/controllers/concerns/query_params_store_concern_spec.rb index c2e228944..395f51434 100644 --- a/spec/controllers/concerns/query_params_store_concern_spec.rb +++ b/spec/controllers/concerns/query_params_store_concern_spec.rb @@ -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