Browse Source

Display active dates for support

pull/1821/head
Kat 3 years ago
parent
commit
b47331a653
  1. 17
      app/models/form/sales/questions/owning_organisation_id.rb
  2. 46
      spec/models/form/sales/questions/owning_organisation_id_spec.rb

17
app/models/form/sales/questions/owning_organisation_id.rb

@ -27,16 +27,23 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question
end end
end end
user_organisation_options = user.support? ? Organisation.where(holds_own_stock: true) : Organisation.none if user.support?
user_answer_options = user_organisation_options.pluck(:id, :name).to_h Organisation.where(holds_own_stock: true).find_each do |org|
if org.merge_date.present?
unless user.support? answer_opts[org.id] = "#{org.name} (inactive as of #{org.merge_date.to_fs(:govuk_date)})" if org.merge_date >= FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period
elsif org.absorbed_organisations.merged_during_open_collection_period.exists?
answer_opts[org.id] = "#{org.name} (active as of #{org.created_at.to_fs(:govuk_date)})"
else
answer_opts[org.id] = org.name
end
end
else
recently_absorbed_organisations.each do |absorbed_org| recently_absorbed_organisations.each do |absorbed_org|
answer_opts[absorbed_org.id] = merged_organisation_label(absorbed_org.name, absorbed_org.merge_date) if absorbed_org.holds_own_stock? answer_opts[absorbed_org.id] = merged_organisation_label(absorbed_org.name, absorbed_org.merge_date) if absorbed_org.holds_own_stock?
end end
end end
answer_opts.merge(user_answer_options) answer_opts
end end
def displayed_answer_options(log, user = nil) def displayed_answer_options(log, user = nil)

46
spec/models/form/sales/questions/owning_organisation_id_spec.rb

@ -160,9 +160,9 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
end end
context "when user is support" do context "when user is support" do
let(:user) { create(:user, :support) } let(:user) { create(:user, :support, organisation: organisation_1) }
let(:log) { create(:lettings_log) } let(:log) { create(:lettings_log, created_by: user) }
let(:non_stock_organisation) { create(:organisation, holds_own_stock: false) } let(:non_stock_organisation) { create(:organisation, holds_own_stock: false) }
let(:expected_opts) do let(:expected_opts) do
@ -176,6 +176,48 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
expect(question.displayed_answer_options(log, user)).to eq(expected_opts) expect(question.displayed_answer_options(log, user)).to eq(expected_opts)
expect(question.displayed_answer_options(log, user)).not_to include(non_stock_organisation.id) expect(question.displayed_answer_options(log, user)).not_to include(non_stock_organisation.id)
end end
context "when an org has recently absorbed other orgs" do
let(:merged_organisation) { create(:organisation, name: "Merged org") }
let(:options) do
{
"" => "Select an option",
organisation_1.id => "first test org (active as of 2 February 2021)",
organisation_2.id => "second test org",
merged_organisation.id => "Merged org (inactive as of 2 February 2023)",
}
end
before do
merged_organisation.update!(merge_date: Time.zone.local(2023, 2, 2), absorbing_organisation: organisation_1)
organisation_1.update!(created_at: Time.zone.local(2021, 2, 2))
end
it "shows merged organisation as an option" do
expect(question.displayed_answer_options(log, user)).to eq(options)
end
end
context "when user's org has absorbed other orgs during closed collection periods" do
let(:merged_organisation) { create(:organisation, name: "Merged org") }
let(:options) do
{
"" => "Select an option",
organisation_1.id => "first test org",
organisation_2.id => "second test org",
}
end
before do
Timecop.freeze(Time.zone.local(2023, 4, 2))
merged_organisation.update!(merge_date: Time.zone.local(2021, 6, 2), absorbing_organisation: user.organisation)
user.organisation.update!(created_at: Time.zone.local(2021, 2, 2))
end
it "shows merged organisation as an option" do
expect(question.displayed_answer_options(log, user)).to eq(options)
end
end
end end
end end

Loading…
Cancel
Save