Browse Source

Merge branch 'main' into CLDC-2436-multiple-checkbox-field-bu-bug

pull/1687/head
natdeanlewissoftwire 3 years ago
parent
commit
5af130d4fb
  1. 4
      app/helpers/tasklist_helper.rb
  2. 5
      app/models/form.rb
  3. 19
      app/models/validations/household_validations.rb
  4. 13
      app/models/validations/sales/household_validations.rb
  5. 2
      app/views/form/review.html.erb
  6. 2
      config/forms/2022_2023.json
  7. 2
      spec/helpers/tasklist_helper_spec.rb
  8. 2
      spec/models/form_spec.rb
  9. 2
      spec/models/validations/financial_validations_spec.rb
  10. 39
      spec/models/validations/household_validations_spec.rb
  11. 12
      spec/models/validations/sales/household_validations_spec.rb

4
app/helpers/tasklist_helper.rb

@ -31,9 +31,9 @@ module TasklistHelper
def review_log_text(log)
if log.collection_period_open?
link = log.sales? ? review_sales_log_path(id: log, sales_log: true) : review_lettings_log_path(log)
path = log.sales? ? review_sales_log_path(id: log, sales_log: true) : review_lettings_log_path(log)
"You can #{govuk_link_to 'review and make changes to this log', link} until #{log.form.end_date.to_formatted_s(:govuk_date)}.".html_safe
"You can #{govuk_link_to 'review and make changes to this log', path} until #{log.form.display_end_date.to_formatted_s(:govuk_date)}.".html_safe
else
start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year

5
app/models/form.rb

@ -1,6 +1,6 @@
class Form
attr_reader :form_definition, :sections, :subsections, :pages, :questions,
:start_date, :end_date, :type, :name, :setup_definition,
:start_date, :end_date, :display_end_date, :type, :name, :setup_definition,
:setup_sections, :form_sections, :unresolved_log_redirect_page_id
def initialize(form_path, start_year = "", sections_in_form = [], type = "lettings")
@ -9,7 +9,7 @@ class Form
@end_date = if start_year && start_year.to_i > 2022
Time.zone.local(start_year + 1, 6, 9)
else
Time.zone.local(start_year + 1, 6, 7)
Time.zone.local(start_year + 1, 8, 7)
end
@setup_sections = type == "sales" ? [Form::Sales::Sections::Setup.new(nil, nil, self)] : [Form::Lettings::Sections::Setup.new(nil, nil, self)]
@form_sections = sections_in_form.map { |sec| sec.new(nil, nil, self) }
@ -40,6 +40,7 @@ class Form
@end_date = Time.iso8601(form_definition["end_date"])
@unresolved_log_redirect_page_id = form_definition["unresolved_log_redirect_page_id"]
end
@display_end_date = start_year == 2022 ? Time.zone.local(2023, 6, 9) : @end_date
@name = "#{start_date.year}_#{end_date.year}_#{type}"
end

19
app/models/validations/household_validations.rb

@ -187,10 +187,21 @@ private
relationship = record.public_send("relat#{person_num}")
return unless age && economic_status && relationship
if age >= 16 && age <= 19 && tenant_is_child?(relationship) && (!tenant_is_fulltime_student?(economic_status) && !tenant_economic_status_refused?(economic_status))
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.not_student_16_19", person_num:)
record.errors.add "age#{person_num}", I18n.t("validations.household.age.not_student_16_19", person_num:)
record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.not_student_16_19", person_num:)
age_between_16_19 = age.between?(16, 19)
student = tenant_is_fulltime_student?(economic_status)
economic_status_refused = tenant_economic_status_refused?(economic_status)
child = tenant_is_child?(relationship)
if age_between_16_19 && !(student || economic_status_refused) && child
record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student")
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student")
record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student")
end
if !age_between_16_19 && student && child
record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19")
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19")
record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.student_not_16_19")
end
end

13
app/models/validations/sales/household_validations.rb

@ -54,9 +54,10 @@ private
age_between_16_19 = age.between?(16, 19)
student = person_is_fulltime_student?(economic_status)
economic_status_refused = person_economic_status_refused?(economic_status)
child = person_is_child?(relationship)
if age_between_16_19 && !student && child
if age_between_16_19 && !(student || economic_status_refused) && child
record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student")
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student")
record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student")
@ -74,11 +75,11 @@ private
economic_status = record.public_send("ecstat#{person_num}")
return unless age && economic_status
if age < 16 && !tenant_is_economic_child?(economic_status)
if age < 16 && !person_is_economic_child?(economic_status)
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.child_under_16", person_num:)
record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_under_16", person_num:)
end
if tenant_is_economic_child?(economic_status) && age > 16
if person_is_economic_child?(economic_status) && age > 16
record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.child_over_16", person_num:)
record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_16", person_num:)
end
@ -109,7 +110,11 @@ private
relationship == "C"
end
def tenant_is_economic_child?(economic_status)
def person_is_economic_child?(economic_status)
economic_status == 9
end
def person_economic_status_refused?(economic_status)
economic_status == 10
end
end

2
app/views/form/review.html.erb

@ -12,7 +12,7 @@
<%= content_for(:title) %>
</h1>
<p class="govuk-body">
You can review and make changes to this log until <%= @log.form.end_date.to_formatted_s(:govuk_date) %>.
You can review and make changes to this log until <%= @log.form.display_end_date.to_formatted_s(:govuk_date) %>.
</p>
<% @log.form.sections.map do |section| %>
<h2 class="govuk-heading-m"><%= section.label %></h2>

2
config/forms/2022_2023.json

@ -1,7 +1,7 @@
{
"form_type": "lettings",
"start_date": "2022-04-01T00:00:00.000+01:00",
"end_date": "2023-06-09T00:00:00.000+01:00",
"end_date": "2023-08-09T00:00:00.000+01:00",
"unresolved_log_redirect_page_id": "tenancy_start_date",
"sections": {
"tenancy_and_property": {

2
spec/helpers/tasklist_helper_spec.rb

@ -120,7 +120,7 @@ RSpec.describe TasklistHelper do
it "returns relevant text" do
expect(review_log_text(sales_log)).to eq(
"You can #{govuk_link_to 'review and make changes to this log', review_sales_log_path(id: sales_log, sales_log: true)} until 7 June 2023.".html_safe,
"You can #{govuk_link_to 'review and make changes to this log', review_sales_log_path(id: sales_log, sales_log: true)} until 9 June 2023.".html_safe,
)
end
end

2
spec/models/form_spec.rb

@ -359,7 +359,7 @@ RSpec.describe Form, type: :model do
expect(form.questions.count).to eq(13)
expect(form.questions.first.id).to eq("owning_organisation_id")
expect(form.start_date).to eq(Time.zone.parse("2022-04-01"))
expect(form.end_date).to eq(Time.zone.parse("2023-06-07"))
expect(form.end_date).to eq(Time.zone.parse("2023-08-07"))
expect(form.unresolved_log_redirect_page_id).to eq(nil)
end

2
spec/models/validations/financial_validations_spec.rb

@ -990,7 +990,7 @@ RSpec.describe Validations::FinancialValidations do
end
context "and charges are not provided" do
xit "throws and error" do
xit "throws an error" do
record.period = 3
record.chcharge = nil
financial_validator.validate_care_home_charges(record)

39
spec/models/validations/household_validations_spec.rb

@ -335,11 +335,11 @@ RSpec.describe Validations::HouseholdValidations do
record.ecstat2 = 1
household_validator.validate_household_number_of_other_members(record)
expect(record.errors["ecstat2"])
.to include(match I18n.t("validations.household.ecstat.not_student_16_19", person_num: 2))
.to include(match I18n.t("validations.household.ecstat.student_16_19.must_be_student", person_num: 2))
expect(record.errors["age2"])
.to include(match I18n.t("validations.household.age.not_student_16_19", person_num: 2))
.to include(match I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student", person_num: 2))
expect(record.errors["relat2"])
.to include(match I18n.t("validations.household.relat.not_student_16_19", person_num: 2))
.to include(match I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student", person_num: 2))
end
it "expects that person can be a full time student" do
@ -363,6 +363,39 @@ RSpec.describe Validations::HouseholdValidations do
end
end
it "does not add an error for a person aged 16-19 who is a student but not a child of the lead tenant" do
record.age2 = 18
record.ecstat2 = "7"
record.relat2 = "P"
household_validator.validate_household_number_of_other_members(record)
expect(record.errors["relat2"]).to be_empty
expect(record.errors["ecstat2"]).to be_empty
expect(record.errors["age2"]).to be_empty
end
it "does not add an error for a person not aged 16-19 who is a student but not a child of the lead tenant" do
record.age2 = 20
record.ecstat2 = "7"
record.relat2 = "P"
household_validator.validate_household_number_of_other_members(record)
expect(record.errors["relat2"]).to be_empty
expect(record.errors["ecstat2"]).to be_empty
expect(record.errors["age2"]).to be_empty
end
it "adds errors for a person who is a child of the lead tenant and a student but not aged 16-19" do
record.age2 = 14
record.ecstat2 = "7"
record.relat2 = "C"
household_validator.validate_household_number_of_other_members(record)
expect(record.errors["relat2"])
.to include(match I18n.t("validations.household.relat.student_16_19.cannot_be_child.student_not_16_19"))
expect(record.errors["age2"])
.to include(match I18n.t("validations.household.age.student_16_19.must_be_16_19"))
expect(record.errors["ecstat2"])
.to include(match I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19"))
end
context "when the household contains a person over 70" do
it "expects that person under 70 does not need to be retired" do
record.age2 = 50

12
spec/models/validations/sales/household_validations_spec.rb

@ -107,7 +107,7 @@ RSpec.describe Validations::Sales::HouseholdValidations do
.to include(match I18n.t("validations.household.age.child_over_20"))
end
it "does not add and error for a person aged 16-19 who is a student but not a child of the buyer" do
it "does not add an error for a person aged 16-19 who is a student but not a child of the buyer" do
record.age2 = 18
record.ecstat2 = "7"
record.relat2 = "P"
@ -117,6 +117,16 @@ RSpec.describe Validations::Sales::HouseholdValidations do
expect(record.errors["age2"]).to be_empty
end
it "does not add an error for a person not aged 16-19 who is a student but not a child of the buyer" do
record.age2 = 20
record.ecstat2 = "7"
record.relat2 = "P"
household_validator.validate_household_number_of_other_members(record)
expect(record.errors["relat2"]).to be_empty
expect(record.errors["ecstat2"]).to be_empty
expect(record.errors["age2"]).to be_empty
end
it "adds errors for a person aged 16-19 who is a child of the buyer but not a student" do
record.age2 = 17
record.ecstat2 = "1"

Loading…
Cancel
Save