diff --git a/lib/tasks/set_export_collection_years.rake b/lib/tasks/set_export_collection_years.rake new file mode 100644 index 000000000..badaab0eb --- /dev/null +++ b/lib/tasks/set_export_collection_years.rake @@ -0,0 +1,8 @@ +desc "Set export collection years for lettings exports" +task set_export_collection_years: :environment do + Export.where(collection: %w[2022 2023 2024 2025]).find_each do |export| + export.year = export.collection.to_i + export.collection = "lettings" + export.save! + end +end diff --git a/spec/lib/tasks/set_export_collection_years_spec.rb b/spec/lib/tasks/set_export_collection_years_spec.rb new file mode 100644 index 000000000..76ff779b0 --- /dev/null +++ b/spec/lib/tasks/set_export_collection_years_spec.rb @@ -0,0 +1,41 @@ +require "rails_helper" +require "rake" + +RSpec.describe "set_export_collection_years" do + describe ":set_export_collection_years", type: :task do + subject(:task) { Rake::Task["set_export_collection_years"] } + + before do + Rake.application.rake_require("tasks/set_export_collection_years") + Rake::Task.define_task(:environment) + task.reenable + end + + context "when the rake task is run" do + let!(:lettings_export_2023) { Export.create(collection: "2023", year: nil, started_at: Time.zone.now) } + let!(:lettings_export_2024) { Export.create(collection: "2024", year: nil, started_at: Time.zone.now) } + let!(:updated_lettings_export) { Export.create(collection: "lettings", year: 2023, started_at: Time.zone.now) } + let!(:organisations_export) { Export.create(collection: "organisations", year: nil, started_at: Time.zone.now) } + let!(:users_export) { Export.create(collection: "users", year: nil, started_at: Time.zone.now) } + + it "correctly updates collection years" do + task.invoke + + expect(lettings_export_2023.reload.collection).to eq("lettings") + expect(lettings_export_2023.year).to eq(2023) + + expect(lettings_export_2024.reload.collection).to eq("lettings") + expect(lettings_export_2024.year).to eq(2024) + + expect(updated_lettings_export.reload.collection).to eq("lettings") + expect(updated_lettings_export.year).to eq(2023) + + expect(organisations_export.reload.collection).to eq("organisations") + expect(organisations_export.year).to eq(nil) + + expect(users_export.reload.collection).to eq("users") + expect(users_export.year).to eq(nil) + end + end + end +end