diff --git a/app/mailers/delete_domain_mailer.rb b/app/mailers/delete_domain_mailer.rb new file mode 100644 index 000000000..4a8f4f7c4 --- /dev/null +++ b/app/mailers/delete_domain_mailer.rb @@ -0,0 +1,18 @@ +class DeleteDomainMailer < ApplicationMailer + include Que::Mailer + + def pending(domain:, old_registrant:) + @domain = DomainPresenter.new(domain: domain, view: view_context) + @registrar = RegistrarPresenter.new(registrar: domain.registrar, view: view_context) + @verification_url = verification_url(domain) + + subject = default_i18n_subject(domain_name: domain.name) + mail(to: old_registrant.email, subject: subject) + end + + private + + def verification_url(domain) + registrant_domain_delete_confirm_url(domain, token: domain.registrant_verification_token) + end +end diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index b6cd9c309..915fffa57 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -1,21 +1,6 @@ class DomainMailer < ApplicationMailer include Que::Mailer - def pending_update_request_for_old_registrant(domain:, registrant:) - @domain = DomainPresenter.new(domain: domain, view: view_context) - @registrar = RegistrarPresenter.new(registrar: domain.registrar, view: view_context) - @registrant = RegistrantPresenter.new(registrant: registrant, view: view_context) - @verification_url = registrant_domain_update_confirm_url(domain, token: domain.registrant_verification_token) - - subject = default_i18n_subject(domain_name: domain.name) - mail(to: registrant.email, subject: subject) - end - - def pending_update_notification_for_new_registrant(params) - compose_from(params) - end - - def registrant_updated_notification_for_new_registrant(domain_id, old_registrant_id, new_registrant_id, should_deliver) @domain = Domain.find_by(id: domain_id) return unless @domain @@ -45,23 +30,6 @@ class DomainMailer < ApplicationMailer name: @domain.name)} [#{@domain.name}]") end - def pending_update_rejected_notification_for_new_registrant(params) - compose_from(params) - end - - def pending_update_expired_notification_for_new_registrant(params) - compose_from(params) - end - - def pending_deleted(domain:, registrant:) - @domain = DomainPresenter.new(domain: domain, view: view_context) - @registrar = RegistrarPresenter.new(registrar: domain.registrar, view: view_context) - @verification_url = registrant_domain_delete_confirm_url(domain, token: domain.registrant_verification_token) - - subject = default_i18n_subject(domain_name: domain.name) - mail(to: registrant.email, subject: subject) - end - def pending_delete_rejected_notification(domain_id, should_deliver) @domain = Domain.find_by(id: domain_id) return unless @domain diff --git a/app/mailers/registrant_change_mailer.rb b/app/mailers/registrant_change_mailer.rb new file mode 100644 index 000000000..a29f3aee1 --- /dev/null +++ b/app/mailers/registrant_change_mailer.rb @@ -0,0 +1,45 @@ +class RegistrantChangeMailer < ApplicationMailer + include Que::Mailer + + def confirmation(domain:, registrant:) + @domain = DomainPresenter.new(domain: domain, view: view_context) + @registrar = RegistrarPresenter.new(registrar: domain.registrar, view: view_context) + @registrant = RegistrantPresenter.new(registrant: registrant, view: view_context) + @verification_url = confirm_url(domain) + + subject = default_i18n_subject(domain_name: domain.name) + mail(to: registrant.email, subject: subject) + end + + def pending_update_notification_for_new_registrant(params) + compose_from(params) + end + + def registrant_updated_notification_for_old_registrant(domain_id, old_registrant_id, new_registrant_id, should_deliver) + @domain = Domain.find_by(id: domain_id) + return unless @domain + return if delivery_off?(@domain, should_deliver) + + @old_registrant = Registrant.find(old_registrant_id) + @new_registrant = Registrant.find(new_registrant_id) + + return if whitelist_blocked?(@old_registrant.email) + mail(to: format(@old_registrant.email), + subject: "#{I18n.t(:registrant_updated_notification_for_old_registrant_subject, + name: @domain.name)} [#{@domain.name}]") + end + + def pending_update_rejected_notification_for_new_registrant(params) + compose_from(params) + end + + def pending_update_expired_notification_for_new_registrant(params) + compose_from(params) + end + + private + + def confirm_url(domain) + registrant_domain_update_confirm_url(domain, token: domain.registrant_verification_token) + end +end diff --git a/app/models/domain.rb b/app/models/domain.rb index a9d5147a6..c97877047 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -379,6 +379,9 @@ class Domain < ActiveRecord::Base new_registrant_email = registrant.email new_registrant_name = registrant.name + current_registrant = Registrant.find(registrant_id_was) + RegistrantChangeMailer.confirmation(domain: self, current_registrant: current_registrant).deliver + send_mail :pending_update_request_for_old_registrant send_mail :pending_update_notification_for_new_registrant @@ -441,8 +444,8 @@ class Domain < ActiveRecord::Base pending_delete_confirmation! save(validate: false) # should check if this did succeed - previous_registrant = Registrant.find(registrant_id_was) - DomainMailer.pending_deleted(domain: self, registrant: previous_registrant).deliver + old_registrant = Registrant.find(registrant_id_was) + DeleteDomainMailer.pending(domain: self, old_registrant: old_registrant).deliver end def cancel_pending_delete diff --git a/app/models/domain_mail_model.rb b/app/models/domain_mail_model.rb index d443d8783..49effbb1f 100644 --- a/app/models/domain_mail_model.rb +++ b/app/models/domain_mail_model.rb @@ -1,6 +1,6 @@ class DomainMailModel # Capture current values used in app/views/mailers/domain_mailer/* and app/mailers/domain_mailer will send later - + def initialize(domain) @domain = domain @params = {errors: [], deliver_emails: domain.deliver_emails, id: domain.id} @@ -15,13 +15,13 @@ class DomainMailModel end def pending_update_notification_for_new_registrant - registrant # new registrant at this point + registrant # new registrant at this point subject(:pending_update_notification_for_new_registrant_subject) domain_info compose end - + def pending_update_rejected_notification_for_new_registrant registrant_pending subject(:pending_update_rejected_notification_for_new_registrant_subject) @@ -37,13 +37,6 @@ class DomainMailModel compose end - def pending_deleted - registrant - subject(:domain_pending_deleted_subject) - confirm_delete - compose - end - def pending_delete_rejected_notification registrant subject(:pending_delete_rejected_notification_subject) @@ -69,11 +62,11 @@ class DomainMailModel end private - + def registrant_old @params[:recipient] = format Registrant.find(@domain.registrant_id_was).email end - + def registrant @params[:recipient] = format @domain.registrant.email end @@ -83,7 +76,7 @@ class DomainMailModel @params[:new_registrant_name] = @domain.pending_json['new_registrant_name'] @params[:old_registrant_name] = @domain.registrant.name end - + # registrant and domain admin contacts def admins emails = ([@domain.registrant.email] + @domain.admin_contacts.map { |x| format(x.email) }) @@ -106,26 +99,22 @@ class DomainMailModel def confirm_update verification_url('domain_update_confirms') end - - def confirm_delete - verification_url('domain_delete_confirms') - end def compose @params end - + def verification_url(path) token = verification_token or return @params[:verification_url] = "#{ENV['registrant_url']}/registrant/#{path}/#{@domain.id}?token=#{token}" end - + def verification_token return warn_missing(:registrant_verification_token) if @domain.registrant_verification_token.blank? return warn_missing(:registrant_verification_asked_at) if @domain.registrant_verification_asked_at.blank? @domain.registrant_verification_token end - + def domain_info [:name, :registrar_name, :registrant_name, :registrant_ident, :registrant_email, @@ -143,7 +132,7 @@ class DomainMailModel warn_missing item nil end - + def warn_missing(item) warn_not_delivered "#{item.to_s} is missing for #{@domain.name}" end @@ -154,6 +143,6 @@ class DomainMailModel # Rails.logger.warn message nil end - + end diff --git a/app/views/mailers/domain_mailer/pending_deleted.html.erb b/app/views/mailers/delete_domain_mailer/pending.html.erb similarity index 87% rename from app/views/mailers/domain_mailer/pending_deleted.html.erb rename to app/views/mailers/delete_domain_mailer/pending.html.erb index 8a6c8e2bc..ced759234 100644 --- a/app/views/mailers/domain_mailer/pending_deleted.html.erb +++ b/app/views/mailers/delete_domain_mailer/pending.html.erb @@ -2,7 +2,7 @@ Tere

Registrisse laekus taotlus domeeni <%= @domain.name %> kustutamiseks. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduge oma registripidaja poole: -<%= render 'mailers/domain_mailer/registrar/registrar.et.html', registrar: @registrar %> +<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %>

Muudatuse kinnitamiseks külastage palun allolevat lehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan. @@ -19,7 +19,7 @@ Hi,

Application for deletion of your domain <%= @domain.name %> has been filed. Please make sure that the application is correct. Incase of problems please contact your registrar: -<%= render 'mailers/domain_mailer/registrar/registrar.en.html', registrar: @registrar %> +<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %>

To confirm the update please visit this website, once again review the data and press approve:
diff --git a/app/views/mailers/domain_mailer/pending_deleted.text.erb b/app/views/mailers/delete_domain_mailer/pending.text.erb similarity index 86% rename from app/views/mailers/domain_mailer/pending_deleted.text.erb rename to app/views/mailers/delete_domain_mailer/pending.text.erb index 39460443a..a16fd82ff 100644 --- a/app/views/mailers/domain_mailer/pending_deleted.text.erb +++ b/app/views/mailers/delete_domain_mailer/pending.text.erb @@ -2,7 +2,7 @@ Tere Registrisse laekus taotlus domeeni <%= @domain.name %> kustutamiseks. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduge oma registripidaja poole: -<%= render 'mailers/domain_mailer/registrar/registrar.et.text', registrar: @registrar %> +<%= render 'mailers/shared/registrar/registrar.et.text', registrar: @registrar %> Muudatuse kinnitamiseks külastage palun allolevat lehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan. @@ -18,7 +18,7 @@ Hi, Application for deletion of your domain <%= @domain.name %> has been filed. Please make sure that the application is correct. In case of problems please contact your registrar: -<%= render 'mailers/domain_mailer/registrar/registrar.en.text', registrar: @registrar %> +<%= render 'mailers/shared/registrar/registrar.en.text', registrar: @registrar %> To confirm the update please visit this website, once again review the data and press approve: <%= @verification_url %> diff --git a/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb b/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb similarity index 91% rename from app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb rename to app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb index 139e0a850..90d17462b 100644 --- a/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb +++ b/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb @@ -16,7 +16,7 @@ Hi,

Domain registrant change request has been expired for the domain <%= @domain.name %>.

-Please contact to your registrar if you have any questions: +Please contact to your registrar if you have any questions: <%= render 'registrar.en.html', registrar: @registrar %> diff --git a/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb b/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb rename to app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb b/app/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb rename to app/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb b/app/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb rename to app/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.html.erb b/app/views/mailers/registrant_change_mailer/pending_update_rejected_notification_for_new_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.html.erb rename to app/views/mailers/registrant_change_mailer/pending_update_rejected_notification_for_new_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.text.erb b/app/views/mailers/registrant_change_mailer/pending_update_rejected_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.text.erb rename to app/views/mailers/registrant_change_mailer/pending_update_rejected_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb b/app/views/mailers/registrant_change_mailer/pending_update_request_for_old_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb rename to app/views/mailers/registrant_change_mailer/pending_update_request_for_old_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb b/app/views/mailers/registrant_change_mailer/pending_update_request_for_old_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb rename to app/views/mailers/registrant_change_mailer/pending_update_request_for_old_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/registrant/_registrant.en.html.erb b/app/views/mailers/shared/registrant/_registrant.en.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant/_registrant.en.html.erb rename to app/views/mailers/shared/registrant/_registrant.en.html.erb diff --git a/app/views/mailers/domain_mailer/registrant/_registrant.en.text.erb b/app/views/mailers/shared/registrant/_registrant.en.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant/_registrant.en.text.erb rename to app/views/mailers/shared/registrant/_registrant.en.text.erb diff --git a/app/views/mailers/domain_mailer/registrant/_registrant.et.html.erb b/app/views/mailers/shared/registrant/_registrant.et.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant/_registrant.et.html.erb rename to app/views/mailers/shared/registrant/_registrant.et.html.erb diff --git a/app/views/mailers/domain_mailer/registrant/_registrant.et.text.erb b/app/views/mailers/shared/registrant/_registrant.et.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant/_registrant.et.text.erb rename to app/views/mailers/shared/registrant/_registrant.et.text.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.en.html.erb b/app/views/mailers/shared/registrar/_registrar.en.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.en.html.erb rename to app/views/mailers/shared/registrar/_registrar.en.html.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.en.text.erb b/app/views/mailers/shared/registrar/_registrar.en.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.en.text.erb rename to app/views/mailers/shared/registrar/_registrar.en.text.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.et.html.erb b/app/views/mailers/shared/registrar/_registrar.et.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.et.html.erb rename to app/views/mailers/shared/registrar/_registrar.et.html.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.et.text.erb b/app/views/mailers/shared/registrar/_registrar.et.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.et.text.erb rename to app/views/mailers/shared/registrar/_registrar.et.text.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.ru.html.erb b/app/views/mailers/shared/registrar/_registrar.ru.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.ru.html.erb rename to app/views/mailers/shared/registrar/_registrar.ru.html.erb diff --git a/app/views/mailers/domain_mailer/registrar/_registrar.ru.text.erb b/app/views/mailers/shared/registrar/_registrar.ru.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrar/_registrar.ru.text.erb rename to app/views/mailers/shared/registrar/_registrar.ru.text.erb diff --git a/config/locales/mailers/delete_domain.en.yml b/config/locales/mailers/delete_domain.en.yml new file mode 100644 index 000000000..07b3a8f89 --- /dev/null +++ b/config/locales/mailers/delete_domain.en.yml @@ -0,0 +1,6 @@ +en: + domain_mailer: + expiration: + subject: The %{domain_name} domain has expired + force_delete: + subject: Kustutusmenetluse teade diff --git a/config/locales/mailers/domain.en.yml b/config/locales/mailers/domain.en.yml index f0d021f68..43cfff784 100644 --- a/config/locales/mailers/domain.en.yml +++ b/config/locales/mailers/domain.en.yml @@ -1,10 +1,4 @@ en: - domain_mailer: - pending_update_request_for_old_registrant: - subject: Kinnitustaotlus domeeni %{domain_name} registreerija vahetuseks / Application for approval for registrant change of %{domain_name} - expiration: - subject: The %{domain_name} domain has expired - force_delete: - subject: Kustutusmenetluse teade - pending_deleted: + delete_domain_mailer: + pending: subject: Kinnitustaotlus domeeni %{domain_name} kustutamiseks .ee registrist / Application for approval for deletion of %{domain_name} diff --git a/config/locales/mailers/registrant_change.en.yml b/config/locales/mailers/registrant_change.en.yml new file mode 100644 index 000000000..e7a5437b0 --- /dev/null +++ b/config/locales/mailers/registrant_change.en.yml @@ -0,0 +1,4 @@ +en: + registrant_change_mailer: + confirmation: + subject: Kinnitustaotlus domeeni %{domain_name} registreerija vahetuseks / Application for approval for registrant change of %{domain_name} diff --git a/spec/mailers/delete_domain_mailer_spec.rb b/spec/mailers/delete_domain_mailer_spec.rb new file mode 100644 index 000000000..3b80c8765 --- /dev/null +++ b/spec/mailers/delete_domain_mailer_spec.rb @@ -0,0 +1,42 @@ +require 'rails_helper' + +RSpec.describe DeleteDomainMailer do + describe '#pending' do + let(:domain) { instance_spy(Domain, name: 'test.com') } + let(:old_registrant) { instance_spy(Registrant, email: 'registrant@test.com') } + let(:domain_presenter) { instance_spy(DomainPresenter) } + let(:registrar_presenter) { instance_spy(RegistrarPresenter) } + subject(:message) { described_class.pending(domain: domain, old_registrant: old_registrant) } + + before :example do + expect(DomainPresenter).to receive(:new).and_return(domain_presenter) + expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) + end + + it 'has sender' do + expect(message.from).to eq(['noreply@internet.ee']) + end + + it 'has old registrant email as a recipient' do + expect(message.to).to match_array(['registrant@test.com']) + end + + it 'has subject' do + subject = 'Kinnitustaotlus domeeni test.com kustutamiseks .ee registrist' \ + ' / Application for approval for deletion of test.com' + + expect(message.subject).to eq(subject) + end + + it 'has confirmation url' do + allow(domain).to receive(:id).and_return(1) + expect(domain).to receive(:registrant_verification_token).and_return('test') + url = registrant_domain_delete_confirm_url(domain, token: 'test') + expect(message.body.parts.first.decoded).to include(url) + end + + it 'sends message' do + expect { message.deliver! }.to change { ActionMailer::Base.deliveries.count }.by(1) + end + end +end diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index 2363d57ea..2ba338fc7 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -1,88 +1,6 @@ require 'rails_helper' RSpec.describe DomainMailer do - describe '#pending_update_request_for_old_registrant' do - let(:domain) { instance_spy(Domain, name: 'test.com') } - let(:registrant) { instance_spy(Registrant, email: 'registrant@test.com') } - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - let(:registrant_presenter) { instance_spy(RegistrantPresenter) } - subject(:message) { described_class.pending_update_request_for_old_registrant(domain: domain, - registrant: registrant, - ) } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - expect(RegistrantPresenter).to receive(:new).and_return(registrant_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has registrant email as a recipient' do - expect(message.to).to match_array(['registrant@test.com']) - end - - it 'has subject' do - subject = 'Kinnitustaotlus domeeni test.com registreerija vahetuseks' \ - ' / Application for approval for registrant change of test.com' - - expect(message.subject).to eq(subject) - end - - it 'has confirmation url' do - allow(domain).to receive(:id).and_return(1) - expect(domain).to receive(:registrant_verification_token).and_return('test') - url = registrant_domain_update_confirm_url(domain, token: 'test') - expect(message.body.parts.first.decoded).to include(url) - end - - it 'sends message' do - expect { message.deliver! }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - - describe '#pending_deleted' do - let(:domain) { instance_spy(Domain, name: 'test.com') } - let(:registrant) { instance_spy(Registrant, email: 'registrant@test.com') } - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - subject(:message) { described_class.pending_deleted(domain: domain, registrant: registrant) } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has registrant email as a recipient' do - expect(message.to).to match_array(['registrant@test.com']) - end - - it 'has subject' do - subject = 'Kinnitustaotlus domeeni test.com kustutamiseks .ee registrist' \ - ' / Application for approval for deletion of test.com' - - expect(message.subject).to eq(subject) - end - - it 'has confirmation url' do - allow(domain).to receive(:id).and_return(1) - expect(domain).to receive(:registrant_verification_token).and_return('test') - url = registrant_domain_delete_confirm_url(domain, token: 'test') - expect(message.body.parts.first.decoded).to include(url) - end - - it 'sends message' do - expect { message.deliver! }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - describe '#force_delete' do let(:domain) { instance_spy(Domain, name: 'test.com') } let(:domain_presenter) { instance_spy(DomainPresenter) } diff --git a/spec/mailers/registrant_change_mailer_spec.rb b/spec/mailers/registrant_change_mailer_spec.rb new file mode 100644 index 000000000..a26b507d3 --- /dev/null +++ b/spec/mailers/registrant_change_mailer_spec.rb @@ -0,0 +1,46 @@ +require 'rails_helper' + +RSpec.describe RegistrantChangeMailer do + describe '#confirmation' do + let(:domain) { instance_spy(Domain, name: 'test.com') } + let(:registrant) { instance_spy(Registrant, email: 'registrant@test.com') } + let(:domain_presenter) { instance_spy(DomainPresenter) } + let(:registrar_presenter) { instance_spy(RegistrarPresenter) } + let(:registrant_presenter) { instance_spy(RegistrantPresenter) } + subject(:message) { described_class.confirmation(domain: domain, + registrant: registrant, + ) } + + before :example do + expect(DomainPresenter).to receive(:new).and_return(domain_presenter) + expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) + expect(RegistrantPresenter).to receive(:new).and_return(registrant_presenter) + end + + it 'has sender' do + expect(message.from).to eq(['noreply@internet.ee']) + end + + it 'has registrant email as a recipient' do + expect(message.to).to match_array(['registrant@test.com']) + end + + it 'has subject' do + subject = 'Kinnitustaotlus domeeni test.com registreerija vahetuseks' \ + ' / Application for approval for registrant change of test.com' + + expect(message.subject).to eq(subject) + end + + it 'has confirmation url' do + allow(domain).to receive(:id).and_return(1) + expect(domain).to receive(:registrant_verification_token).and_return('test') + url = registrant_domain_update_confirm_url(domain, token: 'test') + expect(message.body.parts.first.decoded).to include(url) + end + + it 'sends message' do + expect { message.deliver! }.to change { ActionMailer::Base.deliveries.count }.by(1) + end + end +end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 22b3dd5a2..1a3e47bc6 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -822,17 +822,19 @@ RSpec.describe Domain, db: false do describe '#pending_delete!' do let(:domain) { described_class.new } - let(:previous_registrant) { instance_double(Registrant) } + let(:old_registrant) { instance_double(Registrant) } let(:message) { instance_double(Mail::Message) } before :example do - expect(Registrant).to receive(:find).and_return(previous_registrant) + expect(Registrant).to receive(:find).and_return(old_registrant) allow(domain).to receive(:registrant_verification_asked?).and_return(true) allow(domain).to receive(:save) end it 'sends notification email' do - expect(DomainMailer).to receive(:pending_deleted).with(domain: domain, registrant: previous_registrant).and_return(message) + expect(DeleteDomainMailer).to receive(:pending) + .with(domain: domain, old_registrant: old_registrant) + .and_return(message) expect(message).to receive(:deliver) domain.pending_delete! end diff --git a/spec/views/mailers/delete_domain_mailer/pending.html.erb_spec.rb b/spec/views/mailers/delete_domain_mailer/pending.html.erb_spec.rb new file mode 100644 index 000000000..e36208916 --- /dev/null +++ b/spec/views/mailers/delete_domain_mailer/pending.html.erb_spec.rb @@ -0,0 +1,11 @@ +require 'rails_helper' +require_relative 'pending_shared' + +RSpec.describe 'mailers/delete_domain_mailer/pending.html.erb' do + before :example do + stub_template 'mailers/shared/registrar/_registrar.et.html' => 'test registrar estonian' + stub_template 'mailers/shared/registrar/_registrar.en.html' => 'test registrar english' + end + + include_examples 'delete domain mailer pending' +end diff --git a/spec/views/mailers/delete_domain_mailer/pending.text.erb_spec.rb b/spec/views/mailers/delete_domain_mailer/pending.text.erb_spec.rb new file mode 100644 index 000000000..87aea70ab --- /dev/null +++ b/spec/views/mailers/delete_domain_mailer/pending.text.erb_spec.rb @@ -0,0 +1,11 @@ +require 'rails_helper' +require_relative 'pending_shared' + +RSpec.describe 'mailers/delete_domain_mailer/pending.text.erb' do + before :example do + stub_template 'mailers/shared/registrar/_registrar.et.text' => 'test registrar estonian' + stub_template 'mailers/shared/registrar/_registrar.en.text' => 'test registrar english' + end + + include_examples 'delete domain mailer pending' +end diff --git a/spec/views/mailers/domain_mailer/pending_deleted_shared.rb b/spec/views/mailers/delete_domain_mailer/pending_shared.rb similarity index 94% rename from spec/views/mailers/domain_mailer/pending_deleted_shared.rb rename to spec/views/mailers/delete_domain_mailer/pending_shared.rb index 950ec0309..2b38eca85 100644 --- a/spec/views/mailers/domain_mailer/pending_deleted_shared.rb +++ b/spec/views/mailers/delete_domain_mailer/pending_shared.rb @@ -1,6 +1,6 @@ require 'rails_helper' -RSpec.shared_examples 'domain mailer pending deleted' do +RSpec.shared_examples 'delete domain mailer pending' do let(:domain) { instance_spy(DomainPresenter) } let(:lang_count) { 2 } diff --git a/spec/views/mailers/domain_mailer/pending_deleted.html.erb_spec.rb b/spec/views/mailers/domain_mailer/pending_deleted.html.erb_spec.rb deleted file mode 100644 index cb3e96ec9..000000000 --- a/spec/views/mailers/domain_mailer/pending_deleted.html.erb_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'rails_helper' -require_relative 'pending_deleted_shared' - -RSpec.describe 'mailers/domain_mailer/pending_deleted.html.erb' do - before :example do - stub_template 'mailers/domain_mailer/registrar/_registrar.et.html' => 'test registrar estonian' - stub_template 'mailers/domain_mailer/registrar/_registrar.en.html' => 'test registrar english' - end - - include_examples 'domain mailer pending deleted' -end diff --git a/spec/views/mailers/domain_mailer/pending_deleted.text.erb_spec.rb b/spec/views/mailers/domain_mailer/pending_deleted.text.erb_spec.rb deleted file mode 100644 index 2326cc9e1..000000000 --- a/spec/views/mailers/domain_mailer/pending_deleted.text.erb_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'rails_helper' -require_relative 'pending_deleted_shared' - -RSpec.describe 'mailers/domain_mailer/pending_deleted.text.erb' do - before :example do - stub_template 'mailers/domain_mailer/registrar/_registrar.et.text' => 'test registrar estonian' - stub_template 'mailers/domain_mailer/registrar/_registrar.en.text' => 'test registrar english' - end - - include_examples 'domain mailer pending deleted' -end diff --git a/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb_spec.rb b/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb_spec.rb deleted file mode 100644 index b987759b5..000000000 --- a/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb_spec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rails_helper' -require_relative 'pending_update_request_for_old_registrant_shared' - -RSpec.describe 'mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb' do - before :example do - stub_template 'mailers/domain_mailer/registrar/_registrar.et.html' => 'test registrar estonian' - stub_template 'mailers/domain_mailer/registrar/_registrar.en.html' => 'test registrar english' - stub_template 'mailers/domain_mailer/registrant/_registrant.et.html' => 'test new registrant estonian' - stub_template 'mailers/domain_mailer/registrant/_registrant.en.html' => 'test new registrant english' - end - - include_examples 'domain mailer pending update request for old registrant' -end diff --git a/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb_spec.rb b/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb_spec.rb deleted file mode 100644 index 4ca88bce1..000000000 --- a/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb_spec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rails_helper' -require_relative 'pending_update_request_for_old_registrant_shared' - -RSpec.describe 'mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb' do - before :example do - stub_template 'mailers/domain_mailer/registrar/_registrar.et.text' => 'test registrar estonian' - stub_template 'mailers/domain_mailer/registrar/_registrar.en.text' => 'test registrar english' - stub_template 'mailers/domain_mailer/registrant/_registrant.et.text' => 'test new registrant estonian' - stub_template 'mailers/domain_mailer/registrant/_registrant.en.text' => 'test new registrant english' - end - - include_examples 'domain mailer pending update request for old registrant' -end diff --git a/spec/views/mailers/registrant_change_mailer/confirmation.html.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/confirmation.html.erb_spec.rb new file mode 100644 index 000000000..c59dd4e55 --- /dev/null +++ b/spec/views/mailers/registrant_change_mailer/confirmation.html.erb_spec.rb @@ -0,0 +1,13 @@ +require 'rails_helper' +require_relative 'confirmation_shared' + +RSpec.describe 'mailers/registrant_change_mailer/confirmation.html.erb' do + before :example do + stub_template 'mailers/shared/registrar/_registrar.et.html' => 'test registrar estonian' + stub_template 'mailers/shared/registrar/_registrar.en.html' => 'test registrar english' + stub_template 'mailers/shared/registrant/_registrant.et.html' => 'test new registrant estonian' + stub_template 'mailers/shared/registrant/_registrant.en.html' => 'test new registrant english' + end + + include_examples 'domain mailer pending update request for old registrant' +end diff --git a/spec/views/mailers/registrant_change_mailer/confirmation.text.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/confirmation.text.erb_spec.rb new file mode 100644 index 000000000..37edf78e9 --- /dev/null +++ b/spec/views/mailers/registrant_change_mailer/confirmation.text.erb_spec.rb @@ -0,0 +1,13 @@ +require 'rails_helper' +require_relative 'confirmation_shared' + +RSpec.describe 'mailers/registrant_change_mailer/confirmation.text.erb' do + before :example do + stub_template 'mailers/shared/registrar/_registrar.et.text' => 'test registrar estonian' + stub_template 'mailers/shared/registrar/_registrar.en.text' => 'test registrar english' + stub_template 'mailers/shared/registrant/_registrant.et.text' => 'test new registrant estonian' + stub_template 'mailers/shared/registrant/_registrant.en.text' => 'test new registrant english' + end + + include_examples 'domain mailer pending update request for old registrant' +end diff --git a/spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant_shared.rb b/spec/views/mailers/registrant_change_mailer/confirmation_shared.rb similarity index 100% rename from spec/views/mailers/domain_mailer/pending_update_request_for_old_registrant_shared.rb rename to spec/views/mailers/registrant_change_mailer/confirmation_shared.rb diff --git a/spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb_spec.rb rename to spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb_spec.rb rename to spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant_shared.rb b/spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant_shared.rb similarity index 100% rename from spec/views/mailers/domain_mailer/pending_update_notification_for_new_registrant_shared.rb rename to spec/views/mailers/registrant_change_mailer/pending_update_notification_for_new_registrant_shared.rb diff --git a/spec/views/mailers/domain_mailer/registrant/_registrant.en.html.erb_spec.rb b/spec/views/mailers/shared/registrant/_registrant.en.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrant/_registrant.en.html.erb_spec.rb rename to spec/views/mailers/shared/registrant/_registrant.en.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrant/_registrant.en.text.erb_spec.rb b/spec/views/mailers/shared/registrant/_registrant.en.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrant/_registrant.en.text.erb_spec.rb rename to spec/views/mailers/shared/registrant/_registrant.en.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrant/_registrant.et.html.erb_spec.rb b/spec/views/mailers/shared/registrant/_registrant.et.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrant/_registrant.et.html.erb_spec.rb rename to spec/views/mailers/shared/registrant/_registrant.et.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrant/_registrant.et.text.erb_spec.rb b/spec/views/mailers/shared/registrant/_registrant.et.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrant/_registrant.et.text.erb_spec.rb rename to spec/views/mailers/shared/registrant/_registrant.et.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrant/registrant_shared.rb b/spec/views/mailers/shared/registrant/registrant_shared.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrant/registrant_shared.rb rename to spec/views/mailers/shared/registrant/registrant_shared.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.en.html.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.en.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.en.html.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.en.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.en.text.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.en.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.en.text.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.en.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.et.html.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.et.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.et.html.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.et.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.et.text.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.et.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.et.text.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.et.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.ru.html.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.ru.html.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.ru.html.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.ru.html.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/_registrar.ru.text.erb_spec.rb b/spec/views/mailers/shared/registrar/_registrar.ru.text.erb_spec.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/_registrar.ru.text.erb_spec.rb rename to spec/views/mailers/shared/registrar/_registrar.ru.text.erb_spec.rb diff --git a/spec/views/mailers/domain_mailer/registrar/registrar_shared.rb b/spec/views/mailers/shared/registrar/registrar_shared.rb similarity index 100% rename from spec/views/mailers/domain_mailer/registrar/registrar_shared.rb rename to spec/views/mailers/shared/registrar/registrar_shared.rb