From dea249b58bb19d9103ec8704ddf414553e01a318 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 24 Feb 2023 09:22:17 +0000 Subject: [PATCH] Add more default mapping --- .../imports/sales_logs_import_service.rb | 7 + .../imports/sales_logs_import_service_spec.rb | 166 ++++++++++++++++++ 2 files changed, 173 insertions(+) diff --git a/app/services/imports/sales_logs_import_service.rb b/app/services/imports/sales_logs_import_service.rb index 68e55214f..399b1cc61 100644 --- a/app/services/imports/sales_logs_import_service.rb +++ b/app/services/imports/sales_logs_import_service.rb @@ -399,6 +399,11 @@ module Imports def set_default_values(attributes) attributes["mscharge_known"] ||= 0 if attributes["ownershipsch"] == 3 attributes["armedforcesspouse"] ||= 7 + attributes["hhregres"] ||= 8 + attributes["disabled"] ||= 3 + attributes["wheel"] ||= 3 + attributes["hb"] ||= 4 + attributes["prevown"] ||= 3 attributes["savingsnk"] ||= attributes["savings"].present? ? 0 : 1 # buyer 1 characteristics @@ -407,12 +412,14 @@ module Imports attributes["ethnic_group"] ||= 17 attributes["national"] ||= 13 attributes["ecstat1"] ||= 10 + attributes["income1nk"] ||= attributes["income1"].present? ? 0 : 1 # buyer 2 characteristics if attributes["jointpur"] == 1 attributes["age2_known"] ||= 1 attributes["sex2"] ||= "R" attributes["ecstat2"] ||= 10 + attributes["income2nk"] ||= attributes["income2"].present? ? 0 : 1 end # other household members characteristics diff --git a/spec/services/imports/sales_logs_import_service_spec.rb b/spec/services/imports/sales_logs_import_service_spec.rb index 4ed3e1f88..e262912a7 100644 --- a/spec/services/imports/sales_logs_import_service_spec.rb +++ b/spec/services/imports/sales_logs_import_service_spec.rb @@ -385,6 +385,172 @@ RSpec.describe Imports::SalesLogsImportService do expect(sales_log&.relat3).to eq("P") end end + + context "when inferring armed forces" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets hhregres to don't know if not answered" do + sales_log_xml.at_xpath("//xmlns:ArmedF").content = "" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.hhregres).to eq(8) + end + + it "sets hhregres correctly if answered" do + sales_log_xml.at_xpath("//xmlns:ArmedF").content = "7 No" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.hhregres).to eq(7) + end + end + + context "when inferring disability" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets disabled to don't know if not answered" do + sales_log_xml.at_xpath("//xmlns:Disability").content = "" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.disabled).to eq(3) + end + + it "sets disabled correctly if answered" do + sales_log_xml.at_xpath("//xmlns:Disability").content = "2 No" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.disabled).to eq(2) + end + end + + context "when inferring wheelchair" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets wheel to don't know if not answered" do + sales_log_xml.at_xpath("//xmlns:Q10Wheelchair").content = "" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.wheel).to eq(3) + end + + it "sets wheel correctly if answered" do + sales_log_xml.at_xpath("//xmlns:Q10Wheelchair").content = "2 No" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.wheel).to eq(2) + end + end + + context "when inferring housing benefit" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets hb to don't know if not answered" do + sales_log_xml.at_xpath("//xmlns:Q2a").content = "" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.hb).to eq(4) + end + + it "sets hb correctly if answered" do + sales_log_xml.at_xpath("//xmlns:Q2a").content = "2 Housing Benefit" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.hb).to eq(2) + end + end + + context "when inferring income not known" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + sales_log_xml.at_xpath("//xmlns:joint").content = "1 Yes" + sales_log_xml.at_xpath("//xmlns:JointMore").content = "2 No" + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets income to not known if not answered and income is not given" do + sales_log_xml.at_xpath("//xmlns:P1IncKnown").content = "" + sales_log_xml.at_xpath("//xmlns:Q2Person1Income").content = "" + sales_log_xml.at_xpath("//xmlns:P2IncKnown").content = "" + sales_log_xml.at_xpath("//xmlns:Q2Person2Income").content = "" + + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.income1nk).to eq(1) + expect(sales_log&.income2nk).to eq(1) + end + + it "sets income to known if not answered but the income is given" do + sales_log_xml.at_xpath("//xmlns:P1IncKnown").content = "" + sales_log_xml.at_xpath("//xmlns:Q2Person1Income").content = "30000" + sales_log_xml.at_xpath("//xmlns:P2IncKnown").content = "" + sales_log_xml.at_xpath("//xmlns:Q2Person2Income").content = "40000" + + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.income1nk).to eq(0) + expect(sales_log&.income2nk).to eq(0) + end + + it "sets income known correctly if answered" do + sales_log_xml.at_xpath("//xmlns:P1IncKnown").content = "1 Yes" + sales_log_xml.at_xpath("//xmlns:P2IncKnown").content = "2 No" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.income1nk).to eq(0) + expect(sales_log&.income2nk).to eq(1) + end + end + + context "when inferring prevown" do + let(:sales_log_id) { discounted_ownership_sales_log_id } + + before do + allow(logger).to receive(:warn).and_return(nil) + end + + it "sets prevown to don't know if not answered" do + sales_log_xml.at_xpath("//xmlns:Q4PrevOwnedProperty").content = "" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.prevown).to eq(3) + end + + it "sets prevown correctly if answered" do + sales_log_xml.at_xpath("//xmlns:Q4PrevOwnedProperty").content = "2 No" + sales_log_service.send(:create_log, sales_log_xml) + + sales_log = SalesLog.find_by(old_id: sales_log_id) + expect(sales_log&.prevown).to eq(2) + end + end end end end