Browse Source

bulk upload log creation blanks invalid fields

pull/1208/head
Phil Lee 3 years ago
parent
commit
bb46bd8192
  1. 3
      app/services/bulk_upload/lettings/log_creator.rb
  2. 4
      spec/rails_helper.rb
  3. 37
      spec/services/bulk_upload/lettings/log_creator_spec.rb
  4. 254
      spec/support/bulk_upload/log_to_csv.rb

3
app/services/bulk_upload/lettings/log_creator.rb

@ -8,6 +8,9 @@ class BulkUpload::Lettings::LogCreator
def call
row_parsers.each do |row_parser|
row_parser.valid?
row_parser.log.blank_invalid_non_setup_fields!
row_parser.log.bulk_upload = bulk_upload
row_parser.log.save
end

4
spec/rails_helper.rb

@ -32,8 +32,8 @@ Capybara.javascript_driver = :headless
# of increasing the boot-up time by auto-requiring all files in the support
# directory. Alternatively, in the individual `*_spec.rb` files, manually
# require only the support files necessary.
#
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }
Dir[Rails.root.join("spec", "support", "**", "*.rb")].sort.each { |f| require f }
# Checks for pending migrations and applies them before tests are run.
# If you are not using ActiveRecord, you can remove these lines.

37
spec/services/bulk_upload/lettings/log_creator_spec.rb

@ -24,6 +24,43 @@ RSpec.describe BulkUpload::Lettings::LogCreator do
end
end
context "when a valid csv with row with one invalid non setup field" do
let(:file) { Tempfile.new }
let(:path) { file.path }
let(:log) do
build(
:lettings_log,
:completed,
renttype: 3,
age1: 5,
owning_organisation: owning_org,
managing_organisation: owning_org,
national: 18,
waityear: 9,
joint: 2,
tenancy: 9,
ppcodenk: 0,
)
end
before do
5.times { file.write "\n" }
file.write(BulkUpload::LogToCsv.new(log:).to_csv_row)
file.rewind
end
it "creates the log" do
expect { service.call }.to change(LettingsLog, :count).by(1)
end
it "blanks invalid field" do
service.call
record = LettingsLog.last
expect(record.age1).to be_blank
end
end
context "when valid csv with existing log" do
xit "what should happen?"
end

254
spec/support/bulk_upload/log_to_csv.rb

@ -0,0 +1,254 @@
class BulkUpload::LogToCsv
attr_reader :log
def initialize(log:)
@log = log
end
def to_csv_row
[
nil, # 0
log.renttype, # 1
nil,
nil,
log.scheme&.old_visible_id,
log.location&.old_visible_id,
nil,
log.tenancycode,
log.startertenancy,
log.tenancy,
log.tenancyother, # 10
log.tenancylength,
log.age1,
log.age2,
log.age3,
log.age4,
log.age5,
log.age6,
log.age7,
log.age8,
log.sex1, # 20
log.sex2,
log.sex3,
log.sex4,
log.sex5,
log.sex6,
log.sex7,
log.sex8,
log.relat2,
log.relat3,
log.relat4, # 30
log.relat5,
log.relat6,
log.relat7,
log.relat8,
log.ecstat1,
log.ecstat2,
log.ecstat3,
log.ecstat4,
log.ecstat5,
log.ecstat6, # 40
log.ecstat7,
log.ecstat8,
log.ethnic,
log.national,
log.armedforces,
log.reservist,
log.preg_occ,
log.hb,
log.benefits,
log.earnings, # 50
net_income_known,
nil,
log.reasonother,
nil,
nil,
nil,
nil,
nil,
nil,
nil, # 60
log.prevten,
log.prevloc,
((log.ppostcode_full || "").split(" ") || [""]).first,
((log.ppostcode_full || "").split(" ") || [""]).last,
previous_postcode_known,
log.layear,
log.waityear,
homeless,
log.reasonpref,
log.rp_homeless, # 70
log.rp_insan_unsat,
log.rp_medwel,
log.rp_hardship,
log.rp_dontknow,
cbl,
chr,
cap,
log.referral,
log.period,
log.brent, # 80
log.scharge,
log.pscharge,
log.supcharg,
log.tcharge,
log.chcharge,
log.household_charge,
log.hbrentshortfall,
log.tshortfall,
log.voiddate&.day,
log.voiddate&.month, # 90
log.voiddate&.strftime("%y"),
log.mrcdate&.day,
log.mrcdate&.month,
log.mrcdate&.strftime("%y"),
nil,
log.startdate&.day,
log.startdate&.month,
log.startdate&.strftime("%y"),
log.offered,
log.propcode, # 100
log.beds,
log.unittype_gn,
log.builtype,
log.wchair,
log.unitletas,
log.rsnvac,
log.la,
((log.postcode_full || "").split(" ") || [""]).first,
((log.postcode_full || "").split(" ") || [""]).last,
nil, # 110
log.owning_organisation&.old_visible_id,
nil,
log.managing_organisation&.old_visible_id,
leftreg,
nil,
log.incfreq,
log.sheltered,
log.illness,
log.illness_type_1,
log.illness_type_2, # 120
log.illness_type_3,
log.illness_type_4,
log.illness_type_5,
log.illness_type_6,
log.illness_type_7,
log.illness_type_8,
log.illness_type_9,
log.illness_type_10,
london_affordable_rent,
intermediate_rent_type, # 130
log.irproduct_other,
log.declaration,
log.joint,
renewal,
"\n",
].join(",")
end
def renewal
case log.renewal
when 1
1
when 0
2
end
end
def london_affordable_rent
case log.renttype
when Imports::LettingsLogsImportService::RENT_TYPE[:london_affordable_rent]
1
end
end
def intermediate_rent_type
case log.renttype
when Imports::LettingsLogsImportService::RENT_TYPE[:rent_to_buy]
1
when Imports::LettingsLogsImportService::RENT_TYPE[:london_living_rent]
2
when Imports::LettingsLogsImportService::RENT_TYPE[:other_intermediate_rent_product]
3
end
end
def leftreg
case log.leftreg
when 3
3
when 1
4
when 2
5
when 0
6
end
end
def net_income_known
case log.net_income_known
when 0
1
when 1
2
when 2
4
end
end
def previous_postcode_known
case log.ppcodenk
when 1
1
when 0
2
end
end
def homeless
case log.homeless
when 1
1
when 11
12
end
end
def cbl
case log.cbl
when 0
2
when 1
1
end
end
def chr
case log.chr
when 0
2
when 1
1
end
end
def cap
case log.cap
when 0
2
when 1
1
end
end
end
Loading…
Cancel
Save