Browse Source

bulk upload validates scheme data

pull/1329/head
Phil Lee 3 years ago
parent
commit
f3186c919d
  1. 21
      app/services/bulk_upload/lettings/row_parser.rb
  2. 4
      spec/factories/scheme.rb
  3. 32
      spec/services/bulk_upload/lettings/row_parser_spec.rb

21
app/services/bulk_upload/lettings/row_parser.rb

@ -164,6 +164,9 @@ class BulkUpload::Lettings::RowParser
validate :validate_managing_org_related
validate :validate_managing_org_exists
validate :validate_scheme_related
validate :validate_scheme_exists
def valid?
errors.clear
@ -199,6 +202,24 @@ class BulkUpload::Lettings::RowParser
private
def validate_scheme_related
return unless field_4.present? && scheme.present?
owned_by_owning_org = owning_organisation && scheme.owning_organisation == owning_organisation
owned_by_managing_org = managing_organisation && scheme.owning_organisation == managing_organisation
unless owned_by_owning_org || owned_by_managing_org
block_log_creation!
errors.add(:field_4, "This management group code does not belong to your organisation, or any of your stock owners / managing agents")
end
end
def validate_scheme_exists
if field_4.present? && scheme.nil?
errors.add(:field_4, "The management group code is not correct")
end
end
def validate_managing_org_related
if owning_organisation && managing_organisation && !owning_organisation.can_be_managed_by?(organisation: managing_organisation)
block_log_creation!

4
spec/factories/scheme.rb

@ -21,5 +21,9 @@ FactoryBot.define do
primary_client_group { "G" }
secondary_client_group { "M" }
end
trait :with_old_visible_id do
old_visible_id { rand(9_999_999) }
end
end
end

32
spec/services/bulk_upload/lettings/row_parser_spec.rb

@ -11,6 +11,7 @@ RSpec.describe BulkUpload::Lettings::RowParser do
let(:owning_org) { create(:organisation, :with_old_visible_id) }
let(:managing_org) { create(:organisation, :with_old_visible_id) }
let(:scheme) { create(:scheme, :with_old_visible_id, owning_organisation: owning_org) }
let(:setup_section_params) do
{
@ -85,7 +86,7 @@ RSpec.describe BulkUpload::Lettings::RowParser do
{
bulk_upload:,
field_1: "1",
field_4: "1",
field_4: scheme.old_visible_id,
field_7: "123",
field_96: now.day.to_s,
field_97: now.month.to_s,
@ -296,10 +297,37 @@ RSpec.describe BulkUpload::Lettings::RowParser do
context "when matching scheme cannot be found" do
let(:attributes) { { bulk_upload:, field_1: "1", field_4: "123" } }
xit "returns an error" do
it "returns an error" do
expect(parser.errors[:field_4]).to be_present
end
end
context "when scheme belongs to someone else" do
let(:other_scheme) { create(:scheme, :with_old_visible_id) }
let(:attributes) { { bulk_upload:, field_1: "1", field_4: other_scheme.old_visible_id, field_111: owning_org.old_visible_id } }
it "returns an error" do
expect(parser.errors[:field_4]).to include("This management group code does not belong to your organisation, or any of your stock owners / managing agents")
end
end
context "when scheme belongs to owning org" do
let(:scheme) { create(:scheme, :with_old_visible_id, owning_organisation: owning_org) }
let(:attributes) { { bulk_upload:, field_1: "1", field_4: scheme.old_visible_id, field_111: owning_org.old_visible_id } }
it "does not return an error" do
expect(parser.errors[:field_4]).to be_blank
end
end
context "when scheme belongs to managing org" do
let(:scheme) { create(:scheme, :with_old_visible_id, owning_organisation: managing_org) }
let(:attributes) { { bulk_upload:, field_1: "1", field_4: scheme.old_visible_id, field_113: managing_org.old_visible_id } }
it "does not return an error" do
expect(parser.errors[:field_4]).to be_blank
end
end
end
describe "#field_7" do

Loading…
Cancel
Save