Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

85 lines
2.4 KiB

require "rails_helper"
RSpec.describe FormHandler do
let(:form_handler) { described_class.instance }
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 = 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 = 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
all_forms = form_handler.forms
expect(all_forms.count).to be >= 1
expect(all_forms["current_sales"]["form"]).to be_a(Form)
end
end
describe "Get specific form" do
it "is able to load a current lettings form" do
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 = form_handler.get_form("previous_lettings")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(45)
end
it "is able to load a current sales form" do
form = form_handler.get_form("current_sales")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(2)
expect(form.name).to eq("2022_2023_sales")
end
it "is able to load a previous sales form" do
form = form_handler.get_form("previous_sales")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(2)
expect(form.name).to eq("2021_2022_sales")
end
end
describe "Current form" do
it "returns the latest form by date" do
form = form_handler.current_lettings_form
expect(form).to be_a(Form)
expect(form.start_date.year).to eq(2022)
end
end
it "loads the form once at boot time" do
form_handler = described_class.instance
expect(Form).not_to receive(:new).with(:any, "current_sales")
expect(form_handler.get_form("current_sales")).to be_a(Form)
end
it "keeps track of form type and start year" do
form = form_handler.forms["current_lettings"]
expect(form["type"]).to eq("lettings")
expect(form["start_year"]).to eq(2022)
end
end