Browse Source

CLDC-3499: Fix validations spec to be non year specific

CLDC-3499-remove-pre-2025-tests
samyou-softwire 3 weeks ago
parent
commit
bb8113c607
  1. 78
      spec/features/form/validations_spec.rb

78
spec/features/form/validations_spec.rb

@ -2,47 +2,31 @@ require "rails_helper"
require_relative "helpers" require_relative "helpers"
RSpec.describe "validations" do RSpec.describe "validations" do
around do |example|
Timecop.freeze(Time.zone.local(2022, 1, 1)) do
Singleton.__init__(FormHandler)
example.run
end
Timecop.return
Singleton.__init__(FormHandler)
end
let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") }
let(:user) { FactoryBot.create(:user) } let(:user) { FactoryBot.create(:user) }
let(:lettings_log) do let(:lettings_log) do
FactoryBot.create( FactoryBot.create(
:lettings_log, :lettings_log,
:in_progress, :setup_completed,
assigned_to: user, assigned_to: user,
renewal: 0, renewal: 0,
) first_time_property_let_as_social_housing: 0,
end unitletas: 1,
let(:empty_lettings_log) do rsnvac: 9
FactoryBot.create(
:lettings_log,
assigned_to: user,
) )
end end
let(:id) { lettings_log.id } let(:id) { lettings_log.id }
before do before do
allow(fake_2021_2022_form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(lettings_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
sign_in user sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end end
include Helpers include Helpers
include CollectionTimeHelper
describe "Question validation" do describe "Question validation" do
context "when the tenant age is invalid" do context "when the tenant age is invalid" do
it "shows validation for under 0" do it "shows validation for under 0" do
visit("/lettings-logs/#{id}/person-1-age") fill_in_number_question(id, "age1", -5, "lead-tenant-age")
fill_in_number_question(empty_lettings_log.id, "age1", -5, "person-1-age")
expect(page).to have_selector(".govuk-error-summary__title") expect(page).to have_selector(".govuk-error-summary__title")
expect(page).to have_selector("#lettings-log-age1-error") expect(page).to have_selector("#lettings-log-age1-error")
expect(page).to have_selector("#lettings-log-age1-field-error") expect(page).to have_selector("#lettings-log-age1-field-error")
@ -50,8 +34,7 @@ RSpec.describe "validations" do
end end
it "shows validation for over 120" do it "shows validation for over 120" do
visit("/lettings-logs/#{id}/person-1-age") fill_in_number_question(id, "age1", 121, "lead-tenant-age")
fill_in_number_question(empty_lettings_log.id, "age1", 121, "person-1-age")
expect(page).to have_selector(".govuk-error-summary__title") expect(page).to have_selector(".govuk-error-summary__title")
expect(page).to have_selector("#lettings-log-age1-error") expect(page).to have_selector("#lettings-log-age1-error")
expect(page).to have_selector("#lettings-log-age1-field-error") expect(page).to have_selector("#lettings-log-age1-field-error")
@ -63,11 +46,12 @@ RSpec.describe "validations" do
describe "date validation", :js do describe "date validation", :js do
def fill_in_date(lettings_log_id, question, day, month, year, path) def fill_in_date(lettings_log_id, question, day, month, year, path)
visit("/lettings-logs/#{lettings_log_id}/#{path}") visit("/lettings-logs/#{lettings_log_id}/#{path}")
choose("lettings-log-majorrepairs-1-field", allow_label_click: true)
fill_in("lettings_log[#{question}]", with: [day, month, year].join("/")) fill_in("lettings_log[#{question}]", with: [day, month, year].join("/"))
end end
it "does not allow out of range dates to be submitted" do it "does not allow out of range dates to be submitted" do
fill_in_date(id, "mrcdate", 3100, 12, 2000, "property-major-repairs") fill_in_date(id, "mrcdate", 3100, 12, current_collection_start_year, "property-major-repairs")
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
@ -75,13 +59,9 @@ RSpec.describe "validations" do
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
fill_in_date(id, "mrcdate", 13, 100, 2020, "property-major-repairs") fill_in_date(id, "mrcdate", 13, 100, current_collection_start_year, "property-major-repairs")
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
fill_in_date(id, "mrcdate", 21, 11, 2020, "property-major-repairs")
click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/local-authority/check-answers")
end end
it "does not allow non numeric inputs to be submitted" do it "does not allow non numeric inputs to be submitted" do
@ -95,19 +75,20 @@ RSpec.describe "validations" do
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
fill_in_date(id, "mrcdate", 12, nil, 2000, "property-major-repairs") fill_in_date(id, "mrcdate", 12, nil, current_collection_start_year, "property-major-repairs")
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
fill_in_date(id, "mrcdate", nil, 10, 2020, "property-major-repairs") fill_in_date(id, "mrcdate", nil, 10, current_collection_start_year, "property-major-repairs")
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs") expect(page).to have_current_path("/lettings-logs/#{id}/property-major-repairs")
end end
it "allows valid inputs to be submitted" do it "allows valid inputs to be submitted" do
fill_in_date(id, "mrcdate", 21, 11, 2020, "property-major-repairs") valid_mcrdate = lettings_log.startdate - 1.day
fill_in_date(id, "mrcdate", valid_mcrdate.day, valid_mcrdate.month, valid_mcrdate.year, "property-major-repairs")
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{id}/local-authority/check-answers") expect(page).to have_current_path("/lettings-logs/#{id}/property-information/check-answers")
end end
end end
@ -120,13 +101,14 @@ RSpec.describe "validations" do
hhmemb: 1, hhmemb: 1,
ecstat1: 1, ecstat1: 1,
assigned_to: user, assigned_to: user,
net_income_known: 0,
) )
end end
let(:income_over_soft_limit) { 750 } let(:income_over_soft_limit) { 750 }
let(:income_under_soft_limit) { 700 } let(:income_under_soft_limit) { 700 }
before do before do
visit("/lettings-logs/#{lettings_log.id}/net-income") visit("/lettings-logs/#{lettings_log.id}/income-amount")
fill_in("lettings-log-earnings-field", with: income_over_soft_limit) fill_in("lettings-log-earnings-field", with: income_over_soft_limit)
choose("lettings-log-incfreq-1-field", allow_label_click: true) choose("lettings-log-incfreq-1-field", allow_label_click: true)
click_button("Save and continue") click_button("Save and continue")
@ -138,16 +120,16 @@ RSpec.describe "validations" do
expect(page).to have_content("This is higher than we would expect for the household’s working situation.") expect(page).to have_content("This is higher than we would expect for the household’s working situation.")
expect(page).not_to have_button("Save changes") expect(page).not_to have_button("Save changes")
click_button("Confirm and continue") click_button("Confirm and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-uc-proportion") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/housing-benefit")
end end
it "allows to fix the questions that trigger the soft validation" do it "allows to fix the questions that trigger the soft validation" do
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen").twice expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen") expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/lead-tenant-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen", match: :first) click_link("Change", href: "/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen", match: :first)
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen")
fill_in("lettings-log-earnings-field", with: income_under_soft_limit) fill_in("lettings-log-earnings-field", with: income_under_soft_limit)
choose("lettings-log-incfreq-1-field", allow_label_click: true) choose("lettings-log-incfreq-1-field", allow_label_click: true)
click_button("Save and continue") click_button("Save and continue")
@ -158,11 +140,11 @@ RSpec.describe "validations" do
it "allows to fix the questions from different sections" do it "allows to fix the questions from different sections" do
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen").twice expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen") expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/lead-tenant-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen") click_link("Change", href: "/lettings-logs/#{lettings_log.id}/lead-tenant-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/lead-tenant-working-situation?referrer=interruption_screen")
choose("lettings-log-ecstat1-10-field", allow_label_click: true) choose("lettings-log-ecstat1-10-field", allow_label_click: true)
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
@ -172,13 +154,13 @@ RSpec.describe "validations" do
it "returns the user back to the check_your_answers after fixing a validation from check_your_answers" do it "returns the user back to the check_your_answers after fixing a validation from check_your_answers" do
lettings_log.update!(earnings: income_under_soft_limit, incfreq: 1, net_income_value_check: 1) lettings_log.update!(earnings: income_under_soft_limit, incfreq: 1, net_income_value_check: 1)
visit("/lettings-logs/#{lettings_log.id}/income-and-benefits/check-answers") visit("/lettings-logs/#{lettings_log.id}/income-and-benefits/check-answers")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=check_answers", match: :first) click_link("Change", href: "/lettings-logs/#{lettings_log.id}/income-amount?referrer=check_answers", match: :first)
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income?referrer=check_answers") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/income-amount?referrer=check_answers")
fill_in("lettings-log-earnings-field", with: income_over_soft_limit) fill_in("lettings-log-earnings-field", with: income_over_soft_limit)
click_button("Save changes") click_button("Save changes")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check?referrer=check_answers") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check?referrer=check_answers")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen", match: :first) click_link("Change", href: "/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen", match: :first)
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/income-amount?referrer=interruption_screen")
fill_in("lettings-log-earnings-field", with: income_under_soft_limit) fill_in("lettings-log-earnings-field", with: income_under_soft_limit)
click_button("Save and continue") click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check?referrer=check_answers") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check?referrer=check_answers")

Loading…
Cancel
Save