Browse Source

add diferent error message

pull/1038/head
Kat 4 years ago
parent
commit
2234c60393
  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?
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: available_from } if available_from.present? && available_from > date
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 = location_deactivation_periods.deactivations_without_reactivation.first
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)
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
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
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
scheme_status_during_startdate = record.scheme&.status_during(record.startdate)
@ -75,7 +79,7 @@ module Validations::DateValidations
end
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

18
app/models/validations/setup_validations.rb

@ -12,7 +12,11 @@ module Validations::SetupValidations
end
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
@ -23,7 +27,11 @@ module Validations::SetupValidations
end
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
scheme_status_during_startdate = record.scheme&.status_during(record.startdate)
@ -32,7 +40,11 @@ module Validations::SetupValidations
end
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

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"
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"
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}"
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} 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:
mrcdate:

10
spec/models/validations/date_validations_spec.rb

@ -123,7 +123,7 @@ RSpec.describe Validations::DateValidations do
record.location = location
date_validator.validate_startdate(record)
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
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
date_validator.validate_startdate(record)
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
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
date_validator.validate_startdate(record)
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
@ -194,7 +194,7 @@ RSpec.describe Validations::DateValidations do
record.scheme = scheme
date_validator.validate_startdate(record)
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
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
date_validator.validate_startdate(record)
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
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
setup_validator.validate_scheme(record)
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
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
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)) }
it "produces no error" do
@ -98,12 +98,12 @@ RSpec.describe Validations::SetupValidations do
record.location = location
setup_validator.validate_scheme(record)
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
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
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
setup_validator.validate_scheme(record)
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
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
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
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
setup_validator.validate_scheme(record)
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
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
setup_validator.validate_location(record)
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
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
setup_validator.validate_location(record)
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

Loading…
Cancel
Save