Browse Source

Update missing addresses csv service methods

pull/1953/head
Kat 3 years ago
parent
commit
5a84cbe81f
  1. 30
      app/services/csv/missing_addresses_csv_service.rb
  2. 2
      spec/fixtures/files/missing_lettings_logs_addresses.csv
  3. 2
      spec/fixtures/files/missing_sales_logs_addresses.csv
  4. 104
      spec/services/csv/missing_addresses_csv_service_spec.rb

30
app/services/csv/missing_addresses_csv_service.rb

@ -1,9 +1,33 @@
module Csv
class MissingAddressesCsvService
def initialize(organisation); end
def initialize(organisation)
@organisation = organisation
end
def create_missing_lettings_addresses_csv; end
def create_missing_lettings_addresses_csv
CSV.generate(headers: true) do |csv|
csv << ["Tenancy start date", "Tenant code", "Property code", "Log owner", "Owning organisation name", "Managing organisation name", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"]
def create_missing_sales_addresses_csv; end
logs_with_missing_addresses = @organisation.managed_lettings_logs.imported.filter_by_year(2023).where(needstype: 1, address_line1: nil, town_or_city: nil, uprn_known: [0, nil])
return if logs_with_missing_addresses.empty?
logs_with_missing_addresses.each do |log|
csv << [log.startdate&.to_date, log.tenancycode, log.propcode, log.created_by&.email, log.owning_organisation&.name, log.managing_organisation&.name, log.address_line1, log.address_line2, log.town_or_city, log.county, log.postcode_full, log.la]
end
end
end
def create_missing_sales_addresses_csv
CSV.generate(headers: true) do |csv|
csv << ["Sale completion date", "Purchaser code", "Log owner", "Owning organisation name", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"]
logs_with_missing_addresses = @organisation.sales_logs.imported.filter_by_year(2023).where(address_line1: nil, town_or_city: nil, uprn_known: [0, nil])
return if logs_with_missing_addresses.empty?
logs_with_missing_addresses.each do |log|
csv << [log.saledate&.to_date, log.purchid, log.created_by&.email, log.owning_organisation&.name, log.address_line1, log.address_line2, log.town_or_city, log.county, log.postcode_full, log.la]
end
end
end
end
end

2
spec/fixtures/files/missing_lettings_logs_addresses.csv vendored

@ -0,0 +1,2 @@
Tenancy start date,Tenant code,Property code,Log owner,Owning organisation name,Managing organisation name,Address line 1,Address line 2,Town or City,County,Postcode,Local authority
2023-04-05,tenancycode,propcode,testy@example.com,Address test,Address test,,,,,,
1 Tenancy start date Tenant code Property code Log owner Owning organisation name Managing organisation name Address line 1 Address line 2 Town or City County Postcode Local authority
2 2023-04-05 tenancycode propcode testy@example.com Address test Address test

2
spec/fixtures/files/missing_sales_logs_addresses.csv vendored

@ -0,0 +1,2 @@
Sale completion date,Purchaser code,Log owner,Owning organisation name,Address line 1,Address line 2,Town or City,County,Postcode,Local authority
2023-04-05,purchaser code,testy@example.com,Address test,,,,,,
1 Sale completion date Purchaser code Log owner Owning organisation name Address line 1 Address line 2 Town or City County Postcode Local authority
2 2023-04-05 purchaser code testy@example.com Address test

104
spec/services/csv/missing_addresses_csv_service_spec.rb

@ -0,0 +1,104 @@
require "rails_helper"
RSpec.describe Csv::MissingAddressesCsvService do
let(:organisation) { create(:organisation, name: "Address test") }
let(:user) { create(:user, organisation:, email: "testy@example.com") }
let(:service) { described_class.new(organisation) }
describe "#create_missing_lettings_addresses_csv" do
let!(:lettings_log) do
create(:lettings_log,
tenancycode: "tenancycode",
propcode: "propcode",
startdate: Time.zone.local(2023, 4, 5),
created_by: user,
owning_organisation: organisation,
managing_organisation: organisation,
address_line1: nil,
town_or_city: nil,
old_id: "old_id",
needstype: 1,
uprn_known: 0)
end
context "when the organisation has logs with missing addresses" do
it "returns a csv with relevant logs" do
expected_content = CSV.read("spec/fixtures/files/missing_lettings_logs_addresses.csv")
csv = CSV.parse(service.create_missing_lettings_addresses_csv)
expect(csv).to eq(expected_content)
end
end
context "when the organisation only has supported housing logs with missing addresses" do
before do
lettings_log.update!(needstype: 2)
end
it "returns nil" do
expect(service.create_missing_lettings_addresses_csv).to be_nil
end
end
context "when the organisation only has logs with missing addresses from 2022" do
before do
lettings_log.update!(startdate: Time.zone.local(2022, 4, 5))
end
it "returns nil" do
expect(service.create_missing_lettings_addresses_csv).to be_nil
end
end
context "when the organisation has any address fields filled in" do
before do
lettings_log.update!(address_line1: "address_line1")
end
it "returns nil" do
expect(service.create_missing_lettings_addresses_csv).to be_nil
end
end
end
describe "#create_missing_sales_addresses_csv" do
let!(:sales_log) do
create(:sales_log,
purchid: "purchaser code",
saledate: Time.zone.local(2023, 4, 5),
created_by: user,
owning_organisation: organisation,
address_line1: nil,
town_or_city: nil,
old_id: "old_id",
uprn_known: 0)
end
context "when the organisation has logs with missing addresses" do
it "returns a csv with relevant logs" do
expected_content = CSV.read("spec/fixtures/files/missing_sales_logs_addresses.csv")
csv = CSV.parse(service.create_missing_sales_addresses_csv)
expect(csv).to eq(expected_content)
end
end
context "when the organisation only has logs with missing addresses from 2022" do
before do
sales_log.update!(saledate: Time.zone.local(2022, 4, 5))
end
it "returns nil" do
expect(service.create_missing_sales_addresses_csv).to be_nil
end
end
context "when the organisation has any address fields filled in" do
before do
sales_log.update!(town_or_city: "town")
end
it "returns nil" do
expect(service.create_missing_sales_addresses_csv).to be_nil
end
end
end
end
Loading…
Cancel
Save