Skip to content

Commit

Permalink
Merge pull request #1258 from DFE-Digital/feature/150847-send-notific…
Browse files Browse the repository at this point in the history
…ation-on-transfer-create

(150847) Send a notification when a Transfer is created and handed over to RCS
  • Loading branch information
Laura Porter authored Jan 3, 2024
2 parents 6fae523 + ff5c935 commit 85db22e
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 6 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion app/forms/conversion/create_project_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 7 additions & 0 deletions app/forms/transfer/create_project_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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?
Expand Down
13 changes: 12 additions & 1 deletion app/mailers/team_leader_mailer.rb
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -9,4 +9,15 @@ def new_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
4 changes: 2 additions & 2 deletions spec/forms/conversion/create_project_form_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 38 additions & 0 deletions spec/forms/transfer/create_project_form_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
23 changes: 21 additions & 2 deletions spec/mailers/team_leader_mailer_spec.rb
Original file line number Diff line number Diff line change
@@ -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) }

Expand All @@ -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

0 comments on commit 85db22e

Please sign in to comment.