diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 2edc459b8..038df317f 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -35,8 +35,8 @@ class CaseLog < ApplicationRecord belongs_to :owning_organisation, class_name: "Organisation", optional: true belongs_to :managing_organisation, class_name: "Organisation", optional: true belongs_to :created_by, class_name: "User", optional: true - belongs_to :scheme, required: false - + belongs_to :scheme, optional: true + scope :filter_by_organisation, ->(org, _user = nil) { where(owning_organisation: org).or(where(managing_organisation: org)) } scope :filter_by_status, ->(status, _user = nil) { where status: } scope :filter_by_years, lambda { |years, _user = nil| diff --git a/app/models/validations/date_validations.rb b/app/models/validations/date_validations.rb index 285eec370..7c6cdd5d2 100644 --- a/app/models/validations/date_validations.rb +++ b/app/models/validations/date_validations.rb @@ -34,19 +34,17 @@ module Validations::DateValidations if record.startdate < first_collection_start_date || record.startdate > second_collection_end_date record.errors.add :startdate, I18n.t("validations.date.outside_collection_window") end - + # if record.voiddate.present? # if (record.startdate.to_date - record.voiddate.to_date).to_i.abs > 730 # record.errors.add :startdate, I18n.t("validations.setup.startdate.voiddate_difference") - # end - # end + # end + # end if record.scheme_id.present? scheme_end_date = Scheme.find(record.scheme_id).end_date - if scheme_end_date.present? - if record.startdate > scheme_end_date - record.errors.add :startdate, I18n.t("validations.setup.startdate.before_scheme_end_date") - end + if scheme_end_date.present? && (record.startdate > scheme_end_date) + record.errors.add :startdate, I18n.t("validations.setup.startdate.before_scheme_end_date") end end end diff --git a/spec/models/validations/date_validations_spec.rb b/spec/models/validations/date_validations_spec.rb index ee313494b..6cb717fab 100644 --- a/spec/models/validations/date_validations_spec.rb +++ b/spec/models/validations/date_validations_spec.rb @@ -5,8 +5,8 @@ RSpec.describe Validations::DateValidations do let(:validator_class) { Class.new { include Validations::DateValidations } } let(:record) { FactoryBot.create(:case_log) } - let(:scheme) { FactoryBot.create(:scheme, end_date: Time.zone.today - 5.days)} - let(:scheme_no_end_date) { FactoryBot.create(:scheme, end_date: nil)} + let(:scheme) { FactoryBot.create(:scheme, end_date: Time.zone.today - 5.days) } + let(:scheme_no_end_date) { FactoryBot.create(:scheme, end_date: nil) } describe "tenancy start date" do it "cannot be before the first collection window start date" do @@ -39,21 +39,21 @@ RSpec.describe Validations::DateValidations do setup_validator.validate_startdate(record) expect(record.errors["startdate"]) .to include(match I18n.t("validations.setup.startdate.before_scheme_end_date")) - end + end it "produces no error when the tenancy start date is before the end date of the chosen scheme if it has an end date" do record.startdate = Time.zone.today - 30.days record.scheme = scheme setup_validator.validate_startdate(record) expect(record.errors["startdate"]).to be_empty - end + end it "produces no startdate error for scheme end dates when the chosen scheme does not have an end date" do record.startdate = Time.zone.today record.scheme = scheme_no_end_date setup_validator.validate_startdate(record) expect(record.errors["startdate"]).to be_empty - end + end # it "validates that tenancy start date is less than 730 days away from the void date" do # record.startdate = Time.zone.today