From f8e0798329ccd5009b2d06d51d0f40dda26389f0 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 22 Nov 2023 11:10:09 +0000 Subject: [PATCH] Set sales managing org id to owning org id --- .../set_sales_managing_organisation.rake | 4 ++ .../set_sales_managing_organisation_spec.rb | 48 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 lib/tasks/set_sales_managing_organisation.rake create mode 100644 spec/lib/tasks/set_sales_managing_organisation_spec.rb diff --git a/lib/tasks/set_sales_managing_organisation.rake b/lib/tasks/set_sales_managing_organisation.rake new file mode 100644 index 000000000..85e2ced22 --- /dev/null +++ b/lib/tasks/set_sales_managing_organisation.rake @@ -0,0 +1,4 @@ +desc "Set sales managing organisation id to owning organisation id" +task set_sales_managing_organisation: :environment do + SalesLog.where.not(owning_organisation_id: nil).update_all("managing_organisation_id = owning_organisation_id") +end diff --git a/spec/lib/tasks/set_sales_managing_organisation_spec.rb b/spec/lib/tasks/set_sales_managing_organisation_spec.rb new file mode 100644 index 000000000..c8e304d9f --- /dev/null +++ b/spec/lib/tasks/set_sales_managing_organisation_spec.rb @@ -0,0 +1,48 @@ +require "rails_helper" +require "rake" + +RSpec.describe "set_sales_managing_organisation" do + describe ":set_sales_managing_organisation", type: :task do + subject(:task) { Rake::Task["set_sales_managing_organisation"] } + + before do + Rake.application.rake_require("tasks/set_sales_managing_organisation") + Rake::Task.define_task(:environment) + task.reenable + end + + context "when the rake task is run" do + let!(:sales_log) { create(:sales_log, :completed, managing_organisation_id: nil) } + + it "updates sales log managing_organisation_id with owning_organisation_id" do + expect(sales_log.managing_organisation_id).to eq(nil) + expect(sales_log.status).to eq("completed") + task.invoke + sales_log.reload + expect(sales_log.managing_organisation_id).to eq(sales_log.owning_organisation_id) + expect(sales_log.status).to eq("completed") + end + + it "does not update sales log managing_organisation_id if owning_organisation_id is nil" do + sales_log.update!(owning_organisation_id: nil) + expect(sales_log.status).to eq("in_progress") + expect(sales_log.managing_organisation_id).to eq(nil) + task.invoke + sales_log.reload + expect(sales_log.managing_organisation_id).to eq(nil) + expect(sales_log.status).to eq("in_progress") + end + + it "skips validations" do + sales_log.saledate = Time.zone.local(2021, 3, 3) + sales_log.save!(validate: false) + expect(sales_log.managing_organisation_id).to eq(nil) + expect(sales_log.status).to eq("in_progress") + task.invoke + sales_log.reload + expect(sales_log.managing_organisation_id).to eq(sales_log.owning_organisation_id) + expect(sales_log.status).to eq("in_progress") + end + end + end +end