Browse Source

CLDC-3499: Remove year specific tests from form_handler_spec

CLDC-3499-remove-pre-2025-tests
samyou-softwire 2 weeks ago
parent
commit
70ea96f601
  1. 135
      spec/models/form_handler_spec.rb

135
spec/models/form_handler_spec.rb

@ -1,8 +1,10 @@
require "rails_helper" require "rails_helper"
RSpec.describe FormHandler do RSpec.describe FormHandler do
include CollectionTimeHelper
let(:form_handler) { described_class.instance } let(:form_handler) { described_class.instance }
let(:now) { Time.utc(2022, 9, 20) } let(:now) { current_collection_start_date }
around do |example| around do |example|
Timecop.freeze(now) do Timecop.freeze(now) do
@ -12,8 +14,6 @@ RSpec.describe FormHandler do
end end
context "when accessing a form in a different year" do context "when accessing a form in a different year" do
let(:now) { Time.utc(2021, 8, 3) }
it "is able to load a current lettings form" do it "is able to load a current lettings form" do
form = form_handler.get_form("current_lettings") form = form_handler.get_form("current_lettings")
expect(form).to be_a(Form) expect(form).to be_a(Form)
@ -34,65 +34,59 @@ RSpec.describe FormHandler do
expect(all_forms["current_sales"]).to be_a(Form) expect(all_forms["current_sales"]).to be_a(Form)
end end
context "when in 23/24 period or later" do it "does not load outdated forms" do
let(:now) { Time.utc(2023, 6, 7) } all_forms = form_handler.forms
expect(all_forms.keys).not_to include nil
it "does not load outdated forms" do end
all_forms = form_handler.forms
expect(all_forms.keys).not_to include nil
end
it "loads archived forms" do it "loads archived forms" do
all_forms = form_handler.forms all_forms = form_handler.forms
expect(all_forms.keys).to include("archived_sales") expect(all_forms.keys).to include("archived_sales")
expect(all_forms.keys).to include("archived_lettings") expect(all_forms.keys).to include("archived_lettings")
end
end end
end end
describe "Get specific form" do describe "Get specific form" do
let(:now) { Time.utc(2023, 9, 20) }
it "is able to load a current lettings form" do it "is able to load a current lettings form" do
form = form_handler.get_form("current_lettings") form = form_handler.get_form("current_lettings")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2023_2024_lettings") expect(form.name).to eq("#{current_collection_start_year}_#{current_collection_end_year}_lettings")
end end
it "is able to load a previous lettings form" do it "is able to load a previous lettings form" do
form = form_handler.get_form("previous_lettings") form = form_handler.get_form("previous_lettings")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2022_2023_lettings") expect(form.name).to eq("#{previous_collection_start_year}_#{previous_collection_end_year}_lettings")
end end
it "is able to load a archived lettings form" do it "is able to load a archived lettings form" do
form = form_handler.get_form("archived_lettings") form = form_handler.get_form("archived_lettings")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2021_2022_lettings") expect(form.name).to eq("#{archived_collection_start_year}_#{archived_collection_end_year}_lettings")
end end
it "is able to load a current sales form" do it "is able to load a current sales form" do
form = form_handler.get_form("current_sales") form = form_handler.get_form("current_sales")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2023_2024_sales") expect(form.name).to eq("#{current_collection_start_year}_#{current_collection_end_year}_sales")
end end
it "is able to load a previous sales form" do it "is able to load a previous sales form" do
form = form_handler.get_form("previous_sales") form = form_handler.get_form("previous_sales")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2022_2023_sales") expect(form.name).to eq("#{previous_collection_start_year}_#{previous_collection_end_year}_sales")
end end
it "is able to load a archived sales form" do it "is able to load a archived sales form" do
form = form_handler.get_form("archived_sales") form = form_handler.get_form("archived_sales")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.pages.count).to be_positive expect(form.pages.count).to be_positive
expect(form.name).to eq("2021_2022_sales") expect(form.name).to eq("#{archived_collection_start_year}_#{archived_collection_end_year}_sales")
end end
end end
@ -100,92 +94,92 @@ RSpec.describe FormHandler do
it "returns the latest form by date" do it "returns the latest form by date" do
form = form_handler.current_lettings_form form = form_handler.current_lettings_form
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.start_date.year).to eq(2022) expect(form.start_date.year).to eq(current_collection_start_year)
end end
end end
describe "Current collection start year" do describe "Current collection start year" do
context "when the date is after 1st of April" do context "when the date is after 1st of April" do
let(:now) { Time.utc(2023, 8, 3) } let(:now) { Time.utc(current_collection_start_year, 8, 3) }
it "returns the same year as the current start year" do it "returns the same year as the current start year" do
expect(form_handler.current_collection_start_year).to eq(2023) expect(form_handler.current_collection_start_year).to eq(current_collection_start_year)
end end
it "returns the correct current lettings form name" do it "returns the correct current lettings form name" do
expect(form_handler.form_name_from_start_year(2023, "lettings")).to eq("current_lettings") expect(form_handler.form_name_from_start_year(current_collection_start_year, "lettings")).to eq("current_lettings")
end end
it "returns the correct previous lettings form name" do it "returns the correct previous lettings form name" do
expect(form_handler.form_name_from_start_year(2022, "lettings")).to eq("previous_lettings") expect(form_handler.form_name_from_start_year(previous_collection_start_year, "lettings")).to eq("previous_lettings")
end end
it "returns the correct next lettings form name" do it "returns the correct next lettings form name" do
expect(form_handler.form_name_from_start_year(2024, "lettings")).to eq("next_lettings") expect(form_handler.form_name_from_start_year(next_collection_start_year, "lettings")).to eq("next_lettings")
end end
it "returns the correct archived lettings form name" do it "returns the correct archived lettings form name" do
expect(form_handler.form_name_from_start_year(2021, "lettings")).to eq("archived_lettings") expect(form_handler.form_name_from_start_year(archived_collection_start_year, "lettings")).to eq("archived_lettings")
end end
it "returns the correct current sales form name" do it "returns the correct current sales form name" do
expect(form_handler.form_name_from_start_year(2023, "sales")).to eq("current_sales") expect(form_handler.form_name_from_start_year(current_collection_start_year, "sales")).to eq("current_sales")
end end
it "returns the correct previous sales form name" do it "returns the correct previous sales form name" do
expect(form_handler.form_name_from_start_year(2022, "sales")).to eq("previous_sales") expect(form_handler.form_name_from_start_year(previous_collection_start_year, "sales")).to eq("previous_sales")
end end
it "returns the correct next sales form name" do it "returns the correct next sales form name" do
expect(form_handler.form_name_from_start_year(2024, "sales")).to eq("next_sales") expect(form_handler.form_name_from_start_year(next_collection_start_year, "sales")).to eq("next_sales")
end end
it "returns the correct archived sales form name" do it "returns the correct archived sales form name" do
expect(form_handler.form_name_from_start_year(2021, "sales")).to eq("archived_sales") expect(form_handler.form_name_from_start_year(archived_collection_start_year, "sales")).to eq("archived_sales")
end end
it "returns the correct current start date" do it "returns the correct current start date" do
expect(form_handler.current_collection_start_date).to eq(Time.zone.local(2023, 4, 1)) expect(form_handler.current_collection_start_date).to eq(current_collection_start_date)
end end
end end
context "with the date before 1st of April" do context "with the date before 1st of April" do
let(:now) { Time.utc(2023, 2, 3) } let(:now) { Time.utc(current_collection_end_year, 2, 3) }
it "returns the previous year as the current start year" do it "returns the previous year as the current start year" do
expect(form_handler.current_collection_start_year).to eq(2022) expect(form_handler.current_collection_start_year).to eq(current_collection_start_year)
end end
it "returns the correct current lettings form name" do it "returns the correct current lettings form name" do
expect(form_handler.form_name_from_start_year(2022, "lettings")).to eq("current_lettings") expect(form_handler.form_name_from_start_year(current_collection_start_year, "lettings")).to eq("current_lettings")
end end
it "returns the correct previous lettings form name" do it "returns the correct previous lettings form name" do
expect(form_handler.form_name_from_start_year(2021, "lettings")).to eq("previous_lettings") expect(form_handler.form_name_from_start_year(previous_collection_start_year, "lettings")).to eq("previous_lettings")
end end
it "returns the correct next lettings form name" do it "returns the correct next lettings form name" do
expect(form_handler.form_name_from_start_year(2023, "lettings")).to eq("next_lettings") expect(form_handler.form_name_from_start_year(next_collection_start_year, "lettings")).to eq("next_lettings")
end end
it "returns the correct archived lettings form name" do it "returns the correct archived lettings form name" do
expect(form_handler.form_name_from_start_year(2020, "lettings")).to eq("archived_lettings") expect(form_handler.form_name_from_start_year(archived_collection_start_year, "lettings")).to eq("archived_lettings")
end end
it "returns the correct current sales form name" do it "returns the correct current sales form name" do
expect(form_handler.form_name_from_start_year(2022, "sales")).to eq("current_sales") expect(form_handler.form_name_from_start_year(current_collection_start_year, "sales")).to eq("current_sales")
end end
it "returns the correct previous sales form name" do it "returns the correct previous sales form name" do
expect(form_handler.form_name_from_start_year(2021, "sales")).to eq("previous_sales") expect(form_handler.form_name_from_start_year(previous_collection_start_year, "sales")).to eq("previous_sales")
end end
it "returns the correct next sales form name" do it "returns the correct next sales form name" do
expect(form_handler.form_name_from_start_year(2023, "sales")).to eq("next_sales") expect(form_handler.form_name_from_start_year(next_collection_start_year, "sales")).to eq("next_sales")
end end
it "returns the correct archived sales form name" do it "returns the correct archived sales form name" do
expect(form_handler.form_name_from_start_year(2020, "sales")).to eq("archived_sales") expect(form_handler.form_name_from_start_year(archived_collection_start_year, "sales")).to eq("archived_sales")
end end
end end
end end
@ -199,65 +193,20 @@ RSpec.describe FormHandler do
it "correctly sets form type and start year" do it "correctly sets form type and start year" do
form = form_handler.forms["current_lettings"] form = form_handler.forms["current_lettings"]
expect(form.type).to eq("lettings") expect(form.type).to eq("lettings")
expect(form.start_date.year).to eq(2022) expect(form.start_date.year).to eq(current_collection_start_year)
end end
# rubocop:disable RSpec/PredicateMatcher # rubocop:disable RSpec/PredicateMatcher
describe "#in_crossover_period?" do describe "#in_crossover_period?" do
context "when not in overlapping period" do context "when not in overlapping period" do
it "returns false" do it "returns false" do
expect(form_handler.in_crossover_period?(now: Date.new(2023, 1, 1))).to be_falsey expect(form_handler.in_crossover_period?(now: Date.new(current_collection_start_year, 1, 1))).to be_falsey
end end
end end
context "when in overlapping period" do context "when in overlapping period" do
it "returns true" do it "returns true" do
expect(form_handler.in_crossover_period?(now: Date.new(2022, 6, 1))).to be_truthy expect(form_handler.in_crossover_period?(now: Date.new(current_collection_start_year, 6, 1))).to be_truthy
end
end
end
describe "lettings_forms" do
context "when current and previous forms are defined in JSON (current collection start year before 2023)" do
let(:now) { Time.utc(2022, 9, 20) }
it "creates a next_lettings form from ruby form objects" do
expect(form_handler.lettings_forms["previous_lettings"]).to be_present
expect(form_handler.lettings_forms["previous_lettings"].start_date.year).to eq(2021)
expect(form_handler.lettings_forms["current_lettings"]).to be_present
expect(form_handler.lettings_forms["current_lettings"].start_date.year).to eq(2022)
expect(form_handler.lettings_forms["next_lettings"]).to be_present
expect(form_handler.lettings_forms["next_lettings"].start_date.year).to eq(2023)
end
end
context "when only previous form is defined in JSON (current collection start year 2023)" do
let(:now) { Time.utc(2023, 9, 20) }
it "creates current_lettings and next_lettings forms from ruby form objects" do
expect(form_handler.lettings_forms["archived_lettings"]).to be_present
expect(form_handler.lettings_forms["archived_lettings"].start_date.year).to eq(2021)
expect(form_handler.lettings_forms["previous_lettings"]).to be_present
expect(form_handler.lettings_forms["previous_lettings"].start_date.year).to eq(2022)
expect(form_handler.lettings_forms["current_lettings"]).to be_present
expect(form_handler.lettings_forms["current_lettings"].start_date.year).to eq(2023)
expect(form_handler.lettings_forms["next_lettings"]).to be_present
expect(form_handler.lettings_forms["next_lettings"].start_date.year).to eq(2024)
end
end
context "when only archived form is defined in JSON (current collection start year 2024 onwards)" do
let(:now) { Time.utc(2024, 5, 20) }
it "creates previous_lettings, current_lettings and next_lettings forms from ruby form objects and archived form from json" do
expect(form_handler.lettings_forms["archived_lettings"]).to be_present
expect(form_handler.lettings_forms["archived_lettings"].start_date.year).to eq(2022)
expect(form_handler.lettings_forms["previous_lettings"]).to be_present
expect(form_handler.lettings_forms["previous_lettings"].start_date.year).to eq(2023)
expect(form_handler.lettings_forms["current_lettings"]).to be_present
expect(form_handler.lettings_forms["current_lettings"].start_date.year).to eq(2024)
expect(form_handler.lettings_forms["next_lettings"]).to be_present
expect(form_handler.lettings_forms["next_lettings"].start_date.year).to eq(2025)
end end
end end
end end

Loading…
Cancel
Save