From 4fd31d425cb9eeb6c9327d8cdaa0b9b5df326df1 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Mon, 11 Mar 2024 12:45:38 +0000 Subject: [PATCH] feat: update tests and error behaviour --- app/models/log.rb | 7 +++++-- spec/shared/shared_log_examples.rb | 29 ++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/models/log.rb b/app/models/log.rb index 829173309..24a42b04e 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -62,7 +62,11 @@ class Log < ApplicationRecord service = UprnClient.new(uprn) service.call - return errors.add(:uprn, :uprn_error, message: service.error) if service.error.present? + if service.result.blank? || service.error.present? + errors.add(:uprn, :uprn_error, message: service.error) + errors.add(:uprn_selection, :uprn_error, message: service.error) + return + end presenter = UprnDataPresenter.new(service.result) @@ -122,7 +126,6 @@ class Log < ApplicationRecord if [address_line1_input, postcode_full_input].all?(&:present?) service = AddressClient.new(address_string) service.call - return nil if service.result.blank? || service.error.present? address_opts = [] diff --git a/spec/shared/shared_log_examples.rb b/spec/shared/shared_log_examples.rb index 790665963..0632967cb 100644 --- a/spec/shared/shared_log_examples.rb +++ b/spec/shared/shared_log_examples.rb @@ -112,7 +112,7 @@ RSpec.shared_examples "shared log examples" do |log_type| let(:log) do log = build( log_type, - uprn_selection: 0, + uprn_selection: "UPRN", address_line1: "Address line 1", postcode_full: "AA1 1AA", county: "county", @@ -137,13 +137,25 @@ RSpec.shared_examples "shared log examples" do |log_type| "POSTCODE" => "postcode", }]) + allow_any_instance_of(UprnClient).to receive(:call) + allow_any_instance_of(UprnClient).to receive(:result).and_return({ + "UPRN" => "UPRN", + "UDPRN" => "UDPRN", + "ADDRESS" => "full address", + "SUB_BUILDING_NAME" => "0", + "BUILDING_NAME" => "building name", + "THOROUGHFARE_NAME" => "thoroughfare", + "POST_TOWN" => "posttown", + "POSTCODE" => "postcode", + }) + expect { log.process_address_change! }.to change(log, :address_line1).from("Address line 1").to("0, Building Name, Thoroughfare") .and change(log, :town_or_city).from(nil).to("Posttown") .and change(log, :postcode_full).from("AA1 1AA").to("POSTCODE") .and change(log, :uprn_confirmed).from(nil).to(1) .and change(log, :uprn).from(nil).to("UPRN") .and change(log, :uprn_known).from(nil).to(1) - .and change(log, :uprn_selection).from(0).to(nil) + .and change(log, :uprn_selection).from("UPRN").to(nil) .and change(log, :county).from("county").to(nil) end end @@ -157,12 +169,23 @@ RSpec.shared_examples "shared log examples" do |log_type| end context "when service errors" do - let(:log) { build(log_type, :in_progress, uprn_selection: 0, address_line1_input: "123", postcode_full_input: "AA1 1AA") } + let(:log) { build(log_type, :in_progress, uprn_selection: "UPRN", address_line1_input: "123", postcode_full_input: "AA1 1AA") } let(:error_message) { "error" } it "adds error to log" do allow_any_instance_of(AddressClient).to receive(:call) allow_any_instance_of(AddressClient).to receive(:error).and_return(error_message) + allow_any_instance_of(UprnClient).to receive(:call) + allow_any_instance_of(UprnClient).to receive(:result).and_return({ + "UPRN" => "UPRN", + "UDPRN" => "UDPRN", + "ADDRESS" => "full address", + "SUB_BUILDING_NAME" => "0", + "BUILDING_NAME" => "building name", + "THOROUGHFARE_NAME" => "thoroughfare", + "POST_TOWN" => "posttown", + "POSTCODE" => "postcode", + }) expect { log.process_address_change! }.to change { log.errors[:uprn_selection] }.from([]).to([error_message]) end