Browse Source

add diferent error message

pull/1022/head
Kat 4 years ago
parent
commit
6a52923f5b
  1. 4
      app/models/location.rb
  2. 3
      app/models/scheme.rb
  3. 8
      app/models/validations/date_validations.rb
  4. 18
      app/models/validations/setup_validations.rb
  5. 8
      config/locales/en.yml
  6. 10
      spec/models/validations/date_validations_spec.rb
  7. 18
      spec/models/validations/setup_validations_spec.rb

4
app/models/location.rb

@ -397,8 +397,8 @@ class Location < ApplicationRecord
return if date.blank? return if date.blank?
closest_reactivation = location_deactivation_periods.reverse.find { |period| period.reactivation_date.present? && date.between?(period.deactivation_date, period.reactivation_date) } closest_reactivation = location_deactivation_periods.reverse.find { |period| period.reactivation_date.present? && date.between?(period.deactivation_date, period.reactivation_date) }
return { status: :reactivating_soon, date: closest_reactivation.reactivation_date } if closest_reactivation.present? return { status: :reactivating_soon, date: closest_reactivation.reactivation_date, deactivation_date: closest_reactivation.deactivation_date } if closest_reactivation.present?
return { status: :reactivating_soon, date: available_from } if available_from.present? && available_from > date return { status: :activating_soon, date: available_from } if available_from.present? && available_from > date
open_deactivation = location_deactivation_periods.deactivations_without_reactivation.first open_deactivation = location_deactivation_periods.deactivations_without_reactivation.first
return { status: :deactivated, date: open_deactivation.deactivation_date } if open_deactivation.present? && open_deactivation.deactivation_date < date return { status: :deactivated, date: open_deactivation.deactivation_date } if open_deactivation.present? && open_deactivation.deactivation_date < date

3
app/models/scheme.rb

@ -236,7 +236,8 @@ class Scheme < ApplicationRecord
def status_during(date) def status_during(date)
closest_reactivation = scheme_deactivation_periods.reverse.find { |period| period.reactivation_date.present? && date.between?(period.deactivation_date, period.reactivation_date) } closest_reactivation = scheme_deactivation_periods.reverse.find { |period| period.reactivation_date.present? && date.between?(period.deactivation_date, period.reactivation_date) }
return { status: :reactivating_soon, date: closest_reactivation.reactivation_date } if closest_reactivation.present? return { status: :reactivating_soon, date: closest_reactivation.reactivation_date, deactivation_date: closest_reactivation.deactivation_date } if closest_reactivation.present?
return { status: :activating_soon, date: available_from } if available_from.present? && available_from > date
open_deactivation = scheme_deactivation_periods.deactivations_without_reactivation.first open_deactivation = scheme_deactivation_periods.deactivations_without_reactivation.first
return { status: :deactivated, date: open_deactivation.deactivation_date } if open_deactivation.present? && open_deactivation.deactivation_date < date return { status: :deactivated, date: open_deactivation.deactivation_date } if open_deactivation.present? && open_deactivation.deactivation_date < date

8
app/models/validations/date_validations.rb

@ -66,7 +66,11 @@ module Validations::DateValidations
end end
if location_status_during_startdate.present? && location_status_during_startdate[:status] == :reactivating_soon if location_status_during_startdate.present? && location_status_during_startdate[:status] == :reactivating_soon
record.errors.add :startdate, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date)) record.errors.add :startdate, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date), deactivation_date: location_status_during_startdate[:deactivation_date].to_formatted_s(:govuk_date))
end
if location_status_during_startdate.present? && location_status_during_startdate[:status] == :activating_soon
record.errors.add :startdate, I18n.t("validations.setup.startdate.location_activating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date))
end end
scheme_status_during_startdate = record.scheme&.status_during(record.startdate) scheme_status_during_startdate = record.scheme&.status_during(record.startdate)
@ -75,7 +79,7 @@ module Validations::DateValidations
end end
if scheme_status_during_startdate.present? && scheme_status_during_startdate[:status] == :reactivating_soon if scheme_status_during_startdate.present? && scheme_status_during_startdate[:status] == :reactivating_soon
record.errors.add :startdate, I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: record.scheme.service_name, date: scheme_status_during_startdate[:date].to_formatted_s(:govuk_date)) record.errors.add :startdate, I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: record.scheme.service_name, date: scheme_status_during_startdate[:date].to_formatted_s(:govuk_date), deactivation_date: scheme_status_during_startdate[:deactivation_date].to_formatted_s(:govuk_date))
end end
end end

18
app/models/validations/setup_validations.rb

@ -12,7 +12,11 @@ module Validations::SetupValidations
end end
if status_during_startdate.present? && status_during_startdate[:status] == :reactivating_soon if status_during_startdate.present? && status_during_startdate[:status] == :reactivating_soon
record.errors.add :location_id, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: status_during_startdate[:date].to_formatted_s(:govuk_date)) record.errors.add :location_id, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: status_during_startdate[:date].to_formatted_s(:govuk_date), deactivation_date: status_during_startdate[:deactivation_date].to_formatted_s(:govuk_date))
end
if status_during_startdate.present? && status_during_startdate[:status] == :activating_soon
record.errors.add :location_id, I18n.t("validations.setup.startdate.location_activating_soon", postcode: record.location.postcode, date: status_during_startdate[:date].to_formatted_s(:govuk_date))
end end
end end
@ -23,7 +27,11 @@ module Validations::SetupValidations
end end
if location_status_during_startdate.present? && location_status_during_startdate[:status] == :reactivating_soon if location_status_during_startdate.present? && location_status_during_startdate[:status] == :reactivating_soon
record.errors.add :scheme_id, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date)) record.errors.add :scheme_id, I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date), deactivation_date: location_status_during_startdate[:deactivation_date].to_formatted_s(:govuk_date))
end
if location_status_during_startdate.present? && location_status_during_startdate[:status] == :activating_soon
record.errors.add :scheme_id, I18n.t("validations.setup.startdate.location_activating_soon", postcode: record.location.postcode, date: location_status_during_startdate[:date].to_formatted_s(:govuk_date))
end end
scheme_status_during_startdate = record.scheme&.status_during(record.startdate) scheme_status_during_startdate = record.scheme&.status_during(record.startdate)
@ -32,7 +40,11 @@ module Validations::SetupValidations
end end
if scheme_status_during_startdate.present? && scheme_status_during_startdate[:status] == :reactivating_soon if scheme_status_during_startdate.present? && scheme_status_during_startdate[:status] == :reactivating_soon
record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: record.scheme.service_name, date: scheme_status_during_startdate[:date].to_formatted_s(:govuk_date)) record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: record.scheme.service_name, date: scheme_status_during_startdate[:date].to_formatted_s(:govuk_date), deactivation_date: scheme_status_during_startdate[:deactivation_date].to_formatted_s(:govuk_date))
end
if scheme_status_during_startdate.present? && scheme_status_during_startdate[:status] == :activating_soon
record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme_activating_soon", name: record.scheme.service_name, date: scheme_status_during_startdate[:date].to_formatted_s(:govuk_date))
end end
end end

8
config/locales/en.yml

@ -120,8 +120,12 @@ en:
before_scheme_end_date: "The tenancy start date must be before the end date for this supported housing scheme" before_scheme_end_date: "The tenancy start date must be before the end date for this supported housing scheme"
after_void_date: "Enter a tenancy start date that is after the void date" after_void_date: "Enter a tenancy start date that is after the void date"
after_major_repair_date: "Enter a tenancy start date that is after the major repair date" after_major_repair_date: "Enter a tenancy start date that is after the major repair date"
during_deactivated_location: "The location %{postcode} was deactivated on %{date} and was not available on the day you entered" during_deactivated_location: "The location %{postcode} was deactivated on %{date} and was not available on the day you entered."
location_reactivating_soon: "The location %{postcode} is not available until %{date}. Enter a tenancy start date after %{date}" location_reactivating_soon: "The location %{postcode} was deactivated on %{deactivation_date} and is not available on the date you entered. It reactivates on %{date}"
location_activating_soon: "The location %{postcode} is not available until %{date}. Enter a tenancy start date after %{date}"
during_deactivated_scheme: "The location %{postcode} was deactivated on %{date} and was not available on the day you entered"
scheme_reactivating_soon: "%{name} was deactivated on %{deactivation_date} and is not available on the date you entered. It reactivates on %{date}"
scheme_activating_soon: "%{name} is not available until %{date}. Enter a tenancy start date after %{date}"
property: property:
mrcdate: mrcdate:

10
spec/models/validations/date_validations_spec.rb

@ -123,7 +123,7 @@ RSpec.describe Validations::DateValidations do
record.location = location record.location = location
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["startdate"]) expect(record.errors["startdate"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022")) .to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022", deactivation_date: "4 June 2022"))
end end
it "produces no error when tenancy start date is during an active location period" do it "produces no error when tenancy start date is during an active location period" do
@ -150,7 +150,7 @@ RSpec.describe Validations::DateValidations do
record.location = location record.location = location
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["startdate"]) expect(record.errors["startdate"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 September 2022")) .to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 September 2022", deactivation_date: "1 June 2022"))
end end
it "produces no error when tenancy start date is during an active location period" do it "produces no error when tenancy start date is during an active location period" do
@ -177,7 +177,7 @@ RSpec.describe Validations::DateValidations do
record.location = location record.location = location
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["startdate"]) expect(record.errors["startdate"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "15 September 2022")) .to include(match I18n.t("validations.setup.startdate.location_activating_soon", postcode: location.postcode, date: "15 September 2022"))
end end
end end
@ -194,7 +194,7 @@ RSpec.describe Validations::DateValidations do
record.scheme = scheme record.scheme = scheme
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["startdate"]) expect(record.errors["startdate"])
.to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 August 2022")) .to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 August 2022", deactivation_date: "4 June 2022"))
end end
it "produces no error when tenancy start date is during an active scheme period" do it "produces no error when tenancy start date is during an active scheme period" do
@ -220,7 +220,7 @@ RSpec.describe Validations::DateValidations do
record.scheme = scheme record.scheme = scheme
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["startdate"]) expect(record.errors["startdate"])
.to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 September 2022")) .to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 September 2022", deactivation_date: "1 June 2022"))
end end
it "produces no error when tenancy start date is during an active scheme period" do it "produces no error when tenancy start date is during an active scheme period" do

18
spec/models/validations/setup_validations_spec.rb

@ -71,7 +71,7 @@ RSpec.describe Validations::SetupValidations do
record.location = location record.location = location
setup_validator.validate_scheme(record) setup_validator.validate_scheme(record)
expect(record.errors["scheme_id"]) expect(record.errors["scheme_id"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022")) .to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022", deactivation_date: "4 June 2022"))
end end
it "produces no error when tenancy start date is during an active location period" do it "produces no error when tenancy start date is during an active location period" do
@ -83,7 +83,7 @@ RSpec.describe Validations::SetupValidations do
end end
context "with a location with no deactivation periods" do context "with a location with no deactivation periods" do
let(:scheme) { create(:scheme) } let(:scheme) { create(:scheme, created_at: Time.zone.local(2022, 10, 3)) }
let(:location) { create(:location, scheme:, startdate: Time.zone.local(2022, 9, 15)) } let(:location) { create(:location, scheme:, startdate: Time.zone.local(2022, 9, 15)) }
it "produces no error" do it "produces no error" do
@ -98,12 +98,12 @@ RSpec.describe Validations::SetupValidations do
record.location = location record.location = location
setup_validator.validate_scheme(record) setup_validator.validate_scheme(record)
expect(record.errors["scheme_id"]) expect(record.errors["scheme_id"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "15 September 2022")) .to include(match I18n.t("validations.setup.startdate.location_activating_soon", postcode: location.postcode, date: "15 September 2022"))
end end
end end
context "with a scheme that is reactivating soon" do context "with a scheme that is reactivating soon" do
let(:scheme) { create(:scheme) } let(:scheme) { create(:scheme, created_at: Time.zone.local(2022, 4, 1)) }
before do before do
create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), scheme:) create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), scheme:)
@ -115,7 +115,7 @@ RSpec.describe Validations::SetupValidations do
record.scheme = scheme record.scheme = scheme
setup_validator.validate_scheme(record) setup_validator.validate_scheme(record)
expect(record.errors["scheme_id"]) expect(record.errors["scheme_id"])
.to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 August 2022")) .to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 August 2022", deactivation_date: "4 June 2022"))
end end
it "produces no error when tenancy start date is during an active scheme period" do it "produces no error when tenancy start date is during an active scheme period" do
@ -127,7 +127,7 @@ RSpec.describe Validations::SetupValidations do
end end
context "with a scheme that has many reactivations soon" do context "with a scheme that has many reactivations soon" do
let(:scheme) { create(:scheme) } let(:scheme) { create(:scheme, created_at: Time.zone.local(2022, 4, 1)) }
before do before do
create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), scheme:) create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), scheme:)
@ -141,7 +141,7 @@ RSpec.describe Validations::SetupValidations do
record.scheme = scheme record.scheme = scheme
setup_validator.validate_scheme(record) setup_validator.validate_scheme(record)
expect(record.errors["scheme_id"]) expect(record.errors["scheme_id"])
.to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 September 2022")) .to include(match I18n.t("validations.setup.startdate.scheme_reactivating_soon", name: scheme.service_name, date: "4 September 2022", deactivation_date: "1 June 2022"))
end end
it "produces no error when tenancy start date is during an active scheme period" do it "produces no error when tenancy start date is during an active scheme period" do
@ -193,7 +193,7 @@ RSpec.describe Validations::SetupValidations do
record.location = location record.location = location
setup_validator.validate_location(record) setup_validator.validate_location(record)
expect(record.errors["location_id"]) expect(record.errors["location_id"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022")) .to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "4 August 2022", deactivation_date: "4 June 2022"))
end end
it "produces no error when tenancy start date is during an active location period" do it "produces no error when tenancy start date is during an active location period" do
@ -220,7 +220,7 @@ RSpec.describe Validations::SetupValidations do
record.location = location record.location = location
setup_validator.validate_location(record) setup_validator.validate_location(record)
expect(record.errors["location_id"]) expect(record.errors["location_id"])
.to include(match I18n.t("validations.setup.startdate.location_reactivating_soon", postcode: location.postcode, date: "15 September 2022")) .to include(match I18n.t("validations.setup.startdate.location_activating_soon", postcode: location.postcode, date: "15 September 2022"))
end end
end end
end end

Loading…
Cancel
Save