From c623c836b387d15cb39222860d947252806923c3 Mon Sep 17 00:00:00 2001 From: Laura Porter Date: Fri, 15 Dec 2023 11:54:38 +0000 Subject: [PATCH 1/3] (Refactor) Rename notification method for new projects being created `TeamLeaderMailer.new_project_created` is notifying Team leaders only when a new Conversion project is created, so rename it to make this more clear. --- app/forms/conversion/create_project_form.rb | 2 +- app/mailers/team_leader_mailer.rb | 2 +- spec/forms/conversion/create_project_form_spec.rb | 4 ++-- spec/mailers/team_leader_mailer_spec.rb | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/forms/conversion/create_project_form.rb b/app/forms/conversion/create_project_form.rb index 11ff07dec..f999c7680 100644 --- a/app/forms/conversion/create_project_form.rb +++ b/app/forms/conversion/create_project_form.rb @@ -32,7 +32,7 @@ def region private def notify_team_leaders(project) User.team_leaders.each do |team_leader| - TeamLeaderMailer.new_project_created(team_leader, project).deliver_later if team_leader.active + TeamLeaderMailer.new_conversion_project_created(team_leader, project).deliver_later if team_leader.active end end diff --git a/app/mailers/team_leader_mailer.rb b/app/mailers/team_leader_mailer.rb index b6ed1d9c4..9289f59e6 100644 --- a/app/mailers/team_leader_mailer.rb +++ b/app/mailers/team_leader_mailer.rb @@ -1,5 +1,5 @@ class TeamLeaderMailer < ApplicationMailer - def new_project_created(team_leader, project) + def new_conversion_project_created(team_leader, project) template_mail( "ea4f72e4-f5bb-4b1a-b5f9-a94cc1840353", to: team_leader.email, diff --git a/spec/forms/conversion/create_project_form_spec.rb b/spec/forms/conversion/create_project_form_spec.rb index 6630cdd73..d7b03c811 100644 --- a/spec/forms/conversion/create_project_form_spec.rb +++ b/spec/forms/conversion/create_project_form_spec.rb @@ -22,10 +22,10 @@ expect(ActionMailer::MailDeliveryJob) .to(have_been_enqueued.on_queue("default") - .with("TeamLeaderMailer", "new_project_created", "deliver_now", args: [team_leader, project])) + .with("TeamLeaderMailer", "new_conversion_project_created", "deliver_now", args: [team_leader, project])) expect(ActionMailer::MailDeliveryJob) .to(have_been_enqueued.on_queue("default") - .with("TeamLeaderMailer", "new_project_created", "deliver_now", args: [another_team_leader, project])) + .with("TeamLeaderMailer", "new_conversion_project_created", "deliver_now", args: [another_team_leader, project])) end context "if a team leader is deactivated" do diff --git a/spec/mailers/team_leader_mailer_spec.rb b/spec/mailers/team_leader_mailer_spec.rb index c05235666..6264851e9 100644 --- a/spec/mailers/team_leader_mailer_spec.rb +++ b/spec/mailers/team_leader_mailer_spec.rb @@ -1,13 +1,13 @@ require "rails_helper" RSpec.describe TeamLeaderMailer do - describe "#new_project_created" do + describe "#new_conversion_project_created" do let(:team_leader) { create(:user, :team_leader) } let(:project) { create(:conversion_project) } let(:template_id) { "ea4f72e4-f5bb-4b1a-b5f9-a94cc1840353" } let(:expected_personalisation) { {first_name: team_leader.first_name, project_url: project_url(project.id)} } - subject(:send_mail) { described_class.new_project_created(team_leader, project).deliver_now } + subject(:send_mail) { described_class.new_conversion_project_created(team_leader, project).deliver_now } before { mock_successful_api_responses(urn: 123456, ukprn: 10061021) } From 583a5e139c24ffdfd54889a031d933a8b35db30f Mon Sep 17 00:00:00 2001 From: Laura Porter Date: Fri, 15 Dec 2023 12:05:22 +0000 Subject: [PATCH 2/3] Add a mailer to send a message when a new transfer project is created This uses Govuk Notify template b0df8e28-ea23-46c5-9a83-82abc6b29193 --- app/mailers/team_leader_mailer.rb | 11 +++++++++++ spec/mailers/team_leader_mailer_spec.rb | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/app/mailers/team_leader_mailer.rb b/app/mailers/team_leader_mailer.rb index 9289f59e6..594c27dec 100644 --- a/app/mailers/team_leader_mailer.rb +++ b/app/mailers/team_leader_mailer.rb @@ -9,4 +9,15 @@ def new_conversion_project_created(team_leader, project) } ) end + + def new_transfer_project_created(team_leader, project) + template_mail( + "b0df8e28-ea23-46c5-9a83-82abc6b29193", + to: team_leader.email, + personalisation: { + first_name: team_leader.first_name, + project_url: url_to_project(project) + } + ) + end end diff --git a/spec/mailers/team_leader_mailer_spec.rb b/spec/mailers/team_leader_mailer_spec.rb index 6264851e9..40510451b 100644 --- a/spec/mailers/team_leader_mailer_spec.rb +++ b/spec/mailers/team_leader_mailer_spec.rb @@ -19,4 +19,23 @@ send_mail end end + + describe "#new_transfer_project_created" do + let(:team_leader) { create(:user, :team_leader) } + let(:project) { create(:transfer_project) } + let(:template_id) { "b0df8e28-ea23-46c5-9a83-82abc6b29193" } + let(:expected_personalisation) { {first_name: team_leader.first_name, project_url: project_url(project.id)} } + + subject(:send_mail) { described_class.new_transfer_project_created(team_leader, project).deliver_now } + + before { mock_successful_api_responses(urn: any_args, ukprn: any_args) } + + it "sends an email with the correct personalisation" do + expect_any_instance_of(Mail::Notify::Mailer) + .to receive(:template_mail) + .with(template_id, {to: team_leader.email, personalisation: expected_personalisation}) + + send_mail + end + end end From ff5c9351aef7206a4a08c15380d77ca6a3c50950 Mon Sep 17 00:00:00 2001 From: Laura Porter Date: Fri, 15 Dec 2023 12:28:20 +0000 Subject: [PATCH 3/3] Send a notification email when a new Transfer project is being handed to RCS When a Conversion project is created and is being handed over to Regional casework services, we send a notification to Team leaders. Duplicate this functionality for Transfers, so that when a Transfer project is being handed to RCS, the team leaders receive a similar email (with a different template). --- CHANGELOG.md | 5 +++ app/forms/transfer/create_project_form.rb | 7 ++++ .../transfer/create_project_form_spec.rb | 38 +++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1260b94dc..d9271ab8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased][unreleased] +### Fixed + +- An email is now sent to team leaders when a transfer project is created and + handed over to Regional casework services + ## [Release-49][release-49] ### Changed diff --git a/app/forms/transfer/create_project_form.rb b/app/forms/transfer/create_project_form.rb index d5abe24f2..6f8e6e4ef 100644 --- a/app/forms/transfer/create_project_form.rb +++ b/app/forms/transfer/create_project_form.rb @@ -58,6 +58,7 @@ def save financial_safeguarding_governance_issues: financial_safeguarding_governance_issues, outgoing_trust_to_close: outgoing_trust_to_close ) + notify_team_leaders(@project) if assigned_to_regional_caseworker_team end @project @@ -75,6 +76,12 @@ def check_incoming_trust_and_outgoing_trust errors.add(:incoming_trust_ukprn, I18n.t("errors.attributes.incoming_trust_ukprn.ukprns_must_not_match")) if incoming_trust_ukprn == outgoing_trust_ukprn end + private def notify_team_leaders(project) + User.team_leaders.each do |team_leader| + TeamLeaderMailer.new_transfer_project_created(team_leader, project).deliver_later if team_leader.active + end + end + private def outgoing_trust_exists result = Api::AcademiesApi::Client.new.get_trust(outgoing_trust_ukprn) raise result.error if result.error.present? diff --git a/spec/forms/transfer/create_project_form_spec.rb b/spec/forms/transfer/create_project_form_spec.rb index bb2e8f8f3..a8a473cdc 100644 --- a/spec/forms/transfer/create_project_form_spec.rb +++ b/spec/forms/transfer/create_project_form_spec.rb @@ -299,6 +299,44 @@ expect(Transfer::TasksData.first.financial_safeguarding_governance_issues).to be true expect(Transfer::TasksData.first.outgoing_trust_to_close).to be true end + + context "when the project is being assigned to the Regional Caseworker Team" do + it "sends a notification to team leaders" do + team_leader = create(:user, :team_leader) + another_team_leader = create(:user, :team_leader) + + project = build(:create_transfer_project_form, assigned_to_regional_caseworker_team: true).save + + expect(ActionMailer::MailDeliveryJob) + .to(have_been_enqueued.on_queue("default") + .with("TeamLeaderMailer", "new_transfer_project_created", "deliver_now", args: [team_leader, project])) + expect(ActionMailer::MailDeliveryJob) + .to(have_been_enqueued.on_queue("default") + .with("TeamLeaderMailer", "new_transfer_project_created", "deliver_now", args: [another_team_leader, project])) + end + + context "if a team leader is deactivated" do + it "does not send a notification to that team leader" do + team_leader = create(:user, :team_leader, deactivated_at: Date.yesterday) + + project = build(:create_transfer_project_form, assigned_to_regional_caseworker_team: true).save + expect(ActionMailer::MailDeliveryJob) + .to_not(have_been_enqueued.on_queue("default") + .with("TeamLeaderMailer", "new_transfer_project_created", "deliver_now", args: [team_leader, project])) + end + end + end + + context "when the project is NOT being assigned to the Regional Caseworker Team" do + it "does not send a notification to team leaders" do + _team_leader = create(:user, :team_leader) + _another_team_leader = create(:user, :team_leader) + + _project = build(:create_transfer_project_form, assigned_to_regional_caseworker_team: false).save + + expect(ActionMailer::MailDeliveryJob).to_not(have_been_enqueued) + end + end end context "when the form is invalid" do