Browse Source

Add previous, current and next forms to form handler

pull/875/head
Kat 3 years ago
parent
commit
e73c512afa
  1. 16
      app/models/form_handler.rb
  2. 40
      spec/models/form_handler_spec.rb

16
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

40
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

Loading…
Cancel
Save