Browse Source

Display correct owning organisation options

pull/2077/head
Kat 3 years ago
parent
commit
9a53eb3478
  1. 19
      app/models/form/sales/questions/owning_organisation_id.rb
  2. 25
      spec/models/form/sales/questions/owning_organisation_id_spec.rb

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

@ -11,11 +11,24 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question
answer_opts = { "" => "Select an option" } answer_opts = { "" => "Select an option" }
return answer_opts unless ActiveRecord::Base.connected? return answer_opts unless ActiveRecord::Base.connected?
return answer_opts unless user
return answer_opts unless log
if FeatureToggle.merge_organisations_enabled? if FeatureToggle.sales_managing_organisation_enabled? && !user.support?
return answer_opts unless user if log.owning_organisation_id.present?
return answer_opts unless log answer_opts[log.owning_organisation.id] = log.owning_organisation.name
end
if user.organisation.holds_own_stock?
answer_opts[user.organisation.id] = "#{user.organisation.name} (Your organisation)"
end
user.organisation.stock_owners.where(holds_own_stock: true).find_each do |org|
answer_opts[org.id] = org.name
end
end
if FeatureToggle.merge_organisations_enabled?
if log.owning_organisation_id.present? if log.owning_organisation_id.present?
answer_opts[log.owning_organisation.id] = log.owning_organisation.name answer_opts[log.owning_organisation.id] = log.owning_organisation.name
end end

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

@ -59,21 +59,25 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
let(:owning_org_1) { create(:organisation, name: "Owning org 1") } let(:owning_org_1) { create(:organisation, name: "Owning org 1") }
let(:owning_org_2) { create(:organisation, name: "Owning org 2") } let(:owning_org_2) { create(:organisation, name: "Owning org 2") }
let!(:org_rel) do let(:non_stock_owner) { create(:organisation, name: "Non stock owner", holds_own_stock: false) }
create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: owning_org_2)
end
let(:log) { create(:lettings_log, owning_organisation: owning_org_1) } let(:log) { create(:lettings_log, owning_organisation: owning_org_1) }
context "when user's org owns stock" do context "when user's org owns stock" do
before do
create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: owning_org_2)
create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: non_stock_owner)
end
let(:options) do let(:options) do
{ {
"" => "Select an option", "" => "Select an option",
owning_org_1.id => "Owning org 1", owning_org_1.id => "Owning org 1",
owning_org_2.id => "Owning org 2",
user.organisation.id => "User org (Your organisation)", user.organisation.id => "User org (Your organisation)",
} }
end end
it "does not show stock owner" do it "shows user organisation, current owning organisation and the stock owners that hold their stock" do
user.organisation.update!(holds_own_stock: true) user.organisation.update!(holds_own_stock: true)
expect(question.displayed_answer_options(log, user)).to eq(options) expect(question.displayed_answer_options(log, user)).to eq(options)
end end
@ -84,10 +88,16 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
{ {
"" => "Select an option", "" => "Select an option",
owning_org_1.id => "Owning org 1", owning_org_1.id => "Owning org 1",
owning_org_2.id => "Owning org 2",
} }
end end
it "shows current log owner" do before do
create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: owning_org_2)
create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: non_stock_owner)
end
it "shows current owning organisation and the stock owners that hold their stock" do
user.organisation.update!(holds_own_stock: false) user.organisation.update!(holds_own_stock: false)
expect(question.displayed_answer_options(log, user)).to eq(options) expect(question.displayed_answer_options(log, user)).to eq(options)
end end
@ -156,7 +166,7 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
end end
before do before do
org_rel.update!(child_organisation: merged_organisation) create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: merged_organisation)
merged_organisation.update!(merge_date: Time.zone.local(2023, 2, 2), absorbing_organisation: user.organisation) merged_organisation.update!(merge_date: Time.zone.local(2023, 2, 2), absorbing_organisation: user.organisation)
Timecop.freeze(Time.zone.local(2023, 11, 10)) Timecop.freeze(Time.zone.local(2023, 11, 10))
end end
@ -176,13 +186,14 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do
{ {
"" => "Select an option", "" => "Select an option",
user.organisation.id => "User org (Your organisation)", user.organisation.id => "User org (Your organisation)",
merged_organisation.id => "Merged org",
owning_org_1.id => "Owning org 1", owning_org_1.id => "Owning org 1",
} }
end end
before do before do
Timecop.freeze(Time.zone.local(2023, 4, 2)) Timecop.freeze(Time.zone.local(2023, 4, 2))
org_rel.update!(child_organisation: merged_organisation) create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: merged_organisation)
merged_organisation.update!(merge_date: Time.zone.local(2021, 6, 2), absorbing_organisation: user.organisation) merged_organisation.update!(merge_date: Time.zone.local(2021, 6, 2), absorbing_organisation: user.organisation)
user.organisation.update!(available_from: Time.zone.local(2021, 2, 2)) user.organisation.update!(available_from: Time.zone.local(2021, 2, 2))
end end

Loading…
Cancel
Save