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| directories.each do |directory|
Dir.glob("#{directory}/*.json").each do |form_path| Dir.glob("#{directory}/*.json").each do |form_path|
form_name = File.basename(form_path, ".json") 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
end end
forms forms
@ -32,6 +40,12 @@ class FormHandler
private 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 def get_all_forms
lettings_forms.merge(sales_forms) lettings_forms.merge(sales_forms)
end end

40
spec/models/form_handler_spec.rb

@ -3,6 +3,32 @@ require "rails_helper"
RSpec.describe FormHandler do RSpec.describe FormHandler do
let(:test_form_name) { "2021_2022" } 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 describe "Get all forms" do
it "is able to load all the forms" do it "is able to load all the forms" do
form_handler = described_class.instance form_handler = described_class.instance
@ -19,6 +45,20 @@ RSpec.describe FormHandler do
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to eq(45) expect(form.pages.count).to eq(45)
end 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 end
describe "Current form" do describe "Current form" do

Loading…
Cancel
Save