From 050888b179625473b7a75748135af1ead5c48284 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 20 Dec 2023 14:31:31 +0000 Subject: [PATCH] Set age known correctly for sales --- .../bulk_upload/sales/year2023/row_parser.rb | 16 +++---- .../sales/year2023/row_parser_spec.rb | 43 +++++++++++++------ 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/app/services/bulk_upload/sales/year2023/row_parser.rb b/app/services/bulk_upload/sales/year2023/row_parser.rb index 485a412ba..d5dca1c04 100644 --- a/app/services/bulk_upload/sales/year2023/row_parser.rb +++ b/app/services/bulk_upload/sales/year2023/row_parser.rb @@ -788,22 +788,22 @@ private attributes["noint"] = 2 if field_28 == 1 attributes["age1_known"] = age1_known? - attributes["age1"] = field_30 if attributes["age1_known"].zero? && field_30&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age1"] = field_30 if attributes["age1_known"]&.zero? && field_30&.match(/\A\d{1,3}\z|\AR\z/) attributes["age2_known"] = age2_known? - attributes["age2"] = field_38 if attributes["age2_known"].zero? && field_38&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age2"] = field_38 if attributes["age2_known"]&.zero? && field_38&.match(/\A\d{1,3}\z|\AR\z/) attributes["age3_known"] = age3_known? - attributes["age3"] = field_47 if attributes["age3_known"].zero? && field_47&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age3"] = field_47 if attributes["age3_known"]&.zero? && field_47&.match(/\A\d{1,3}\z|\AR\z/) attributes["age4_known"] = age4_known? - attributes["age4"] = field_51 if attributes["age4_known"].zero? && field_51&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age4"] = field_51 if attributes["age4_known"]&.zero? && field_51&.match(/\A\d{1,3}\z|\AR\z/) attributes["age5_known"] = age5_known? - attributes["age5"] = field_55 if attributes["age5_known"].zero? && field_55&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age5"] = field_55 if attributes["age5_known"]&.zero? && field_55&.match(/\A\d{1,3}\z|\AR\z/) attributes["age6_known"] = age6_known? - attributes["age6"] = field_59 if attributes["age6_known"].zero? && field_59&.match(/\A\d{1,3}\z|\AR\z/) + attributes["age6"] = field_59 if attributes["age6_known"]&.zero? && field_59&.match(/\A\d{1,3}\z|\AR\z/) attributes["sex1"] = field_31 attributes["sex2"] = field_39 @@ -973,7 +973,6 @@ private def age1_known? return 1 if field_30 == "R" - return 1 if field_30.blank? 0 end @@ -988,9 +987,6 @@ private define_method("age#{hash[:person]}_known?") do return 1 if public_send(hash[:field]) == "R" return 0 if send("person_#{hash[:person]}_present?") - return 1 if public_send(hash[:field]).blank? - - 0 end end diff --git a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb index 4853afb6f..e53fb7350 100644 --- a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb @@ -826,23 +826,42 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do end [ - %w[age1_known age1 field_30], - %w[age2_known age2 field_38], - %w[age3_known age3 field_47], - %w[age4_known age4 field_51], - %w[age5_known age5 field_55], - %w[age6_known age6 field_59], - ].each do |known, age, field| + %w[age1_known details_known_1 age1 field_30 field_37 field_39], + %w[age2_known details_known_2 age2 field_38 field_37 field_39], + %w[age3_known details_known_3 age3 field_47 field_46 field_48], + %w[age4_known details_known_4 age4 field_51 field_50 field_52], + %w[age5_known details_known_5 age5 field_55 field_54 field_56], + %w[age6_known details_known_6 age6 field_59 field_58 field_60], + ].each do |known, details_known, age, field, relationship, gender| describe "##{known} and ##{age}" do context "when #{field} is blank" do - let(:attributes) { { bulk_upload:, field.to_s => nil } } + context "and person details are blank" do + let(:attributes) { setup_section_params.merge({ field.to_s => nil, relationship.to_sym => nil, gender.to_sym => nil, field_29: "1", field_45: "5" }) } - it "sets ##{known} 1" do - expect(parser.log.public_send(known)).to be(1) + it "does not set ##{known}" do + unless known == "age1_known" + expect(parser.log.public_send(known)).to be_nil + end + end + + it "sets ##{details_known} to no" do + unless details_known == "details_known_1" + expect(parser.log.public_send(details_known)).to eq(2) + end + end + + it "sets ##{age} to nil" do + expect(parser.log.public_send(age)).to be_nil + end end - it "sets ##{age} to nil" do - expect(parser.log.public_send(age)).to be_nil + context "and person details are given" do + let(:attributes) { setup_section_params.merge({ field.to_sym => nil, relationship.to_sym => "C", gender.to_sym => "X", field_29: "1", field_45: "5" }) } + + it "does not set ##{age}" do + parser.valid? + expect(parser.errors[field.to_sym]).to include(/You must answer/) + end end end