From 796214528ec1fe29ab98ba949b49b281f2f008e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 8 Oct 2022 21:24:15 +0200 Subject: [PATCH] Send emails to current budget authors in rake tasks We were using `Budget.last`, but the last budget might not be published yet. I must admit I don't know whether these tasks are useful, but I'm not removing them because I'm not sure that won't harm any CONSUL installations. --- lib/tasks/budgets.rake | 4 ++-- spec/lib/tasks/budgets_spec.rb | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 spec/lib/tasks/budgets_spec.rb diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake index 172944420..008b29bef 100644 --- a/lib/tasks/budgets.rake +++ b/lib/tasks/budgets.rake @@ -2,12 +2,12 @@ namespace :budgets do namespace :email do desc "Sends emails to authors of selected investments" task selected: :environment do - Budget.last.email_selected + Budget.current.email_selected end desc "Sends emails to authors of unselected investments" task unselected: :environment do - Budget.last.email_unselected + Budget.current.email_unselected end end end diff --git a/spec/lib/tasks/budgets_spec.rb b/spec/lib/tasks/budgets_spec.rb new file mode 100644 index 000000000..c58c24ff9 --- /dev/null +++ b/spec/lib/tasks/budgets_spec.rb @@ -0,0 +1,31 @@ +require "rails_helper" + +describe "budget tasks" do + describe "rake budgets:email:selected" do + before { Rake::Task["budgets:email:selected"].reenable } + + it "sends emails to users from the current budget and not the last budget created" do + create(:budget_investment, :selected, author: create(:user, email: "selectme@consul.dev")) + create(:budget, :drafting) + + Rake.application.invoke_task("budgets:email:selected") + + expect(ActionMailer::Base.deliveries.count).to eq 1 + expect(ActionMailer::Base.deliveries.last.to).to eq ["selectme@consul.dev"] + end + end + + describe "rake budgets:email:unselected" do + before { Rake::Task["budgets:email:unselected"].reenable } + + it "sends emails to users from the current budget and not the last budget created" do + create(:budget_investment, author: create(:user, email: "ignorme@consul.dev")) + create(:budget, :drafting) + + Rake.application.invoke_task("budgets:email:unselected") + + expect(ActionMailer::Base.deliveries.count).to eq 1 + expect(ActionMailer::Base.deliveries.last.to).to eq ["ignorme@consul.dev"] + end + end +end