diff --git a/app/mailers/merge_completion_mailer.rb b/app/mailers/merge_completion_mailer.rb index a5de27d72..29cacad5f 100644 --- a/app/mailers/merge_completion_mailer.rb +++ b/app/mailers/merge_completion_mailer.rb @@ -1,6 +1,6 @@ class MergeCompletionMailer < NotifyMailer MERGE_COMPLETION_MERGING_ORGANISATION_TEMPLATE_ID = "b3b62e72-5ced-4515-8720-08bdc7bac792".freeze - MERGE_COMPLETION_ABSORBING_ORGANISATION_TEMPLATE_ID = "xxx".freeze + MERGE_COMPLETION_ABSORBING_ORGANISATION_TEMPLATE_ID = "7cdfefac-84c3-4054-8bd9-63103b3847b6".freeze def send_merged_organisation_success_mail(email, merged_organisation_name, absorbing_organisation_name, merge_date) send_email( @@ -15,15 +15,20 @@ class MergeCompletionMailer < NotifyMailer ) end - def send_absorbing_organisation_success_mail(email, merged_organisation_name, absorbing_organisation_name, merge_date) + def send_absorbing_organisation_success_mail(email, merged_organisations, absorbing_organisation_name, merge_date) + organisation_count = merged_organisations.count.to_s + " organisation".pluralize(merged_organisations.count) + pluralised_organisation = merged_organisations.count > 1 ? "these organisations" : "this organisation" + merged_organisation_list = (merged_organisations.count > 1 ? "The organisations are " : "The organisation is ") + merged_organisations.to_sentence(last_word_connector: " and ") + send_email( email, MERGE_COMPLETION_ABSORBING_ORGANISATION_TEMPLATE_ID, { - merged_organisation_name:, + organisation_count:, + merged_organisations: merged_organisation_list, absorbing_organisation_name:, merge_date: merge_date.to_formatted_s(:govuk_date), - email:, + pluralised_organisation:, }, ) end diff --git a/app/services/merge/merge_organisations_service.rb b/app/services/merge/merge_organisations_service.rb index 7bca9f6f0..1ab115914 100644 --- a/app/services/merge/merge_organisations_service.rb +++ b/app/services/merge/merge_organisations_service.rb @@ -158,7 +158,7 @@ private if merged_user.present? MergeCompletionMailer.send_merged_organisation_success_mail(merged_user[:email], merged_organisation, @absorbing_organisation.name, @merge_date).deliver_later else - MergeCompletionMailer.send_absorbing_organisation_success_mail(user.email, @merging_organisations.map(&:name).join(", "), @absorbing_organisation.name, @merge_date).deliver_later + MergeCompletionMailer.send_absorbing_organisation_success_mail(user.email, @merging_organisations.map(&:name), @absorbing_organisation.name, @merge_date).deliver_later end end end diff --git a/spec/mailers/merge_completion_mailer_spec.rb b/spec/mailers/merge_completion_mailer_spec.rb index fb3f81ebb..6dcec5f89 100644 --- a/spec/mailers/merge_completion_mailer_spec.rb +++ b/spec/mailers/merge_completion_mailer_spec.rb @@ -29,18 +29,34 @@ RSpec.describe MergeCompletionMailer do describe "#send_absorbing_organisation_success_mail" do let(:merge_date) { Time.zone.local(2023, 1, 1) } - it "sends a merge completion E-mail via notify" do + it "sends a merge completion E-mail via notify for a single merge" do expect(notify_client).to receive(:send_email).with(hash_including({ template_id: MergeCompletionMailer::MERGE_COMPLETION_ABSORBING_ORGANISATION_TEMPLATE_ID, personalisation: hash_including({ - merged_organisation_name: "merged organisation", + organisation_count: "1 organisation", + merged_organisations: "The organisation is merged organisation", absorbing_organisation_name: "absorbing organisation", merge_date: "1 January 2023", - email: "user@example.com", + pluralised_organisation: "this organisation", + }), + })) + + described_class.new.send_absorbing_organisation_success_mail("user@example.com", ["merged organisation"], "absorbing organisation", merge_date) + end + + it "sends a merge completion E-mail via notify for a multiple org merge" do + expect(notify_client).to receive(:send_email).with(hash_including({ + template_id: MergeCompletionMailer::MERGE_COMPLETION_ABSORBING_ORGANISATION_TEMPLATE_ID, + personalisation: hash_including({ + organisation_count: "2 organisations", + merged_organisations: "The organisations are merged organisation and other organisation", + absorbing_organisation_name: "absorbing organisation", + merge_date: "1 January 2023", + pluralised_organisation: "these organisations", }), })) - described_class.new.send_absorbing_organisation_success_mail("user@example.com", "merged organisation", "absorbing organisation", merge_date) + described_class.new.send_absorbing_organisation_success_mail("user@example.com", ["merged organisation", "other organisation"], "absorbing organisation", merge_date) end end end diff --git a/spec/services/merge/merge_organisations_service_spec.rb b/spec/services/merge/merge_organisations_service_spec.rb index aa813b5dc..80ded190b 100644 --- a/spec/services/merge/merge_organisations_service_spec.rb +++ b/spec/services/merge/merge_organisations_service_spec.rb @@ -849,11 +849,11 @@ RSpec.describe Merge::MergeOrganisationsService do end it "sends a merge completion E-mail to the original absorbing organisation users" do - expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation.data_protection_officers.first.email, "fake org", "absorbing org", Time.zone.today).once - expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation_user.email, "fake org", "absorbing org", Time.zone.today).once + expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation.data_protection_officers.first.email, ["fake org"], "absorbing org", Time.zone.today).once + expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation_user.email, ["fake org"], "absorbing org", Time.zone.today).once - expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation_user.email, "fake org", "absorbing org", Time.zone.today) - expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation.data_protection_officers.first.email, "fake org", "absorbing org", Time.zone.today) + expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation_user.email, ["fake org"], "absorbing org", Time.zone.today) + expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation.data_protection_officers.first.email, ["fake org"], "absorbing org", Time.zone.today) merge_organisations_service.call end @@ -976,14 +976,14 @@ RSpec.describe Merge::MergeOrganisationsService do end it "sends a merge completion E-mail to the original absorbing organisation users" do - expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation.data_protection_officers.first.email, "fake org, second org", "absorbing org", Time.zone.today).once - expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation_user.email, "fake org, second org", "absorbing org", Time.zone.today).once + expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation.data_protection_officers.first.email, ["fake org", "second org"], "absorbing org", Time.zone.today).once + expect(MergeCompletionMailer).to receive(:send_absorbing_organisation_success_mail).with(absorbing_organisation_user.email, ["fake org", "second org"], "absorbing org", Time.zone.today).once - expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation_user.email, "fake org, second org", "absorbing org", Time.zone.today) - expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation.data_protection_officers.first.email, "fake org, second org", "absorbing org", Time.zone.today) + expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation_user.email, ["fake org", "second org"], "absorbing org", Time.zone.today) + expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(merging_organisation.data_protection_officers.first.email, ["fake org", "second org"], "absorbing org", Time.zone.today) merging_organisation_too.users.each do |user| - expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(user.email, "second org", "absorbing org", Time.zone.today) + expect(MergeCompletionMailer).not_to receive(:send_absorbing_organisation_success_mail).with(user.email, ["fake org", "second org"], "absorbing org", Time.zone.today) end merge_organisations_service.call