From 73fa5722368127bf602ba7a4431d67ded0690e02 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 11:45:27 +0100 Subject: [PATCH 1/6] spec cover --- spec/views/commencer/show.html.haml_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/views/commencer/show.html.haml_spec.rb b/spec/views/commencer/show.html.haml_spec.rb index f462eefb9..3395255f7 100644 --- a/spec/views/commencer/show.html.haml_spec.rb +++ b/spec/views/commencer/show.html.haml_spec.rb @@ -74,5 +74,19 @@ RSpec.describe 'commencer/show.html.haml', type: :view do expect(rendered).to have_link('Voir mes dossiers en cours', href: dossiers_path) end end + + context 'and they have a prefilled dossier' do + let!(:prefilled_dossier) { create(:dossier, :prefilled, user: user, procedure: procedure) } + + before { assign(:prefilled_dossier, prefilled_dossier) } + + it_behaves_like 'it renders a link to create a new dossier', 'Commencer un nouveau dossier' + + it 'renders a link to resume the pending draft' do + subject + expect(rendered).to have_text(time_ago_in_words(prefilled_dossier.created_at)) + expect(rendered).to have_link('Continuer à remplir mon dossier', href: brouillon_dossier_path(prefilled_dossier)) + end + end end end From e212055ef8929eeaeaa8c2dd319d0840552ef8f8 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 14:12:46 +0100 Subject: [PATCH 2/6] 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 From b3af9108cb3836bff9e797ba587b6680ea057b1d Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 14:38:01 +0100 Subject: [PATCH 3/6] harmonize get and post: go to prefilled file --- app/views/commencer/show.html.haml | 19 +++++++++++-------- config/locales/en.yml | 2 ++ config/locales/fr.yml | 2 ++ spec/views/commencer/show.html.haml_spec.rb | 15 +++++++++++---- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/views/commencer/show.html.haml b/app/views/commencer/show.html.haml index 553f1198e..46d42a2df 100644 --- a/app/views/commencer/show.html.haml +++ b/app/views/commencer/show.html.haml @@ -16,15 +16,18 @@ - drafts = dossiers.merge(Dossier.state_brouillon) - not_drafts = dossiers.merge(Dossier.state_not_brouillon) - - if dossiers.empty? - = link_to t('views.commencer.show.start_procedure'), url_for_new_dossier(@revision), class: 'fr-btn fr-btn--lg fr-my-2w' - - - elsif @prefilled_dossier + - if @prefilled_dossier %h2.huge-title= t('views.commencer.show.prefilled_draft') - %p - = t('views.commencer.show.prefilled_draft_detail_html', time_ago: time_ago_in_words(@prefilled_dossier.created_at), procedure: @prefilled_dossier.procedure.libelle) - = link_to t('views.commencer.show.continue_file'), brouillon_dossier_path(@prefilled_dossier), class: 'fr-btn fr-btn--lg fr-my-2w' - = link_to t('views.commencer.show.start_new_file'), url_for_new_dossier(@revision), class: 'fr-btn fr-btn--lg fr-btn--secondary fr-my-2w' + %p= t('views.commencer.show.prefilled_draft_detail_html', time_ago: time_ago_in_words(@prefilled_dossier.created_at), procedure: @prefilled_dossier.procedure.libelle) + = link_to t('views.commencer.show.go_to_prefilled_file'), brouillon_dossier_path(@prefilled_dossier), class: 'fr-btn fr-btn--lg fr-my-2w' + + - elsif stored_query_params? + %h2.huge-title= t('views.commencer.show.prefilled_draft') + %p= t('views.commencer.show.prefill_dossier_detail_html') + = link_to t('views.commencer.show.go_to_prefilled_file'), url_for_new_dossier(@revision), class: 'fr-btn fr-btn--lg fr-my-2w' + + - elsif dossiers.empty? + = link_to t('views.commencer.show.start_procedure'), url_for_new_dossier(@revision), class: 'fr-btn fr-btn--lg fr-my-2w' - elsif drafts.size == 1 && not_drafts.empty? - dossier = drafts.first diff --git a/config/locales/en.yml b/config/locales/en.yml index e51adfc92..a90ad39c2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,10 +94,12 @@ en: show_dossiers: View my current files prefilled_draft: "You have a prefilled file" prefilled_draft_detail_html: "You prefilled a file for the \"%{procedure}\" procedure %{time_ago} ago" + prefill_dossier_detail_html: "You are ready to continue a prefilled file." already_draft: "You already started to fill a file" already_draft_detail_html: "You started to fill a file for the \"%{procedure}\" procedure %{time_ago} ago" already_not_draft: "You already submitted a file" already_not_draft_detail_html: "You submitted a file for the \"%{procedure}\" procedure %{time_ago} ago." + go_to_prefilled_file: 'Continue to fill my prefilled file' continue_file: "Continue to fill my file" start_new_file: "Start a new file" show_my_submitted_file: 'Show my submitted file' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f17e106ca..b6088c3b7 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -85,10 +85,12 @@ fr: show_dossiers: Voir mes dossiers en cours prefilled_draft: "Vous avez un dossier prérempli" prefilled_draft_detail_html: "Il y a %{time_ago}, vous avez prérempli un dossier sur la démarche « %{procedure} »." + prefill_dossier_detail_html: "Vous êtes prêt·e à poursuivre un dossier prérempli." already_draft: "Vous avez déjà commencé à remplir un dossier" already_draft_detail_html: "Il y a %{time_ago}, vous avez commencé à remplir un dossier sur la démarche « %{procedure} »." already_not_draft: "Vous avez déjà déposé un dossier" already_not_draft_detail_html: "Il y a %{time_ago}, vous avez déposé un dossier sur la démarche « %{procedure} »." + go_to_prefilled_file: 'Poursuivre mon dossier prérempli' continue_file: 'Continuer à remplir mon dossier' start_new_file: 'Commencer un nouveau dossier' show_my_submitted_file: 'Voir mon dossier déposé' diff --git a/spec/views/commencer/show.html.haml_spec.rb b/spec/views/commencer/show.html.haml_spec.rb index 3395255f7..45d2923ef 100644 --- a/spec/views/commencer/show.html.haml_spec.rb +++ b/spec/views/commencer/show.html.haml_spec.rb @@ -1,6 +1,7 @@ RSpec.describe 'commencer/show.html.haml', type: :view do include Rails.application.routes.url_helpers + let(:stored_query_params) { false } let(:procedure) { create(:procedure, :published, :for_individual, :with_service) } before do @@ -9,6 +10,8 @@ RSpec.describe 'commencer/show.html.haml', type: :view do if user sign_in user end + + allow(view).to receive(:stored_query_params?).and_return(stored_query_params) end subject { render } @@ -80,13 +83,17 @@ RSpec.describe 'commencer/show.html.haml', type: :view do before { assign(:prefilled_dossier, prefilled_dossier) } - it_behaves_like 'it renders a link to create a new dossier', 'Commencer un nouveau dossier' - - it 'renders a link to resume the pending draft' do + it 'renders a link to resume the prefilled dossier' do subject expect(rendered).to have_text(time_ago_in_words(prefilled_dossier.created_at)) - expect(rendered).to have_link('Continuer à remplir mon dossier', href: brouillon_dossier_path(prefilled_dossier)) + expect(rendered).to have_link('Poursuivre mon dossier prérempli', href: brouillon_dossier_path(prefilled_dossier)) end end + + context 'and they have stored query params in order to prefill a dossier' do + let(:stored_query_params) { true } + + it_behaves_like 'it renders a link to create a new dossier', 'Poursuivre mon dossier prérempli' + end end end From 7a254d124f00d58c2430423b6aae407da0b20fce Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 15:06:45 +0100 Subject: [PATCH 4/6] feature spec cover --- spec/system/users/dossier_prefill_get_spec.rb | 8 ++++---- spec/system/users/dossier_prefill_post_spec.rb | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/system/users/dossier_prefill_get_spec.rb b/spec/system/users/dossier_prefill_get_spec.rb index d7b9eed35..06fd9e8b8 100644 --- a/spec/system/users/dossier_prefill_get_spec.rb +++ b/spec/system/users/dossier_prefill_get_spec.rb @@ -23,7 +23,7 @@ describe 'Prefilling a dossier (with a GET request):' do "champ_#{type_de_champ_phone.to_typed_id}" => phone_value ) - click_on "Commencer la démarche" + click_on "Poursuivre mon dossier prérempli" end end end @@ -45,7 +45,7 @@ describe 'Prefilling a dossier (with a GET request):' do click_on "J’ai déjà un compte" sign_in_with user.email, password - click_on "Commencer la démarche" + click_on "Poursuivre mon dossier prérempli" end end end @@ -64,7 +64,7 @@ describe 'Prefilling a dossier (with a GET request):' do click_confirmation_link_for user_email expect(page).to have_content('Votre compte a bien été confirmé.') - click_on "Commencer la démarche" + click_on "Poursuivre mon dossier prérempli" end end end @@ -79,7 +79,7 @@ describe 'Prefilling a dossier (with a GET request):' do page.find('.fr-connect').click - click_on "Commencer la démarche" + click_on "Poursuivre mon dossier prérempli" end end end diff --git a/spec/system/users/dossier_prefill_post_spec.rb b/spec/system/users/dossier_prefill_post_spec.rb index 8b495da8d..27b7aa5ab 100644 --- a/spec/system/users/dossier_prefill_post_spec.rb +++ b/spec/system/users/dossier_prefill_post_spec.rb @@ -27,7 +27,7 @@ describe 'Prefilling a dossier (with a POST request):' do visit create_and_prefill_dossier_with_post_request expect(page).to have_content('Vous avez un dossier prérempli') - click_on 'Continuer à remplir mon dossier' + click_on 'Poursuivre mon dossier prérempli' end end end @@ -44,7 +44,7 @@ describe 'Prefilling a dossier (with a POST request):' do sign_in_with user.email, password expect(page).to have_content('Vous avez un dossier prérempli') - click_on 'Continuer à remplir mon dossier' + click_on 'Poursuivre mon dossier prérempli' end end end @@ -64,7 +64,7 @@ describe 'Prefilling a dossier (with a POST request):' do expect(page).to have_content('Votre compte a bien été confirmé.') expect(page).to have_content('Vous avez un dossier prérempli') - click_on 'Continuer à remplir mon dossier' + click_on 'Poursuivre mon dossier prérempli' end end end @@ -80,7 +80,7 @@ describe 'Prefilling a dossier (with a POST request):' do page.find('.fr-connect').click expect(page).to have_content('Vous avez un dossier prérempli') - click_on 'Continuer à remplir mon dossier' + click_on 'Poursuivre mon dossier prérempli' end end end From 6c5b82ebbf6ba6e460a60515ec544e586e6e616e Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Wed, 8 Feb 2023 15:23:50 +0100 Subject: [PATCH 5/6] filter out locale from stored query params As 'locale' isn't a param we want to prefill a dossier, we ignore it and remove it from the stored query params. --- app/controllers/concerns/query_params_store_concern.rb | 10 ++++++++-- .../concerns/query_params_store_concern_spec.rb | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/controllers/concerns/query_params_store_concern.rb b/app/controllers/concerns/query_params_store_concern.rb index f4011abc0..f8584e7f4 100644 --- a/app/controllers/concerns/query_params_store_concern.rb +++ b/app/controllers/concerns/query_params_store_concern.rb @@ -8,9 +8,9 @@ module QueryParamsStoreConcern 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 stored_query_params? || request.query_parameters.empty? + return if stored_query_params? || filtered_query_params.empty? - session[:stored_params] = request.query_parameters.to_json + session[:stored_params] = filtered_query_params.to_json end def retrieve_and_delete_stored_query_params @@ -22,4 +22,10 @@ module QueryParamsStoreConcern def stored_query_params? session[:stored_params].present? end + + private + + def filtered_query_params + request.query_parameters.except(:locale, "locale") + 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 395f51434..42b29177f 100644 --- a/spec/controllers/concerns/query_params_store_concern_spec.rb +++ b/spec/controllers/concerns/query_params_store_concern_spec.rb @@ -36,6 +36,14 @@ RSpec.describe QueryParamsStoreConcern, type: :controller do expect { store_query_params }.to change { session[:stored_params] }.from(nil).to(params.to_json) end end + + context 'when params contain a locale' do + let(:params) { { locale: "fr", param2: "param2" } } + + it "does not store the locale" do + expect { store_query_params }.to change { session[:stored_params] }.from(nil).to({ param2: "param2" }.to_json) + end + end end describe '#retrieve_and_delete_stored_query_params' do From 3404b5aa0b7bd6c81551df99c6c30620f6815959 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Thu, 9 Feb 2023 11:02:07 +0100 Subject: [PATCH 6/6] review: wordings --- app/views/commencer/show.html.haml | 4 ++-- config/locales/en.yml | 4 ++-- config/locales/fr.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/commencer/show.html.haml b/app/views/commencer/show.html.haml index 46d42a2df..d15e5cf6d 100644 --- a/app/views/commencer/show.html.haml +++ b/app/views/commencer/show.html.haml @@ -18,12 +18,12 @@ - if @prefilled_dossier %h2.huge-title= t('views.commencer.show.prefilled_draft') - %p= t('views.commencer.show.prefilled_draft_detail_html', time_ago: time_ago_in_words(@prefilled_dossier.created_at), procedure: @prefilled_dossier.procedure.libelle) + %p= t('views.commencer.show.prefilled_draft_detail_html', time_ago: time_ago_in_words(@prefilled_dossier.created_at), procedure: @procedure.libelle) = link_to t('views.commencer.show.go_to_prefilled_file'), brouillon_dossier_path(@prefilled_dossier), class: 'fr-btn fr-btn--lg fr-my-2w' - elsif stored_query_params? %h2.huge-title= t('views.commencer.show.prefilled_draft') - %p= t('views.commencer.show.prefill_dossier_detail_html') + %p= t('views.commencer.show.prefill_dossier_detail_html', procedure: @procedure.libelle) = link_to t('views.commencer.show.go_to_prefilled_file'), url_for_new_dossier(@revision), class: 'fr-btn fr-btn--lg fr-my-2w' - elsif dossiers.empty? diff --git a/config/locales/en.yml b/config/locales/en.yml index a90ad39c2..17d80a709 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -93,8 +93,8 @@ en: existing_dossiers: You already have files for this procedure show_dossiers: View my current files prefilled_draft: "You have a prefilled file" - prefilled_draft_detail_html: "You prefilled a file for the \"%{procedure}\" procedure %{time_ago} ago" - prefill_dossier_detail_html: "You are ready to continue a prefilled file." + prefilled_draft_detail_html: "You are ready to continue a prefilled file for the \"%{procedure}\" procedure, started %{time_ago} ago." + prefill_dossier_detail_html: "You are ready to continue a prefilled file for the \"%{procedure}\" procedure." already_draft: "You already started to fill a file" already_draft_detail_html: "You started to fill a file for the \"%{procedure}\" procedure %{time_ago} ago" already_not_draft: "You already submitted a file" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index b6088c3b7..efd5e4d63 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -84,8 +84,8 @@ fr: existing_dossiers: Vous avez déjà des dossiers pour cette démarche show_dossiers: Voir mes dossiers en cours prefilled_draft: "Vous avez un dossier prérempli" - prefilled_draft_detail_html: "Il y a %{time_ago}, vous avez prérempli un dossier sur la démarche « %{procedure} »." - prefill_dossier_detail_html: "Vous êtes prêt·e à poursuivre un dossier prérempli." + prefilled_draft_detail_html: "Vous êtes prêt·e à poursuivre un dossier prérempli sur la démarche « %{procedure} », commencé il y a %{time_ago}." + prefill_dossier_detail_html: "Vous êtes prêt·e à poursuivre un dossier prérempli sur la démarche « %{procedure} »." already_draft: "Vous avez déjà commencé à remplir un dossier" already_draft_detail_html: "Il y a %{time_ago}, vous avez commencé à remplir un dossier sur la démarche « %{procedure} »." already_not_draft: "Vous avez déjà déposé un dossier"