kosiakkatrina
7 months ago
committed by
GitHub
8 changed files with 239 additions and 23 deletions
@ -0,0 +1,14 @@
|
||||
desc "Reinfers LA from postcode where it's missing" |
||||
task reinfer_local_authority: :environment do |
||||
LettingsLog.filter_by_year(2023).where(needstype: 1, la: nil).where.not(postcode_full: nil).find_each do |log| |
||||
log.process_postcode_changes! |
||||
|
||||
Rails.logger.info "Invalid lettings log: #{log.id}" unless log.save |
||||
end |
||||
|
||||
SalesLog.filter_by_year(2023).where(la: nil).where.not(postcode_full: nil).find_each do |log| |
||||
log.process_postcode_changes! |
||||
|
||||
Rails.logger.info "Invalid sales log: #{log.id}" unless log.save |
||||
end |
||||
end |
@ -0,0 +1,88 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "reinfer_local_authority" do |
||||
describe ":reinfer_local_authority", type: :task do |
||||
subject(:task) { Rake::Task["reinfer_local_authority"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/reinfer_local_authority") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and there is a general needs type lettings log with postcode and without LA" do |
||||
let(:log) { create(:lettings_log, :completed, postcode_full: "AA1 1AA", status: "completed", startdate: Time.zone.local(2023, 4, 1)) } |
||||
|
||||
it "updates the la if it can be inferred" do |
||||
log.la = nil |
||||
log.save!(validate: false) |
||||
task.invoke |
||||
|
||||
log.reload |
||||
expect(log.la).to eq("E09000033") |
||||
expect(log.status).to eq("completed") |
||||
end |
||||
|
||||
it "does not update the la if it cannot be inferred and sets status to in_progress" do |
||||
log.la = nil |
||||
log.postcode_full = "B11AB" |
||||
log.save!(validate: false) |
||||
task.invoke |
||||
|
||||
log.reload |
||||
expect(log.la).to be_nil |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and the lettings log has a validation error" do |
||||
let(:log) { build(:lettings_log, :completed, postcode_full: "some fake postcode", la: nil, status: "completed", startdate: Time.zone.local(2023, 4, 1)) } |
||||
|
||||
it "logs invalid log ID" do |
||||
log.save!(validate: false) |
||||
expect(Rails.logger).to receive(:info).with("Invalid lettings log: #{log.id}") |
||||
|
||||
task.invoke |
||||
end |
||||
end |
||||
|
||||
context "and there is a sales log with postcode and without LA" do |
||||
let(:log) { create(:sales_log, :completed, postcode_full: "AA1 1AA", status: "completed", saledate: Time.zone.local(2023, 4, 1)) } |
||||
|
||||
it "updates the la if it can be inferred" do |
||||
log.la = nil |
||||
log.save!(validate: false) |
||||
task.invoke |
||||
|
||||
log.reload |
||||
expect(log.la).to eq("E09000033") |
||||
expect(log.status).to eq("completed") |
||||
end |
||||
|
||||
it "does not update the la if it cannot be inferred and sets status to in_progress" do |
||||
log.la = nil |
||||
log.postcode_full = "B11AB" |
||||
log.save!(validate: false) |
||||
task.invoke |
||||
|
||||
log.reload |
||||
expect(log.la).to be_nil |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and the sales log has a validation error" do |
||||
let(:log) { build(:sales_log, :completed, postcode_full: "some fake postcode", la: nil, status: "completed", saledate: Time.zone.local(2023, 4, 1)) } |
||||
|
||||
it "logs invalid log ID" do |
||||
log.save!(validate: false) |
||||
expect(Rails.logger).to receive(:info).with("Invalid sales log: #{log.id}") |
||||
|
||||
task.invoke |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue