From 45c76a894fdf071eddc5d30ae2a6cb3835f061d9 Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Tue, 21 Feb 2023 13:08:20 +0000 Subject: [PATCH] bulk upload schemes can use new core IDs --- app/models/scheme.rb | 10 ++++++++++ app/services/bulk_upload/lettings/row_parser.rb | 4 ++-- spec/services/bulk_upload/lettings/row_parser_spec.rb | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/models/scheme.rb b/app/models/scheme.rb index f8cf6bf63..ca3624e3a 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -110,6 +110,16 @@ class Scheme < ApplicationRecord enum arrangement_type: ARRANGEMENT_TYPE, _suffix: true + def self.find_by_id_on_mulitple_fields(id) + return if id.nil? + + if id.start_with?("S") + where(id: id[1..]).first + else + where(old_visible_id: id).first + end + end + def id_to_display "S#{id}" end diff --git a/app/services/bulk_upload/lettings/row_parser.rb b/app/services/bulk_upload/lettings/row_parser.rb index b1bcb6857..c589be229 100644 --- a/app/services/bulk_upload/lettings/row_parser.rb +++ b/app/services/bulk_upload/lettings/row_parser.rb @@ -8,7 +8,7 @@ class BulkUpload::Lettings::RowParser attribute :field_1, :integer attribute :field_2 attribute :field_3 - attribute :field_4, :integer + attribute :field_4, :string attribute :field_5, :integer attribute :field_6 attribute :field_7, :string @@ -964,6 +964,6 @@ private end def scheme - @scheme ||= Scheme.find_by(old_visible_id: field_4) + @scheme ||= Scheme.find_by_id_on_mulitple_fields(field_4) end end diff --git a/spec/services/bulk_upload/lettings/row_parser_spec.rb b/spec/services/bulk_upload/lettings/row_parser_spec.rb index f230e4c30..abc4818e2 100644 --- a/spec/services/bulk_upload/lettings/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/row_parser_spec.rb @@ -620,6 +620,16 @@ RSpec.describe BulkUpload::Lettings::RowParser do end describe "#log" do + describe "#scheme" do + context "when lookup is via id prefixed with S" do + let(:attributes) { { bulk_upload:, field_4: "S#{scheme.id}", field_111: owning_org } } + + it "assigns the correct scheme" do + expect(parser.log.scheme).to eql(scheme) + end + end + end + describe "#owning_organisation" do context "when lookup is via id prefixed with ORG" do let(:attributes) { { bulk_upload:, field_111: "ORG#{owning_org.id}" } }