diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 7bc032a0e..197e3b389 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -150,11 +150,11 @@ class CaseLog < ApplicationRecord AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze def form - FormHandler.instance.get_form(form_name) + FormHandler.instance.get_form(form_name) || FormHandler.instance.forms.first.second end def form_name - return "2021_2022" unless startdate + return unless startdate window_end_date = Time.zone.local(startdate.year, 4, 1) if startdate < window_end_date diff --git a/app/models/form.rb b/app/models/form.rb index d704b78a1..b3562a727 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -7,8 +7,8 @@ class Form @form_definition = JSON.parse(File.open(form_path).read) @name = name - @start_date = form_definition["start_date"] - @end_date = form_definition["end_date"] + @start_date = Time.iso8601(form_definition["start_date"]) + @end_date = Time.iso8601(form_definition["end_date"]) @type = form_definition["form_type"] @sections = form_definition["sections"].map { |id, s| Form::Section.new(id, s, self) } @subsections = sections.flat_map(&:subsections) diff --git a/spec/fixtures/forms/test_validator.json b/spec/fixtures/forms/test_validator.json index cbb64f2f3..512298a5d 100644 --- a/spec/fixtures/forms/test_validator.json +++ b/spec/fixtures/forms/test_validator.json @@ -1,7 +1,7 @@ { "form_type": "lettings", - "start_year": 2021, - "end_year": 2022, + "start_date": "2021-04-01T00:00:00.000+01:00", + "end_date": "2022-07-01T00:00:00.000+01:00", "sections": { "household": { "label": "About the household", diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 6151c248a..229904279 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -10,10 +10,21 @@ RSpec.describe CaseLog do let(:case_log_year_2) { FactoryBot.build(:case_log, startdate: Time.zone.local(2023, 5, 1)) } it "has returns the correct form based on the start date" do - expect(case_log.form_name).to eq("2021_2022") + expect(case_log.form_name).to be_nil + expect(case_log.form).to be_a(Form) expect(case_log_2.form_name).to eq("2021_2022") + expect(case_log_2.form).to be_a(Form) expect(case_log_year_2.form_name).to eq("2023_2024") - expect(case_log.form).to be_a(Form) + expect(case_log_year_2.form).to be_a(Form) + end + + context "when a date outside the collection window is passed" do + let(:case_log) { FactoryBot.build(:case_log, startdate: Time.zone.local(2015, 1, 1)) } + + it "returns the first form" do + expect(case_log.form).to be_a(Form) + expect(case_log.form.start_date.year).to eq(2021) + end end end