Browse Source

Update the job to send missing town or city templates

pull/1953/head
Kat 3 years ago
parent
commit
94683e1b5c
  1. 13
      app/jobs/email_missing_addresses_csv_job.rb
  2. 4
      app/mailers/csv_download_mailer.rb
  3. 4
      app/services/csv/missing_addresses_csv_service.rb
  4. 60
      spec/jobs/email_missing_addresses_csv_job_spec.rb

13
app/jobs/email_missing_addresses_csv_job.rb

@ -3,15 +3,16 @@ class EmailMissingAddressesCsvJob < ApplicationJob
BYTE_ORDER_MARK = "\uFEFF".freeze # Required to ensure Excel always reads CSV as UTF-8 BYTE_ORDER_MARK = "\uFEFF".freeze # Required to ensure Excel always reads CSV as UTF-8
def perform(user_ids, organisation, log_type) def perform(user_ids, organisation, log_type, template_type)
csv_service = Csv::MissingAddressesCsvService.new(organisation:)
case log_type case log_type
when "lettings" when "lettings"
csv_string = Csv::MissingAddressesCsvService.new(organisation:).create_missing_lettings_addresses_csv csv_string = template_type == "town-or-city" ? csv_service.create_missing_lettings_town_or_city_csv : csv_service.create_missing_lettings_addresses_csv
filename = "#{['missing-lettings-logs-addresses', organisation.name, Time.zone.now].compact.join('-')}.csv" filename = "#{['missing-lettings-logs', template_type, organisation.name, Time.zone.now].compact.join('-')}.csv"
email_method = :send_missing_lettings_addresses_csv_download_mail email_method = :send_missing_lettings_addresses_csv_download_mail
when "sales" when "sales"
csv_string = Csv::MissingAddressesCsvService.new(organisation:).create_missing_sales_addresses_csv csv_string = template_type == "town-or-city" ? csv_service.create_missing_sales_town_or_city_csv : csv_service.create_missing_sales_addresses_csv
filename = "#{['missing-sales-logs-addresses', organisation.name, Time.zone.now].compact.join('-')}.csv" filename = "#{['missing-sales-logs', template_type, organisation.name, Time.zone.now].compact.join('-')}.csv"
email_method = :send_missing_sales_addresses_csv_download_mail email_method = :send_missing_sales_addresses_csv_download_mail
end end
@ -24,7 +25,7 @@ class EmailMissingAddressesCsvJob < ApplicationJob
user = User.find(id) user = User.find(id)
next if user.blank? next if user.blank?
CsvDownloadMailer.new.send(email_method, user, url) CsvDownloadMailer.new.send(email_method, user, url, template_type)
end end
end end
end end

4
app/mailers/csv_download_mailer.rb

@ -9,7 +9,7 @@ class CsvDownloadMailer < NotifyMailer
) )
end end
def send_missing_lettings_addresses_csv_download_mail(user, link); end def send_missing_lettings_addresses_csv_download_mail(user, link, template_type); end
def send_missing_sales_addresses_csv_download_mail(user, link); end def send_missing_sales_addresses_csv_download_mail(user, link, template_type); end
end end

4
app/services/csv/missing_addresses_csv_service.rb

@ -29,5 +29,9 @@ module Csv
end end
end end
end end
def create_missing_lettings_town_or_city_csv; end
def create_missing_sales_town_or_city_csv; end
end end
end end

60
spec/jobs/email_missing_addresses_csv_job_spec.rb

@ -20,6 +20,8 @@ describe EmailMissingAddressesCsvJob do
allow(Csv::MissingAddressesCsvService).to receive(:new).and_return(missing_addresses_csv_service) allow(Csv::MissingAddressesCsvService).to receive(:new).and_return(missing_addresses_csv_service)
allow(missing_addresses_csv_service).to receive(:create_missing_lettings_addresses_csv).and_return("") allow(missing_addresses_csv_service).to receive(:create_missing_lettings_addresses_csv).and_return("")
allow(missing_addresses_csv_service).to receive(:create_missing_sales_addresses_csv).and_return("") allow(missing_addresses_csv_service).to receive(:create_missing_sales_addresses_csv).and_return("")
allow(missing_addresses_csv_service).to receive(:create_missing_lettings_town_or_city_csv).and_return("")
allow(missing_addresses_csv_service).to receive(:create_missing_sales_town_or_city_csv).and_return("")
allow(CsvDownloadMailer).to receive(:new).and_return(mailer) allow(CsvDownloadMailer).to receive(:new).and_return(mailer)
allow(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail) allow(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail)
@ -29,38 +31,76 @@ describe EmailMissingAddressesCsvJob do
context "when sending missing lettings logs csv" do context "when sending missing lettings logs csv" do
it "uses an appropriate filename in S3" do it "uses an appropriate filename in S3" do
expect(storage_service).to receive(:write_file).with(/missing-lettings-logs-addresses-#{organisation.name}-.*\.csv/, anything) expect(storage_service).to receive(:write_file).with(/missing-lettings-logs-addresses-#{organisation.name}-.*\.csv/, anything)
job.perform(users.map(&:id), organisation, "lettings") job.perform(users.map(&:id), organisation, "lettings", "addresses")
end end
it "creates a MissingAddressesCsvService with the correct organisation and calls create missing lettings logs adresses csv" do it "creates a MissingAddressesCsvService with the correct organisation and calls create missing lettings logs adresses csv" do
expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:) expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:)
expect(missing_addresses_csv_service).to receive(:create_missing_lettings_addresses_csv) expect(missing_addresses_csv_service).to receive(:create_missing_lettings_addresses_csv)
job.perform(users.map(&:id), organisation, "lettings") job.perform(users.map(&:id), organisation, "lettings", "addresses")
end end
it "sends emails to all the provided users" do it "sends emails to all the provided users" do
expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[0], test_url) expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[0], test_url, "addresses")
expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[1], test_url) expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[1], test_url, "addresses")
job.perform(users.map(&:id), organisation, "lettings") job.perform(users.map(&:id), organisation, "lettings", "addresses")
end end
end end
context "when sending missing sales logs csv" do context "when sending missing sales logs csv" do
it "uses an appropriate filename in S3" do it "uses an appropriate filename in S3" do
expect(storage_service).to receive(:write_file).with(/missing-sales-logs-addresses-#{organisation.name}-.*\.csv/, anything) expect(storage_service).to receive(:write_file).with(/missing-sales-logs-addresses-#{organisation.name}-.*\.csv/, anything)
job.perform(users.map(&:id), organisation, "sales") job.perform(users.map(&:id), organisation, "sales", "addresses")
end end
it "creates a MissingAddressesCsvService with the correct organisation and calls create missing sales logs adresses csv" do it "creates a MissingAddressesCsvService with the correct organisation and calls create missing sales logs adresses csv" do
expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:) expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:)
expect(missing_addresses_csv_service).to receive(:create_missing_sales_addresses_csv) expect(missing_addresses_csv_service).to receive(:create_missing_sales_addresses_csv)
job.perform(users.map(&:id), organisation, "sales") job.perform(users.map(&:id), organisation, "sales", "addresses")
end end
it "sends emails to all the provided users" do it "sends emails to all the provided users" do
expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[0], test_url) expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[0], test_url, "addresses")
expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[1], test_url) expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[1], test_url, "addresses")
job.perform(users.map(&:id), organisation, "sales") job.perform(users.map(&:id), organisation, "sales", "addresses")
end
end
context "when sending missing lettings town or city logs csv" do
it "uses an appropriate filename in S3" do
expect(storage_service).to receive(:write_file).with(/missing-lettings-logs-town-or-city-#{organisation.name}-.*\.csv/, anything)
job.perform(users.map(&:id), organisation, "lettings", "town-or-city")
end
it "creates a MissingAddressesCsvService with the correct organisation and calls create missing lettings logs adresses csv" do
expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:)
expect(missing_addresses_csv_service).to receive(:create_missing_lettings_town_or_city_csv)
job.perform(users.map(&:id), organisation, "lettings", "town-or-city")
end
it "sends emails to all the provided users" do
expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[0], test_url, "town-or-city")
expect(mailer).to receive(:send_missing_lettings_addresses_csv_download_mail).with(users[1], test_url, "town-or-city")
job.perform(users.map(&:id), organisation, "lettings", "town-or-city")
end
end
context "when sending missing sales town or city logs csv" do
it "uses an appropriate filename in S3" do
expect(storage_service).to receive(:write_file).with(/missing-sales-logs-town-or-city-#{organisation.name}-.*\.csv/, anything)
job.perform(users.map(&:id), organisation, "sales", "town-or-city")
end
it "creates a MissingAddressesCsvService with the correct organisation and calls create missing sales logs adresses csv" do
expect(Csv::MissingAddressesCsvService).to receive(:new).with(organisation:)
expect(missing_addresses_csv_service).to receive(:create_missing_sales_town_or_city_csv)
job.perform(users.map(&:id), organisation, "sales", "town-or-city")
end
it "sends emails to all the provided users" do
expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[0], test_url, "town-or-city")
expect(mailer).to receive(:send_missing_sales_addresses_csv_download_mail).with(users[1], test_url, "town-or-city")
job.perform(users.map(&:id), organisation, "sales", "town-or-city")
end end
end end
end end

Loading…
Cancel
Save