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
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
|
|
|