Browse Source

in_crossover_period? now uses overlap of forms

- also moved from Form to FormHandler
pull/1043/head
Phil Lee 4 years ago
parent
commit
7836718d7f
  1. 2
      app/controllers/bulk_upload_lettings_logs_controller.rb
  2. 2
      app/controllers/bulk_upload_sales_logs_controller.rb
  3. 4
      app/models/form.rb
  4. 14
      app/models/form_handler.rb
  5. 2
      app/models/forms/bulk_upload_lettings/prepare_your_file.rb
  6. 2
      app/models/forms/bulk_upload_sales/prepare_your_file.rb
  7. 16
      spec/models/form_handler_spec.rb
  8. 34
      spec/models/form_spec.rb

2
app/controllers/bulk_upload_lettings_logs_controller.rb

@ -28,7 +28,7 @@ private
end
def in_crossover_period?
FormHandler.instance.forms.values.any?(&:in_crossover_period?)
FormHandler.instance.in_crossover_period?
end
def form

2
app/controllers/bulk_upload_sales_logs_controller.rb

@ -28,7 +28,7 @@ private
end
def in_crossover_period?
FormHandler.instance.forms.values.any?(&:in_crossover_period?)
FormHandler.instance.in_crossover_period?
end
def form

4
app/models/form.rb

@ -231,10 +231,6 @@ class Form
end
end
def in_crossover_period?(now: Time.zone.now)
((end_date - 3.months) < now) && (now < end_date)
end
def inspect
"#<#{self.class} @type=#{type} @name=#{name}>"
end

14
app/models/form_handler.rb

@ -63,8 +63,22 @@ class FormHandler
form_mappings[current_collection_start_year - year]
end
def in_crossover_period?(now: Time.zone.now)
lettings_in_crossover_period?(now:) || sales_in_crossover_period?(now:)
end
private
def lettings_in_crossover_period?(now:)
forms = lettings_forms.values
forms.count { |form| form.start_date < now && now < form.end_date } > 1
end
def sales_in_crossover_period?(now:)
forms = sales_forms.values
forms.count { |form| form.start_date < now && now < form.end_date } > 1
end
def get_all_forms
lettings_forms.merge(sales_forms)
end

2
app/models/forms/bulk_upload_lettings/prepare_your_file.rb

@ -38,7 +38,7 @@ module Forms
private
def in_crossover_period?
FormHandler.instance.forms.values.any?(&:in_crossover_period?)
FormHandler.instance.in_crossover_period?
end
end
end

2
app/models/forms/bulk_upload_sales/prepare_your_file.rb

@ -38,7 +38,7 @@ module Forms
private
def in_crossover_period?
FormHandler.instance.forms.values.any?(&:in_crossover_period?)
FormHandler.instance.in_crossover_period?
end
end
end

16
spec/models/form_handler_spec.rb

@ -153,4 +153,20 @@ RSpec.describe FormHandler do
expect(form.type).to eq("lettings")
expect(form.start_date.year).to eq(2022)
end
# rubocop:disable RSpec/PredicateMatcher
describe "#in_crossover_period?" do
context "when not in overlapping period" do
it "returns false" do
expect(form_handler.in_crossover_period?(now: Date.new(2022, 1, 1))).to be_falsey
end
end
context "when in overlapping period" do
it "returns true" do
expect(form_handler.in_crossover_period?(now: Date.new(2022, 6, 1))).to be_truthy
end
end
end
# rubocop:enable RSpec/PredicateMatcher
end

34
spec/models/form_spec.rb

@ -237,40 +237,6 @@ RSpec.describe Form, type: :model do
end
end
describe "#in_crossover_period?" do
context "when now not specified" do
context "when after end period" do
subject(:form) { described_class.new(nil, 2022, [], "sales") }
it "returns false" do
Timecop.freeze(2023, 8, 1) do
expect(form).not_to be_in_crossover_period
end
end
end
context "when during crossover" do
subject(:form) { described_class.new(nil, 2022, [], "sales") }
it "returns true" do
Timecop.freeze(2023, 6, 1) do
expect(form).to be_in_crossover_period
end
end
end
context "when before crossover" do
subject(:form) { described_class.new(nil, 2022, [], "sales") }
it "returns false" do
Timecop.freeze(2023, 1, 1) do
expect(form).not_to be_in_crossover_period
end
end
end
end
end
describe "when creating a lettings log", :aggregate_failures do
it "creates a valid lettings form" do
form = described_class.new("spec/fixtures/forms/2021_2022.json")

Loading…
Cancel
Save