|
|
|
@ -72,213 +72,6 @@ RSpec.describe Validations::DateValidations do
|
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a deactivated location" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
let(:location) { create(:location, scheme:) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), location:) |
|
|
|
|
location.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.deactivated.startdate", postcode: location.postcode, date: "4 June 2022")) |
|
|
|
|
expect(record.errors["location_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.deactivated.location_id", postcode: location.postcode, date: "4 June 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.deactivated.location_id", postcode: location.postcode, date: "4 June 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 6, 1) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["location_id"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a location that is reactivating soon" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
let(:location) { create(:location, scheme:) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), location:) |
|
|
|
|
location.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.startdate", postcode: location.postcode, date: "4 August 2022")) |
|
|
|
|
expect(record.errors["location_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.location_id", postcode: location.postcode, date: "4 August 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.location_id", postcode: location.postcode, date: "4 August 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 9, 1) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["location_id"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a location that has many reactivations soon" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
let(:location) { create(:location, scheme:) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 1), reactivation_date: Time.zone.local(2022, 9, 4), location:) |
|
|
|
|
create(:location_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), location:) |
|
|
|
|
create(:location_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 2), reactivation_date: Time.zone.local(2022, 8, 3), location:) |
|
|
|
|
location.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.startdate", postcode: location.postcode, date: "4 September 2022")) |
|
|
|
|
expect(record.errors["location_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.location_id", postcode: location.postcode, date: "4 September 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.reactivating_soon.location_id", postcode: location.postcode, date: "4 September 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active location period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 10, 1) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["location_id"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a location that is activating soon (has no deactivation periods)" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
let(:location) { create(:location, scheme:, startdate: Time.zone.local(2022, 9, 15)) } |
|
|
|
|
|
|
|
|
|
it "produces no error" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 10, 15) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["location_id"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces an error when the date is before available_from date" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 8, 15) |
|
|
|
|
record.location = location |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.activating_soon.startdate", postcode: location.postcode, date: "15 September 2022")) |
|
|
|
|
expect(record.errors["location_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.activating_soon.location_id", postcode: location.postcode, date: "15 September 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.location.activating_soon.location_id", postcode: location.postcode, date: "15 September 2022")) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a deactivated scheme" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location, scheme:) |
|
|
|
|
create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), scheme:) |
|
|
|
|
scheme.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.deactivated.startdate", name: scheme.service_name, date: "4 June 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.deactivated.scheme_id", name: scheme.service_name, date: "4 June 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 6, 1) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a scheme that is reactivating soon" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location, scheme:) |
|
|
|
|
create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 4), reactivation_date: Time.zone.local(2022, 8, 4), scheme:) |
|
|
|
|
scheme.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.reactivating_soon.startdate", name: scheme.service_name, date: "4 August 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.reactivating_soon.scheme_id", name: scheme.service_name, date: "4 August 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 9, 1) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "with a scheme that has many reactivations soon" do |
|
|
|
|
let(:scheme) { create(:scheme) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
create(:location, scheme:) |
|
|
|
|
create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2022, 6, 1), reactivation_date: Time.zone.local(2022, 9, 4), scheme:) |
|
|
|
|
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, 2), reactivation_date: Time.zone.local(2022, 8, 3), scheme:) |
|
|
|
|
scheme.reload |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces error when tenancy start date is during deactivated scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 7, 5) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.reactivating_soon.startdate", name: scheme.service_name, date: "4 September 2022")) |
|
|
|
|
expect(record.errors["scheme_id"]) |
|
|
|
|
.to include(match I18n.t("validations.setup.startdate.scheme.reactivating_soon.scheme_id", name: scheme.service_name, date: "4 September 2022")) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "produces no error when tenancy start date is during an active scheme period" do |
|
|
|
|
record.startdate = Time.zone.local(2022, 10, 1) |
|
|
|
|
record.scheme = scheme |
|
|
|
|
date_validator.validate_startdate(record) |
|
|
|
|
expect(record.errors["startdate"]).to be_empty |
|
|
|
|
expect(record.errors["scheme_id"]).to be_empty |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
describe "major repairs date" do |
|
|
|
|