kosiakkatrina
1 year ago
committed by
GitHub
2 changed files with 58 additions and 0 deletions
@ -0,0 +1,6 @@ |
|||||||
|
desc "Infers location admin district for locations from location code where it's missing" |
||||||
|
task correct_location_admin_district: :environment do |
||||||
|
Location.where.not(location_code: nil).where(location_admin_district: nil).each do |location| |
||||||
|
location.update(location_admin_district: LocalAuthority.all.active(Time.zone.today).england.find_by(code: location.location_code)&.name) |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,52 @@ |
|||||||
|
require "rails_helper" |
||||||
|
require "rake" |
||||||
|
|
||||||
|
RSpec.describe "correct_location_admin_district" do |
||||||
|
describe ":correct_location_admin_district", type: :task do |
||||||
|
subject(:task) { Rake::Task["correct_location_admin_district"] } |
||||||
|
|
||||||
|
before do |
||||||
|
Rake.application.rake_require("tasks/correct_location_admin_district") |
||||||
|
Rake::Task.define_task(:environment) |
||||||
|
task.reenable |
||||||
|
end |
||||||
|
|
||||||
|
context "when the rake task is run" do |
||||||
|
let!(:scheme) { create(:scheme) } |
||||||
|
let!(:location) { create(:location, postcode: "A11AA", location_code: "E06000009", location_admin_district: nil, startdate: nil) } |
||||||
|
|
||||||
|
it "updates location with missing location admin district and marks it as complete" do |
||||||
|
expect(location.confirmed).to eq(false) |
||||||
|
task.invoke |
||||||
|
location.reload |
||||||
|
scheme.reload |
||||||
|
expect(location.confirmed).to eq(true) |
||||||
|
expect(location.location_admin_district).to eq("Blackpool") |
||||||
|
end |
||||||
|
|
||||||
|
it "does not mark location as complete if other fields are missing" do |
||||||
|
location.update!(units: nil) |
||||||
|
expect(location.confirmed).to eq(false) |
||||||
|
task.invoke |
||||||
|
location.reload |
||||||
|
scheme.reload |
||||||
|
expect(location.confirmed).to eq(false) |
||||||
|
expect(location.location_admin_district).to eq("Blackpool") |
||||||
|
end |
||||||
|
|
||||||
|
it "does not override existing location admin district" do |
||||||
|
location.location_admin_district = "Babergh" |
||||||
|
location.save!(validate: false) |
||||||
|
task.invoke |
||||||
|
expect(location.reload.location_admin_district).to eq("Babergh") |
||||||
|
end |
||||||
|
|
||||||
|
it "does not set location admin district if it cannot be found" do |
||||||
|
location.location_code = "123" |
||||||
|
location.save!(validate: false) |
||||||
|
task.invoke |
||||||
|
expect(location.reload.location_admin_district).to eq(nil) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue