From e6d6a89d701400a0f7d01b5175ddd806e8a9b46b Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 8 Feb 2022 09:51:05 +0000 Subject: [PATCH] Fixes from PR review --- app/controllers/form_controller.rb | 2 +- app/models/form.rb | 5 + app/views/form/page.html.erb | 2 +- spec/factories/case_log.rb | 121 ------------------------- spec/features/form/validations_spec.rb | 4 +- 5 files changed, 10 insertions(+), 124 deletions(-) diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 3dbc0de7f..bb99cd040 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -8,7 +8,7 @@ class FormController < ApplicationController @page = @case_log.form.get_page(params[:case_log][:page]) responses_for_page = responses_for_page(@page) if @case_log.update(responses_for_page) && @case_log.has_no_unresolved_soft_errors? - if @page.id == "declaration" + if @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log) redirect_to(case_logs_path) else redirect_path = @case_log.form.next_page_redirect_path(@page, @case_log) diff --git a/app/models/form.rb b/app/models/form.rb index f14adc9f8..a233e7aee 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -122,4 +122,9 @@ class Form def readonly_questions questions.select(&:read_only?) end + + def is_last_question?(page, subsection, case_log) + subsection_ids = subsections.map(&:id) + subsection.id == subsection_ids[subsection_ids.length - 1] && next_page(page, case_log) == :check_answers + end end diff --git a/app/views/form/page.html.erb b/app/views/form/page.html.erb index 0919316ec..bf648599f 100644 --- a/app/views/form/page.html.erb +++ b/app/views/form/page.html.erb @@ -47,7 +47,7 @@ <% end %> <%= f.hidden_field :page, value: @page.id %> - <% if @page.id == "declaration" %> + <% if @case_log.form.is_last_question?(@page, @subsection, @case_log) %> <%= f.govuk_submit "Submit lettings log" %> <%else %> <%= f.govuk_submit "Save and continue" %> diff --git a/spec/factories/case_log.rb b/spec/factories/case_log.rb index 308e2fa85..a4bbfd021 100644 --- a/spec/factories/case_log.rb +++ b/spec/factories/case_log.rb @@ -154,127 +154,6 @@ FactoryBot.define do la_known { "Yes" } declaration { "Yes" } end - trait :completed_without_declaration do - status { 1 } - tenant_code { "BZ737" } - postcode { "NW1 7TY" } - age1 { 35 } - sex1 { "Female" } - ethnic { 2 } - national { 4 } - prevten { "Private sector tenancy" } - ecstat1 { 2 } - other_hhmemb { 1 } - hhmemb { 2 } - relat2 { "Partner" } - age2 { 32 } - sex2 { "Male" } - ecstat2 { "Not seeking work" } - homeless { "Yes - other homelessness" } - underoccupation_benefitcap { "No" } - leftreg { "No - they left up to 5 years ago" } - reservist { "No" } - illness { "Yes" } - preg_occ { "Yes" } - accessibility_requirements { "No" } - condition_effects { "dummy" } - tenancy_code { "BZ757" } - startertenancy { "No" } - tenancylength { 5 } - tenancy { "Secure (including flexible)" } - lettype { "Affordable Rent General needs LA" } - landlord { "This landlord" } - previous_postcode { "SE2 6RT" } - rsnvac { "Tenant abandoned property" } - unittype_gn { "House" } - beds { 3 } - property_void_date { "03/11/2019" } - offered { 2 } - wchair { "Yes" } - earnings { 68 } - benefits { "Some" } - period { "Every 2 weeks" } - brent { 200 } - scharge { 50 } - pscharge { 40 } - supcharg { 35 } - tcharge { 325 } - layear { "1 to 2 years" } - lawaitlist { "Less than 1 year" } - property_postcode { "NW1 5TY" } - reasonpref { "Yes" } - reasonable_preference_reason { "dummy" } - cbl { "Yes" } - chr { "Yes" } - cap { "No" } - other_reason_for_leaving_last_settled_home { nil } - housingneeds_a { "Yes" } - housingneeds_b { "No" } - housingneeds_c { "No" } - housingneeds_f { "No" } - housingneeds_g { "No" } - housingneeds_h { "No" } - accessibility_requirements_prefer_not_to_say { 0 } - illness_type_1 { "No" } - illness_type_2 { "Yes" } - illness_type_3 { "No" } - illness_type_4 { "No" } - illness_type_8 { "No" } - illness_type_5 { "No" } - illness_type_6 { "No" } - illness_type_7 { "No" } - illness_type_9 { "No" } - illness_type_10 { "No" } - rp_homeless { "Yes" } - rp_insan_unsat { "No" } - rp_medwel { "No" } - rp_hardship { "No" } - rp_dontknow { "No" } - discarded_at { nil } - tenancyother { nil } - override_net_income_validation { nil } - net_income_known { "Weekly" } - gdpr_acceptance { "Yes" } - gdpr_declined { "No" } - property_owner_organisation { "Test" } - property_manager_organisation { "Test" } - renewal { 1 } - rent_type { 1 } - intermediate_rent_product_name { 2 } - needstype { 1 } - purchaser_code { 798_794 } - reason { "Permanently decanted from another property owned by this landlord" } - propcode { "123" } - majorrepairs { "Yes" } - la { "Barnet" } - prevloc { "Ashford" } - hb { 1 } - hbrentshortfall { "Yes" } - tshortfall { 12 } - postcod2 { "w3" } - ppostc1 { "w3" } - ppostc2 { "w3" } - property_relet { "No" } - mrcdate { Time.zone.now } - mrcday { 5 } - mrcmonth { 5 } - mrcyear { 2020 } - incref { 0 } - sale_completion_date { nil } - startdate { Time.zone.now } - day { Time.zone.now.day } - month { Time.zone.now.month } - year { 2021 } - armedforces { 1 } - builtype { 1 } - unitletas { 2 } - household_charge { "Yes" } - has_benefits { "Yes" } - is_carehome { "No" } - chcharge { 7 } - letting_in_sheltered_accomodation { "No" } - la_known { "Yes" } - end created_at { Time.zone.now } updated_at { Time.zone.now } end diff --git a/spec/features/form/validations_spec.rb b/spec/features/form/validations_spec.rb index d5c710436..c11d238f3 100644 --- a/spec/features/form/validations_spec.rb +++ b/spec/features/form/validations_spec.rb @@ -28,9 +28,11 @@ RSpec.describe "validations" do let(:completed_without_declaration) do FactoryBot.create( :case_log, - :completed_without_declaration, + :completed, owning_organisation: user.organisation, managing_organisation: user.organisation, + status: 1, + declaration: nil, ) end let(:id) { case_log.id }