From cd4f5180a69543eec742618c4b9d713b8901810f Mon Sep 17 00:00:00 2001 From: CatalinVoineag <11318084+CatalinVoineag@users.noreply.github.com> Date: Wed, 1 May 2024 10:03:45 +0100 Subject: [PATCH] Fix back link when creating a claim When creating a claim you can end up on the edit page of a claim, or mentors list. These edit pages were programmed to always go to the check page, so when a user would click them it would try to redirect them to the check page. This commit fixes this with a reviewed boolean field which is set to true when the user lands on the check page. We use this boolean to know where to redirect the user, back to the check page or through the steps ending on the index page. Once a user lands on the check page, the back buttons should always redirect him to the check page. --- .../claims/schools/claims_controller.rb | 3 +- .../support/schools/claims_controller.rb | 11 +- app/forms/claims/claim/mentors_form.rb | 8 ++ app/forms/claims/claim/provider_form.rb | 18 ++- .../claims/support/claim/mentors_form.rb | 8 ++ .../claims/support/claim/provider_form.rb | 17 +++ app/models/claims/claim.rb | 1 + app/services/claims/claim/review.rb | 15 +++ app/views/claims/schools/claims/edit.html.erb | 2 +- .../schools/claims/mentors/edit.html.erb | 2 +- .../support/schools/claims/edit.html.erb | 2 +- .../schools/claims/mentors/edit.html.erb | 2 +- config/analytics.yml | 1 + ...501065503_add_reviewed_by_user_to_claim.rb | 5 + db/schema.rb | 3 +- spec/factories/claims.rb | 1 + spec/forms/claims/claim/mentors_form_spec.rb | 23 ++++ spec/forms/claims/claim/provider_form_spec.rb | 46 +++++++ .../claims/support/claim/mentors_form_spec.rb | 23 ++++ .../support/claim/provider_form_spec.rb | 117 ++++++++++++++++++ spec/models/claims/claim_spec.rb | 1 + spec/services/claims/claim/review_spec.rb | 18 +++ .../schools/claims/create_claim_spec.rb | 34 +++++ .../schools/claims/create_claim_spec.rb | 36 ++++++ .../schools/claims/edit_draft_claim_spec.rb | 1 + 25 files changed, 386 insertions(+), 12 deletions(-) create mode 100644 app/forms/claims/support/claim/provider_form.rb create mode 100644 app/services/claims/claim/review.rb create mode 100644 db/migrate/20240501065503_add_reviewed_by_user_to_claim.rb create mode 100644 spec/forms/claims/support/claim/provider_form_spec.rb create mode 100644 spec/services/claims/claim/review_spec.rb diff --git a/app/controllers/claims/schools/claims_controller.rb b/app/controllers/claims/schools/claims_controller.rb index 91da15682..a5c17000b 100644 --- a/app/controllers/claims/schools/claims_controller.rb +++ b/app/controllers/claims/schools/claims_controller.rb @@ -25,6 +25,7 @@ def show; end def check last_mentor_training = @claim.mentor_trainings.order_by_mentor_full_name.last + Claims::Claim::Review.call(claim: @claim) @back_path = edit_claims_school_claim_mentor_training_path( @school, @@ -38,7 +39,7 @@ def edit; end def update if claim_provider_form.save - redirect_to check_claims_school_claim_path(@school, claim_provider_form.claim) + redirect_to claim_provider_form.update_success_path else render :edit end diff --git a/app/controllers/claims/support/schools/claims_controller.rb b/app/controllers/claims/support/schools/claims_controller.rb index 305525e2e..60c423dc3 100644 --- a/app/controllers/claims/support/schools/claims_controller.rb +++ b/app/controllers/claims/support/schools/claims_controller.rb @@ -31,6 +31,7 @@ def create def check last_mentor_training = @claim.mentor_trainings.order_by_mentor_full_name.last + Claims::Claim::Review.call(claim: @claim) @back_path = edit_claims_support_school_claim_mentor_training_path( @school, @@ -47,7 +48,7 @@ def edit; end def update if claim_provider_form.save - redirect_to check_claims_support_school_claim_path(@school, claim_provider_form.claim) + redirect_to claim_provider_form.update_success_path else render :edit end @@ -67,7 +68,7 @@ def rejected; end private def claim_params - params.require(:claims_claim_provider_form) + params.require(:claims_support_claim_provider_form) .permit(:id, :provider_id) .merge(default_params) end @@ -86,10 +87,10 @@ def set_claim def claim_provider_form @claim_provider_form ||= - if params[:claims_claim_provider_form].present? - Claims::Claim::ProviderForm.new(claim_params) + if params[:claims_support_claim_provider_form].present? + Claims::Support::Claim::ProviderForm.new(claim_params) else - Claims::Claim::ProviderForm.new(default_params.merge(id: claim_id)) + Claims::Support::Claim::ProviderForm.new(default_params.merge(id: claim_id)) end end diff --git a/app/forms/claims/claim/mentors_form.rb b/app/forms/claims/claim/mentors_form.rb index 232b20794..2f5d71c39 100644 --- a/app/forms/claims/claim/mentors_form.rb +++ b/app/forms/claims/claim/mentors_form.rb @@ -17,6 +17,14 @@ def persist claim.save! end + def edit_back_path + if claim.reviewed? + check_claims_school_claim_path(claim.school, claim) + else + edit_claims_school_claim_path(claim.school, claim) + end + end + def update_success_path if claim.mentor_trainings.without_hours.any? edit_claims_school_claim_mentor_training_path( diff --git a/app/forms/claims/claim/provider_form.rb b/app/forms/claims/claim/provider_form.rb index 1184da315..4a60681bf 100644 --- a/app/forms/claims/claim/provider_form.rb +++ b/app/forms/claims/claim/provider_form.rb @@ -10,7 +10,7 @@ def initialize(attributes = {}) end def persist - return if claim.provider_id == provider_id + return true if claim.provider_id == provider_id ActiveRecord::Base.transaction do claim.provider_id = provider_id @@ -21,6 +21,22 @@ def persist end end + def edit_back_path + if claim.reviewed? + check_claims_school_claim_path(claim.school, claim) + else + claims_school_claims_path(claim.school) + end + end + + def update_success_path + if claim.reviewed? + check_claims_school_claim_path(claim.school, claim) + else + edit_claims_school_claim_mentors_path(claim.school, claim) + end + end + def claim @claim ||= school.claims.find_or_initialize_by(id:) end diff --git a/app/forms/claims/support/claim/mentors_form.rb b/app/forms/claims/support/claim/mentors_form.rb index 44fa8a05b..6c31ee8de 100644 --- a/app/forms/claims/support/claim/mentors_form.rb +++ b/app/forms/claims/support/claim/mentors_form.rb @@ -1,4 +1,12 @@ class Claims::Support::Claim::MentorsForm < Claims::Claim::MentorsForm + def edit_back_path + if claim.reviewed? + check_claims_support_school_claim_path(claim.school, claim) + else + edit_claims_support_school_claim_path(claim.school, claim) + end + end + def update_success_path if claim.mentor_trainings.without_hours.any? edit_claims_support_school_claim_mentor_training_path( diff --git a/app/forms/claims/support/claim/provider_form.rb b/app/forms/claims/support/claim/provider_form.rb new file mode 100644 index 000000000..0beebb1b5 --- /dev/null +++ b/app/forms/claims/support/claim/provider_form.rb @@ -0,0 +1,17 @@ +class Claims::Support::Claim::ProviderForm < Claims::Claim::ProviderForm + def edit_back_path + if claim.reviewed? + check_claims_support_school_claim_path(claim.school, claim) + else + claims_support_school_claims_path(claim.school) + end + end + + def update_success_path + if claim.reviewed? + check_claims_support_school_claim_path(claim.school, claim) + else + edit_claims_support_school_claim_mentors_path(claim.school, claim) + end + end +end diff --git a/app/models/claims/claim.rb b/app/models/claims/claim.rb index db9bb4a3a..763a4b557 100644 --- a/app/models/claims/claim.rb +++ b/app/models/claims/claim.rb @@ -14,6 +14,7 @@ # provider_id :uuid # school_id :uuid not null # submitted_by_id :uuid +# reviewed :boolean default(FALSE) # # Indexes # diff --git a/app/services/claims/claim/review.rb b/app/services/claims/claim/review.rb new file mode 100644 index 000000000..5a18e90bb --- /dev/null +++ b/app/services/claims/claim/review.rb @@ -0,0 +1,15 @@ +class Claims::Claim::Review + include ServicePattern + + def initialize(claim:) + @claim = claim + end + + def call + claim.update!(reviewed: true) + end + + private + + attr_reader :claim +end diff --git a/app/views/claims/schools/claims/edit.html.erb b/app/views/claims/schools/claims/edit.html.erb index c917f9e98..da3753e55 100644 --- a/app/views/claims/schools/claims/edit.html.erb +++ b/app/views/claims/schools/claims/edit.html.erb @@ -2,7 +2,7 @@ <% render "claims/schools/primary_navigation", school: @school, current: :claims %> <%= content_for(:before_content) do %> - <%= govuk_back_link(href: check_claims_school_claim_path(@school, claim_provider_form.claim)) %> + <%= govuk_back_link(href: claim_provider_form.edit_back_path) %> <% end %>