Browse Source

Merge remote-tracking branch 'origin/CLDC-3910-BU-Sales-staircasing-initial-equity-errors' into CLDC-3910-BU-Sales-staircasing-initial-equity-errors

pull/2985/head
Manny Dinssa 2 months ago
parent
commit
0f5b29fb5d
  1. 2
      Gemfile.lock
  2. 6
      app/controllers/address_search_controller.rb
  3. 10
      app/models/derived_variables/lettings_log_variables.rb
  4. 2
      app/models/derived_variables/sales_log_variables.rb
  5. 6
      app/models/form/lettings/questions/address_search.rb
  6. 2
      app/models/form/lettings/subsections/property_information.rb
  7. 6
      app/models/form/sales/questions/address_search.rb
  8. 8
      app/models/lettings_log.rb
  9. 55
      app/models/log.rb
  10. 33
      spec/models/form/lettings/questions/address_search_spec.rb
  11. 16
      spec/models/form/lettings/subsections/property_information_spec.rb
  12. 33
      spec/models/form/sales/questions/address_search_spec.rb
  13. 186
      spec/models/lettings_log_spec.rb
  14. 40
      spec/requests/address_search_controller_spec.rb
  15. 7
      spec/services/bulk_upload/sales/year2024/row_parser_spec.rb
  16. 7
      spec/services/bulk_upload/sales/year2025/row_parser_spec.rb

2
Gemfile.lock

@ -343,7 +343,7 @@ GEM
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
raabro (1.4.0) raabro (1.4.0)
racc (1.8.1) racc (1.8.1)
rack (3.1.11) rack (3.1.12)
rack-attack (6.7.0) rack-attack (6.7.0)
rack (>= 1.0, < 4) rack (>= 1.0, < 4)
rack-mini-profiler (3.3.1) rack-mini-profiler (3.3.1)

6
app/controllers/address_search_controller.rb

@ -5,7 +5,9 @@ class AddressSearchController < ApplicationController
def index def index
query = params[:query] query = params[:query]
if query.match?(/\A\d+\z/) && query.length > 5 if query.nil?
render json: { error: "Query cannot be blank." }, status: :bad_request
elsif query.match?(/\A\d+\z/) && query.length > 5
# Query is all numbers and greater than 5 digits, assume it's a UPRN # Query is all numbers and greater than 5 digits, assume it's a UPRN
service = UprnClient.new(query) service = UprnClient.new(query)
service.call service.call
@ -38,7 +40,7 @@ class AddressSearchController < ApplicationController
address_service.call address_service.call
uprn_service.call uprn_service.call
results = ([uprn_service.result] || []) + (address_service.result || []) results = [uprn_service.result, *address_service.result].compact
if address_service.error.present? && uprn_service.error.present? if address_service.error.present? && uprn_service.error.present?
render json: { error: "Address and UPRN are not recognised." }, status: :not_found render json: { error: "Address and UPRN are not recognised." }, status: :not_found

10
app/models/derived_variables/lettings_log_variables.rb

@ -83,12 +83,19 @@ module DerivedVariables::LettingsLogVariables
end end
set_housingneeds_fields if housingneeds? set_housingneeds_fields if housingneeds?
if form.start_year_2025_or_later? && is_general_needs?
if changed_to_newbuild? && uprn.nil?
self.manual_address_entry_selected = true
end
self.manual_address_entry_selected = address_answered_without_uprn? if changed_from_newbuild?
end
self.uprn_known = 0 if address_answered_without_uprn? self.uprn_known = 0 if address_answered_without_uprn?
if uprn_known&.zero? if uprn_known&.zero?
self.uprn = nil self.uprn = nil
if uprn_known_was == 1 if uprn_known_was == 1 && (rsnvac != 15 || !form.start_year_2025_or_later?)
self.address_line1 = nil self.address_line1 = nil
self.address_line2 = nil self.address_line2 = nil
self.town_or_city = nil self.town_or_city = nil
@ -375,6 +382,7 @@ private
self.address_line2 = nil self.address_line2 = nil
self.town_or_city = nil self.town_or_city = nil
self.county = nil self.county = nil
self.postcode_full = nil
end end
def address_answered_without_uprn? def address_answered_without_uprn?

2
app/models/derived_variables/sales_log_variables.rb

@ -258,10 +258,10 @@ private
self.address_line2 = nil self.address_line2 = nil
self.town_or_city = nil self.town_or_city = nil
self.county = nil self.county = nil
self.postcode_full = nil
self.pcode1 = nil self.pcode1 = nil
self.pcode2 = nil self.pcode2 = nil
self.pcodenk = nil self.pcodenk = nil
self.postcode_full = nil
self.is_la_inferred = nil self.is_la_inferred = nil
self.la = nil self.la = nil
end end

6
app/models/form/lettings/questions/address_search.rb

@ -12,11 +12,9 @@ class Form::Lettings::Questions::AddressSearch < ::Form::Question
def answer_options(log = nil, _user = nil) def answer_options(log = nil, _user = nil)
return {} unless ActiveRecord::Base.connected? return {} unless ActiveRecord::Base.connected?
return {} unless log&.address_options&.any? return {} unless log&.address_search_options&.any?
log.address_options.each_with_object({}) do |option, hash| { log.address_search_options.first[:uprn] => { "value" => "#{log.address_search_options.first[:address]} (#{log.address_search_options.first[:uprn]})" } }
hash[option[:uprn]] = { "value" => "#{option[:address]} (#{option[:uprn]})" }
end
end end
def get_extra_check_answer_value(log) def get_extra_check_answer_value(log)

2
app/models/form/lettings/subsections/property_information.rb

@ -56,6 +56,8 @@ class Form::Lettings::Subsections::PropertyInformation < ::Form::Subsection
end end
def displayed_in_tasklist?(log) def displayed_in_tasklist?(log)
return true if form.start_year_2025_or_later?
!(log.is_supported_housing? && log.is_renewal?) !(log.is_supported_housing? && log.is_renewal?)
end end
end end

6
app/models/form/sales/questions/address_search.rb

@ -12,11 +12,9 @@ class Form::Sales::Questions::AddressSearch < ::Form::Question
def answer_options(log = nil, _user = nil) def answer_options(log = nil, _user = nil)
return {} unless ActiveRecord::Base.connected? return {} unless ActiveRecord::Base.connected?
return {} unless log&.address_options&.any? return {} unless log&.address_search_options&.any?
log.address_options.each_with_object({}) do |option, hash| { log.address_search_options.first[:uprn] => { "value" => "#{log.address_search_options.first[:address]} (#{log.address_search_options.first[:uprn]})" } }
hash[option[:uprn]] = { "value" => "#{option[:address]} (#{option[:uprn]})" }
end
end end
def get_extra_check_answer_value(log) def get_extra_check_answer_value(log)

8
app/models/lettings_log.rb

@ -740,6 +740,14 @@ class LettingsLog < Log
"lettings_log" "lettings_log"
end end
def changed_to_newbuild?
rsnvac == 15 && rsnvac_was != 15
end
def changed_from_newbuild?
rsnvac != 15 && rsnvac_was == 15
end
private private
def reset_invalid_unresolved_log_fields! def reset_invalid_unresolved_log_fields!

55
app/models/log.rb

@ -128,38 +128,40 @@ class Log < ApplicationRecord
"#{address_line1_input}, #{postcode_full_input}" "#{address_line1_input}, #{postcode_full_input}"
end end
def address_options def address_search_options
if uprn.present? return if uprn.blank?
service = UprnClient.new(uprn)
service.call service = UprnClient.new(uprn)
if service.result.blank? || service.error.present? service.call
@address_options = [] if service.result.blank? || service.error.present?
return @address_options @address_options = []
end return @address_options
end
presenter = UprnDataPresenter.new(service.result) presenter = UprnDataPresenter.new(service.result)
@address_options = [{ address: presenter.address, uprn: presenter.uprn }] @address_options = [{ address: presenter.address, uprn: presenter.uprn }]
else end
return @address_options if @address_options && @last_searched_address_string == address_string
return if address_string.blank?
@last_searched_address_string = address_string def address_options
return @address_options if @address_options && @last_searched_address_string == address_string
return if address_string.blank?
service = AddressClient.new(address_string) @last_searched_address_string = address_string
service.call
if service.result.blank? || service.error.present?
@address_options = []
return @address_options
end
address_opts = [] service = AddressClient.new(address_string)
service.result.first(10).each do |result| service.call
presenter = AddressDataPresenter.new(result) if service.result.blank? || service.error.present?
address_opts.append({ address: presenter.address, uprn: presenter.uprn }) @address_options = []
end return @address_options
end
@address_options = address_opts address_opts = []
service.result.first(10).each do |result|
presenter = AddressDataPresenter.new(result)
address_opts.append({ address: presenter.address, uprn: presenter.uprn })
end end
@address_options = address_opts
end end
def collection_start_year def collection_start_year
@ -415,6 +417,7 @@ private
self.address_line2 = address_line2_as_entered self.address_line2 = address_line2_as_entered
self.county = county_as_entered self.county = county_as_entered
self.town_or_city = town_or_city_as_entered self.town_or_city = town_or_city_as_entered
self.la = la_as_entered
self.manual_address_entry_selected = true self.manual_address_entry_selected = true
end end
end end

33
spec/models/form/lettings/questions/address_search_spec.rb

@ -32,6 +32,39 @@ RSpec.describe Form::Lettings::Questions::AddressSearch, type: :model do
end end
end end
describe "#answer_options" do
before do
body = {
results: [
{
DPA: {
"POSTCODE": "AA1 1AA",
"POST_TOWN": "Test Town",
"ORGANISATION_NAME": "1, Test Road",
"ADDRESS": "1 Test Street, Test City, AA1 1AA",
"UPRN": "123",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=123")
.to_return(status: 200, body:, headers: {})
end
let(:log_with_uprn) { build(:lettings_log, :completed, uprn: 123, manual_address_entry_selected: false, address_line1_input: "1, Test Road", postcode_full_input: "Test Town") }
let(:log_without_uprn) { build(:lettings_log, :completed, uprn: nil, manual_address_entry_selected: false, address_line1_input: "1, Test Road", postcode_full_input: "Test Town") }
it "returns an answer option when uprn is present" do
expect(question.answer_options(log_with_uprn)).to eq({ "123" => { "value" => "1 Test Street, Test City, AA1 1AA (123)" } })
end
it "does not return an answer option when uprn is not present" do
expect(question.answer_options(log_without_uprn)).to eq({ nil => { "value" => " ()" } })
end
end
describe "get_extra_check_answer_value" do describe "get_extra_check_answer_value" do
context "when address is not present" do context "when address is not present" do
let(:log) { build(:lettings_log, manual_address_entry_selected: false) } let(:log) { build(:lettings_log, manual_address_entry_selected: false) }

16
spec/models/form/lettings/subsections/property_information_spec.rb

@ -84,6 +84,14 @@ RSpec.describe Form::Lettings::Subsections::PropertyInformation, type: :model do
], ],
) )
end end
context "when it is supported housing and a renewal" do
let(:log) { FactoryBot.build(:lettings_log, needstype: 2, renewal: 1) }
it "is not displayed in tasklist" do
expect(property_information.displayed_in_tasklist?(log)).to eq(false)
end
end
end end
context "when 2025" do context "when 2025" do
@ -118,6 +126,14 @@ RSpec.describe Form::Lettings::Subsections::PropertyInformation, type: :model do
], ],
) )
end end
context "when it is supported housing and a renewal" do
let(:log) { FactoryBot.build(:lettings_log, needstype: 2, renewal: 1) }
it "is displayed in tasklist" do
expect(property_information.displayed_in_tasklist?(log)).to eq(true)
end
end
end end
end end

33
spec/models/form/sales/questions/address_search_spec.rb

@ -32,6 +32,39 @@ RSpec.describe Form::Sales::Questions::AddressSearch, type: :model do
end end
end end
describe "#answer_options" do
before do
body = {
results: [
{
DPA: {
"POSTCODE": "AA1 1AA",
"POST_TOWN": "Test Town",
"ORGANISATION_NAME": "1, Test Road",
"ADDRESS": "1 Test Street, Test City, AA1 1AA",
"UPRN": "123",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=123")
.to_return(status: 200, body:, headers: {})
end
let(:log_with_uprn) { build(:sales_log, :completed, uprn: 123, manual_address_entry_selected: false, address_line1_input: "1, Test Road", postcode_full_input: "Test Town") }
let(:log_without_uprn) { build(:sales_log, :completed, uprn: nil, manual_address_entry_selected: false, address_line1_input: "1, Test Road", postcode_full_input: "Test Town") }
it "returns an answer option when uprn is present" do
expect(question.answer_options(log_with_uprn)).to eq({ "123" => { "value" => "1 Test Street, Test City, AA1 1AA (123)" } })
end
it "does not return an answer option when uprn is not present" do
expect(question.answer_options(log_without_uprn)).to eq({ nil => { "value" => " ()" } })
end
end
describe "get_extra_check_answer_value" do describe "get_extra_check_answer_value" do
context "when address is not present" do context "when address is not present" do
let(:log) { build(:sales_log, manual_address_entry_selected: false) } let(:log) { build(:sales_log, manual_address_entry_selected: false) }

186
spec/models/lettings_log_spec.rb

@ -849,6 +849,192 @@ RSpec.describe LettingsLog do
expect(lettings_log.reload.is_la_inferred).to eq(false) expect(lettings_log.reload.is_la_inferred).to eq(false)
end end
end end
context "when the log changes from new build to not new build" do
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_call_original
Timecop.freeze(2025, 5, 1)
Singleton.__init__(FormHandler)
end
after do
Timecop.unfreeze
end
context "and the address is entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
address_line1: "Address line 1",
address_line2: "Address line 2",
town_or_city: "Town",
postcode_full: "AA1 1AA")
end
it "keeps the manually entered address" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 16)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
end
end
context "and the address is not entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end
it "routes to the uprn question" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.address_line1).to eq(nil)
expect(address_lettings_log.address_line2).to eq(nil)
expect(address_lettings_log.town_or_city).to eq(nil)
expect(address_lettings_log.postcode_full).to eq(nil)
address_lettings_log.update!(rsnvac: 16)
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(nil)
end
end
end
context "when the log changes from not new build to new build" do
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_call_original
Timecop.freeze(2025, 5, 1)
Singleton.__init__(FormHandler)
end
after do
Timecop.unfreeze
end
context "and the uprn is selected" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
manual_address_entry_selected: false,
first_time_property_let_as_social_housing: 1,
uprn_selection: "1",
uprn_confirmed: "1",
uprn_known: "1",
uprn: "1")
end
it "keeps the uprn" do
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn).to eq("1")
expect(address_lettings_log.address_line1).to eq("1, Test Street")
expect(address_lettings_log.town_or_city).to eq("Test Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.address_line1).to eq("1, Test Street")
expect(address_lettings_log.town_or_city).to eq("Test Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
expect(address_lettings_log.uprn_selection).to eq("1")
expect(address_lettings_log.uprn).to eq("1")
expect(address_lettings_log.uprn_known).to eq(1)
end
end
context "and the address is manually entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 16,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
uprn_selection: "uprn_not_listed",
address_line1: "Address line 1",
address_line2: "Address line 2",
town_or_city: "Town",
postcode_full: "AA1 1AA")
end
it "keeps the manually entered address" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
end
end
context "and the address is not entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
manual_address_entry_selected: false,
first_time_property_let_as_social_housing: 1,
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end
it "routes to the manual address questions" do
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.address_line1).to eq(nil)
expect(address_lettings_log.address_line2).to eq(nil)
expect(address_lettings_log.town_or_city).to eq(nil)
expect(address_lettings_log.postcode_full).to eq(nil)
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
end
end
end
end end
describe "optional fields" do describe "optional fields" do

40
spec/requests/address_search_controller_spec.rb

@ -144,5 +144,45 @@ RSpec.describe AddressSearchController, type: :request do
expect(sales_log.la).to eq(nil) expect(sales_log.la).to eq(nil)
end end
end end
context "when searching by address and UPRN" do
let(:sales_log) { create(:sales_log, :completed, manual_address_entry_selected: false, assigned_to: user) }
context "and theres no uprn returned" do
before do
body = { results: [{ DPA: { "ADDRESS": "1, Test Street", "UPRN": "123" } }] }.to_json
uprn_body = { results: [{ DPA: nil }] }.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/find?key=OS_DATA_KEY&maxresults=10&minmatch=0.2&query=100")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=100")
.to_return(status: 200, body: uprn_body, headers: {})
end
it "returns the address results" do
get "/address-search?query=100"
expect(response).to have_http_status(:ok)
expect(response.body).to eq([{ text: "1, Test Street", value: "123" }].to_json)
end
end
context "and theres no address returned" do
before do
body = { results: [{ DPA: nil }] }.to_json
uprn_body = { results: [{ DPA: { "ADDRESS": "2, Test Street", UPRN: "321" } }] }.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/find?key=OS_DATA_KEY&maxresults=10&minmatch=0.2&query=100")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=100")
.to_return(status: 200, body: uprn_body, headers: {})
end
it "returns the address results" do
get "/address-search?query=100"
expect(response).to have_http_status(:ok)
expect(response.body).to eq([{ text: "2, Test Street", value: "321" }].to_json)
end
end
end
end end
end end

7
spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

@ -1063,7 +1063,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
end end
context "and all key address fields are present" do context "and all key address fields are present" do
let(:attributes) { setup_section_params.merge({ field_22: nil, field_23: "address line 1", field_25: "town or city", field_27: "AA1", field_28: "1AA" }) } let(:attributes) { setup_section_params.merge({ field_22: nil, field_23: "address line 1", field_25: "town or city", field_27: "AA1", field_28: "1AA", field_29: "E06000023" }) }
context "and an address can be found with a high enough match rating" do context "and an address can be found with a high enough match rating" do
before do before do
@ -1073,7 +1073,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
it "does not add errors" do it "does not add errors" do
parser.valid? parser.valid?
%i[field_22 field_23 field_24 field_25 field_26 field_27 field_28].each do |field| %i[field_22 field_23 field_24 field_25 field_26 field_27 field_28 field_29].each do |field|
expect(parser.errors[field]).to be_empty expect(parser.errors[field]).to be_empty
end end
end end
@ -1092,7 +1092,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
it "does not add errors" do it "does not add errors" do
parser.valid? parser.valid?
%i[field_22 field_23 field_24 field_25 field_26 field_27 field_28].each do |field| %i[field_22 field_23 field_24 field_25 field_26 field_27 field_28 field_29].each do |field|
expect(parser.errors[field]).to be_empty expect(parser.errors[field]).to be_empty
end end
end end
@ -1103,6 +1103,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
expect(parser.log.address_line1).to eq("address line 1") expect(parser.log.address_line1).to eq("address line 1")
expect(parser.log.town_or_city).to eq("town or city") expect(parser.log.town_or_city).to eq("town or city")
expect(parser.log.postcode_full).to eq("AA1 1AA") expect(parser.log.postcode_full).to eq("AA1 1AA")
expect(parser.log.la).to eq("E06000023")
end end
end end

7
spec/services/bulk_upload/sales/year2025/row_parser_spec.rb

@ -978,7 +978,7 @@ RSpec.describe BulkUpload::Sales::Year2025::RowParser do
end end
context "and all key address fields are present" do context "and all key address fields are present" do
let(:attributes) { setup_section_params.merge({ field_16: nil, field_17: "address line 1", field_19: "town or city", field_21: "AA1", field_22: "1AA" }) } let(:attributes) { setup_section_params.merge({ field_16: nil, field_17: "address line 1", field_19: "town or city", field_21: "AA1", field_22: "1AA", field_23: "E06000023" }) }
context "and an address can be found with a high enough match rating" do context "and an address can be found with a high enough match rating" do
before do before do
@ -988,7 +988,7 @@ RSpec.describe BulkUpload::Sales::Year2025::RowParser do
it "does not add errors" do it "does not add errors" do
parser.valid? parser.valid?
%i[field_16 field_17 field_18 field_19 field_20 field_21 field_22].each do |field| %i[field_16 field_17 field_18 field_19 field_20 field_21 field_22 field_23].each do |field|
expect(parser.errors[field]).to be_empty expect(parser.errors[field]).to be_empty
end end
end end
@ -1007,7 +1007,7 @@ RSpec.describe BulkUpload::Sales::Year2025::RowParser do
it "does not add errors" do it "does not add errors" do
parser.valid? parser.valid?
%i[field_16 field_17 field_18 field_19 field_20 field_21 field_22].each do |field| %i[field_16 field_17 field_18 field_19 field_20 field_21 field_22 field_23].each do |field|
expect(parser.errors[field]).to be_empty expect(parser.errors[field]).to be_empty
end end
end end
@ -1018,6 +1018,7 @@ RSpec.describe BulkUpload::Sales::Year2025::RowParser do
expect(parser.log.address_line1).to eq("address line 1") expect(parser.log.address_line1).to eq("address line 1")
expect(parser.log.town_or_city).to eq("town or city") expect(parser.log.town_or_city).to eq("town or city")
expect(parser.log.postcode_full).to eq("AA1 1AA") expect(parser.log.postcode_full).to eq("AA1 1AA")
expect(parser.log.la).to eq("E06000023")
end end
end end

Loading…
Cancel
Save