From 9a53eb3478f74d8dfb9b1917dd7f1f1566e3803a Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 22 Nov 2023 10:30:43 +0000 Subject: [PATCH] Display correct owning organisation options --- .../sales/questions/owning_organisation_id.rb | 19 +++++++++++--- .../questions/owning_organisation_id_spec.rb | 25 +++++++++++++------ 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/app/models/form/sales/questions/owning_organisation_id.rb b/app/models/form/sales/questions/owning_organisation_id.rb index a53f99dc3..47a10993d 100644 --- a/app/models/form/sales/questions/owning_organisation_id.rb +++ b/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" } return answer_opts unless ActiveRecord::Base.connected? + return answer_opts unless user + return answer_opts unless log - if FeatureToggle.merge_organisations_enabled? - return answer_opts unless user - return answer_opts unless log + if FeatureToggle.sales_managing_organisation_enabled? && !user.support? + if log.owning_organisation_id.present? + 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? answer_opts[log.owning_organisation.id] = log.owning_organisation.name end diff --git a/spec/models/form/sales/questions/owning_organisation_id_spec.rb b/spec/models/form/sales/questions/owning_organisation_id_spec.rb index ceb081459..20ce635a4 100644 --- a/spec/models/form/sales/questions/owning_organisation_id_spec.rb +++ b/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_2) { create(:organisation, name: "Owning org 2") } - let!(:org_rel) do - create(:organisation_relationship, child_organisation: user.organisation, parent_organisation: owning_org_2) - end + let(:non_stock_owner) { create(:organisation, name: "Non stock owner", holds_own_stock: false) } let(:log) { create(:lettings_log, owning_organisation: owning_org_1) } 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 { "" => "Select an option", owning_org_1.id => "Owning org 1", + owning_org_2.id => "Owning org 2", user.organisation.id => "User org (Your organisation)", } 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) expect(question.displayed_answer_options(log, user)).to eq(options) end @@ -84,10 +88,16 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do { "" => "Select an option", owning_org_1.id => "Owning org 1", + owning_org_2.id => "Owning org 2", } 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) expect(question.displayed_answer_options(log, user)).to eq(options) end @@ -156,7 +166,7 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do end 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) Timecop.freeze(Time.zone.local(2023, 11, 10)) end @@ -176,13 +186,14 @@ RSpec.describe Form::Sales::Questions::OwningOrganisationId, type: :model do { "" => "Select an option", user.organisation.id => "User org (Your organisation)", + merged_organisation.id => "Merged org", owning_org_1.id => "Owning org 1", } end before do 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) user.organisation.update!(available_from: Time.zone.local(2021, 2, 2)) end