From e73c512afa52f48cf8c1772b9968b13a665a7c4f Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 14 Sep 2022 12:03:43 +0100 Subject: [PATCH] Add previous, current and next forms to form handler --- app/models/form_handler.rb | 16 ++++++++++++- spec/models/form_handler_spec.rb | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index bfee3169f..7e699b811 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -24,7 +24,15 @@ class FormHandler directories.each do |directory| Dir.glob("#{directory}/*.json").each do |form_path| form_name = File.basename(form_path, ".json") - forms[form_name] = Form.new(form_path, form_name) + form = Form.new(form_path, form_name) + forms[form_name] = form + if form.start_date.year + 1 == current_collection_start_year && forms["previous_lettings"].blank? + forms["previous_lettings"] = form + elsif form.start_date.year == current_collection_start_year && forms["current_lettings"].blank? + forms["current_lettings"] = form + elsif form.start_date.year - 1 == current_collection_start_year && forms["next_lettings"].blank? + forms["next_lettings"] = form + end end end forms @@ -32,6 +40,12 @@ class FormHandler private + def current_collection_start_year + today = Time.zone.now + window_end_date = Time.zone.local(today.year, 4, 1) + today < window_end_date ? today.year - 1 : today.year + end + def get_all_forms lettings_forms.merge(sales_forms) end diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index 4e6a61913..bb1f0e4cc 100644 --- a/spec/models/form_handler_spec.rb +++ b/spec/models/form_handler_spec.rb @@ -3,6 +3,32 @@ require "rails_helper" RSpec.describe FormHandler do let(:test_form_name) { "2021_2022" } + before { Singleton.__init__(described_class) } + + context "when accessing a form in a different year" do + before do + Timecop.freeze(Time.utc(2021, 8, 3)) + end + + after do + Timecop.unfreeze + end + + it "is able to load a current lettings form" do + form_handler = described_class.instance + form = form_handler.get_form("current_lettings") + expect(form).to be_a(Form) + expect(form.pages.count).to eq(45) + end + + it "is able to load a next lettings form" do + form_handler = described_class.instance + form = form_handler.get_form("next_lettings") + expect(form).to be_a(Form) + expect(form.pages.count).to eq(12) + end + end + describe "Get all forms" do it "is able to load all the forms" do form_handler = described_class.instance @@ -19,6 +45,20 @@ RSpec.describe FormHandler do expect(form).to be_a(Form) expect(form.pages.count).to eq(45) end + + it "is able to load a current lettings form" do + form_handler = described_class.instance + form = form_handler.get_form("current_lettings") + expect(form).to be_a(Form) + expect(form.pages.count).to eq(12) + end + + it "is able to load a previous lettings form" do + form_handler = described_class.instance + form = form_handler.get_form("previous_lettings") + expect(form).to be_a(Form) + expect(form.pages.count).to eq(45) + end end describe "Current form" do