diff --git a/app/jobs/domain_expiration_email_job.rb b/app/jobs/domain_expiration_email_job.rb
index 478ecb0da..b0ecc2948 100644
--- a/app/jobs/domain_expiration_email_job.rb
+++ b/app/jobs/domain_expiration_email_job.rb
@@ -4,6 +4,7 @@ class DomainExpirationEmailJob < Que::Job
return if domain.registered?
- DomainMailer.expiration(domain: domain).deliver!
+ DomainMailer.expiration(domain: domain).deliver
+ destroy
end
end
diff --git a/app/mailers/registrant_change_mailer.rb b/app/mailers/registrant_change_mailer.rb
index c5efced86..ebc488036 100644
--- a/app/mailers/registrant_change_mailer.rb
+++ b/app/mailers/registrant_change_mailer.rb
@@ -31,8 +31,13 @@ class RegistrantChangeMailer < ApplicationMailer
mail(to: domain.new_registrant_email, subject: subject)
end
- def pending_update_expired_notification_for_new_registrant(params)
- compose_from(params)
+ def expired(domain:, registrar:, registrant:)
+ @domain = DomainPresenter.new(domain: domain, view: view_context)
+ @registrar = RegistrarPresenter.new(registrar: registrar, view: view_context)
+ @registrant = RegistrantPresenter.new(registrant: registrant, view: view_context)
+
+ subject = default_i18n_subject(domain_name: domain.name)
+ mail(to: domain.new_registrant_email, subject: subject)
end
private
diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb
index 4ab0bc273..dc4db50c0 100644
--- a/app/models/domain_cron.rb
+++ b/app/models/domain_cron.rb
@@ -16,7 +16,8 @@ class DomainCron
end
count += 1
if domain.pending_update?
- DomainMailer.pending_update_expired_notification_for_new_registrant(domain.id).deliver
+ RegistrantChangeMailer.expired(domain: domain, registrar: domain.registrar, registrant: domain.registrant)
+ .deliver
end
if domain.pending_delete? || domain.pending_delete_confirmation?
DomainMailer.pending_delete_expired_notification(domain.id, true).deliver
diff --git a/app/models/domain_mail_model.rb b/app/models/domain_mail_model.rb
index ef248774b..3f92a3138 100644
--- a/app/models/domain_mail_model.rb
+++ b/app/models/domain_mail_model.rb
@@ -6,13 +6,6 @@ class DomainMailModel
@params = {errors: [], deliver_emails: domain.deliver_emails, id: domain.id}
end
- def pending_update_expired_notification_for_new_registrant
- registrant_pending
- subject(:pending_update_expired_notification_for_new_registrant_subject)
- domain_info
- compose
- end
-
def pending_delete_rejected_notification
registrant
subject(:pending_delete_rejected_notification_subject)
diff --git a/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb b/app/views/mailers/registrant_change_mailer/expired.html.erb
similarity index 78%
rename from app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb
rename to app/views/mailers/registrant_change_mailer/expired.html.erb
index 90d17462b..0d369a970 100644
--- a/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.html.erb
+++ b/app/views/mailers/registrant_change_mailer/expired.html.erb
@@ -4,7 +4,7 @@ Domeeni <%= @domain.name %> registreerija <%= @registrant.name %> ei kinnitanud
Küsimuste korral palun võtke ühendust oma registripidajaga:
-<%= render 'registrar.et.html', registrar: @registrar %>
+<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %>
Lugupidamisega
@@ -18,7 +18,7 @@ Domain registrant change request has been expired for the domain <%= @domain.nam
Please contact to your registrar if you have any questions:
-<%= render 'registrar.en.html', registrar: @registrar %>
+<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %>
Best Regards,
diff --git a/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.text.erb b/app/views/mailers/registrant_change_mailer/expired.text.erb
similarity index 77%
rename from app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.text.erb
rename to app/views/mailers/registrant_change_mailer/expired.text.erb
index dfdcc0a5d..7ec3fecbd 100644
--- a/app/views/mailers/registrant_change_mailer/pending_update_expired_notification_for_new_registrant.text.erb
+++ b/app/views/mailers/registrant_change_mailer/expired.text.erb
@@ -4,7 +4,7 @@ Domeeni <%= @domain.name %> registreerija <%= @registrant.name %> ei kinnitanud
Küsimuste korral palun võtke ühendust oma registripidajaga:
-<%= render 'registrar.et.text', registrar: @registrar %>
+<%= render 'mailers/shared/registrar/registrar.et.text', registrar: @registrar %>
Lugupidamisega
Eesti Interneti Sihtasutus
@@ -17,7 +17,7 @@ Domain registrant change request has been expired for the domain <%= @domain.nam
Please contact to your registrar if you have any questions:
-<%= render 'registrar.en.text', registrar: @registrar %>
+<%= render 'mailers/shared/registrar/registrar.en.text', registrar: @registrar %>
Best Regards,
Estonian Internet Foundation
diff --git a/config/locales/en.yml b/config/locales/en.yml
index be9539d6a..cffcf9243 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -796,7 +796,6 @@ en:
unimplemented_object_service: 'Unimplemented object service'
contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed'
object_status_prohibits_operation: 'Object status prohibits operation'
- pending_update_expired_notification_for_new_registrant_subject: "Domeeni %{name} registreerija vahetuse taotlus on tühistatud / %{name} registrant change cancelled"
registrant_updated_notification_for_new_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.'
registrant_updated_notification_for_old_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.'
pending_delete_rejected_notification_subject: "Domeeni %{name} kustutamise taotlus tagasi lükatud / %{name} deletion declined"
diff --git a/config/locales/mailers/registrant_change.en.yml b/config/locales/mailers/registrant_change.en.yml
index 83fba025b..9cd95f648 100644
--- a/config/locales/mailers/registrant_change.en.yml
+++ b/config/locales/mailers/registrant_change.en.yml
@@ -6,3 +6,5 @@ en:
subject: Domeeni %{domain_name} registreerija vahetus protseduur on algatatud / %{domain_name} registrant change
rejected:
subject: Domeeni %{domain_name} registreerija vahetuse taotlus tagasi lükatud / %{domain_name} registrant change declined
+ expired:
+ subject: Domeeni %{domain_name} registreerija vahetuse taotlus on tühistatud / %{domain_name} registrant change cancelled
diff --git a/spec/jobs/domain_expiration_email_job_spec.rb b/spec/jobs/domain_expiration_email_job_spec.rb
index cb5e032bb..b7a02a302 100644
--- a/spec/jobs/domain_expiration_email_job_spec.rb
+++ b/spec/jobs/domain_expiration_email_job_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe DomainExpirationEmailJob do
it 'sends email notification' do
expect(DomainMailer).to receive(:expiration).with(domain: domain).and_return(message)
- expect(message).to receive(:deliver!)
+ expect(message).to receive(:deliver)
described_class.enqueue(domain_id: 1)
end
end
diff --git a/spec/mailers/registrant_change_mailer_spec.rb b/spec/mailers/registrant_change_mailer_spec.rb
index d532d1e24..5a619d0a1 100644
--- a/spec/mailers/registrant_change_mailer_spec.rb
+++ b/spec/mailers/registrant_change_mailer_spec.rb
@@ -104,8 +104,8 @@ RSpec.describe RegistrantChangeMailer do
let(:registrant_presenter) { instance_spy(RegistrantPresenter) }
subject(:message) { described_class.rejected(domain: domain,
- registrar: registrar,
- registrant: registrant)
+ registrar: registrar,
+ registrant: registrant)
}
before :example do
@@ -133,4 +133,44 @@ RSpec.describe RegistrantChangeMailer do
expect { message.deliver! }.to change { ActionMailer::Base.deliveries.count }.by(1)
end
end
+
+ describe '#expired' do
+ let(:domain) { instance_spy(Domain, name: 'test.com', new_registrant_email: 'new.registrant@test.com') }
+ let(:registrar) { instance_spy(Registrar) }
+ let(:registrant) { instance_spy(Registrant) }
+
+ let(:domain_presenter) { instance_spy(DomainPresenter) }
+ let(:registrar_presenter) { instance_spy(RegistrarPresenter) }
+ let(:registrant_presenter) { instance_spy(RegistrantPresenter) }
+
+ subject(:message) { described_class.expired(domain: domain,
+ registrar: registrar,
+ 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 new registrant\s email as a recipient' do
+ expect(message.to).to match_array(['new.registrant@test.com'])
+ end
+
+ it 'has subject' do
+ subject = 'Domeeni test.com registreerija vahetuse taotlus on tühistatud' \
+ ' / test.com registrant change cancelled'
+
+ expect(message.subject).to eq(subject)
+ 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 fe660c7ec..1dc691e7b 100644
--- a/spec/models/domain_spec.rb
+++ b/spec/models/domain_spec.rb
@@ -2,6 +2,25 @@ require 'rails_helper'
RSpec.describe Domain do
before :example do
+ Setting.ds_algorithm = 2
+ Setting.ds_data_allowed = true
+ Setting.ds_data_with_key_allowed = true
+ Setting.key_data_allowed = true
+
+ Setting.dnskeys_min_count = 0
+ Setting.dnskeys_max_count = 9
+ Setting.ns_min_count = 2
+ Setting.ns_max_count = 11
+
+ Setting.transfer_wait_time = 0
+
+ Setting.admin_contacts_min_count = 1
+ Setting.admin_contacts_max_count = 10
+ Setting.tech_contacts_min_count = 0
+ Setting.tech_contacts_max_count = 10
+
+ Setting.client_side_status_editing_enabled = true
+
Fabricate(:zonefile_setting, origin: 'ee')
Fabricate(:zonefile_setting, origin: 'pri.ee')
Fabricate(:zonefile_setting, origin: 'med.ee')
@@ -157,24 +176,11 @@ RSpec.describe Domain do
end
it 'should start redemption grace period' do
- DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
-
- @domain.outzone_at = Time.zone.now
- @domain.statuses << DomainStatus::SERVER_MANUAL_INZONE # this prohibits server_hold
- @domain.save
+ domain = Fabricate(:domain)
DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
-
- @domain.statuses = []
- @domain.save
-
- DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == true
+ domain.reload
+ domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
end
it 'should set force delete time' do
@@ -329,27 +335,6 @@ RSpec.describe Domain do
end
end
- it 'should start redemption grace period' do
- DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
-
- @domain.outzone_at = Time.zone.now
- @domain.statuses << DomainStatus::SERVER_MANUAL_INZONE # this prohibits server_hold
- @domain.save
-
- DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
-
- @domain.statuses = []
- @domain.save
-
- DomainCron.start_redemption_grace_period
- @domain.reload
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should == true
- end
-
it 'should set pending update' do
@domain.statuses = DomainStatus::OK # restore
@domain.save
diff --git a/spec/views/mailers/registrant_change_mailer/expired.html.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/expired.html.erb_spec.rb
new file mode 100644
index 000000000..581fae654
--- /dev/null
+++ b/spec/views/mailers/registrant_change_mailer/expired.html.erb_spec.rb
@@ -0,0 +1,11 @@
+require 'rails_helper'
+require_relative 'expired_shared'
+
+RSpec.describe 'mailers/registrant_change_mailer/expired.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 'registrant change mailer expired'
+end
diff --git a/spec/views/mailers/registrant_change_mailer/expired.text.erb_spec.rb b/spec/views/mailers/registrant_change_mailer/expired.text.erb_spec.rb
new file mode 100644
index 000000000..6f02fd795
--- /dev/null
+++ b/spec/views/mailers/registrant_change_mailer/expired.text.erb_spec.rb
@@ -0,0 +1,11 @@
+require 'rails_helper'
+require_relative 'expired_shared'
+
+RSpec.describe 'mailers/registrant_change_mailer/expired.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 'registrant change mailer expired'
+end
diff --git a/spec/views/mailers/registrant_change_mailer/expired_shared.rb b/spec/views/mailers/registrant_change_mailer/expired_shared.rb
new file mode 100644
index 000000000..bcb82f008
--- /dev/null
+++ b/spec/views/mailers/registrant_change_mailer/expired_shared.rb
@@ -0,0 +1,50 @@
+require 'rails_helper'
+
+RSpec.shared_examples 'registrant change mailer expired' do
+ let(:domain) { instance_spy(DomainPresenter) }
+ let(:registrar) { instance_spy(RegistrarPresenter) }
+ let(:registrant) { instance_spy(RegistrantPresenter) }
+ let(:lang_count) { 2 }
+
+ before :example do
+ assign(:domain, domain)
+ assign(:registrar, registrar)
+ assign(:registrant, registrant)
+ end
+
+ it 'has registrar info in estonian' do
+ render
+ expect(rendered).to have_text('test registrar estonian')
+ end
+
+ it 'has registrar info in english' do
+ render
+ expect(rendered).to have_text('test registrar english')
+ end
+
+ domain_attributes = %i(
+ name
+ )
+
+ domain_attributes.each do |attr_name|
+ it "has domain #{attr_name}" do
+ mention_count = 3
+ expect(domain).to receive(attr_name).exactly(mention_count).times.and_return("test domain #{attr_name}")
+ render
+ expect(rendered).to have_text("test domain #{attr_name}", count: mention_count)
+ end
+ end
+
+ registrant_attributes = %i(
+ name
+ )
+
+ registrant_attributes.each do |attr_name|
+ it "has registrant #{attr_name}" do
+ mention_count = 1
+ expect(registrant).to receive(attr_name).exactly(mention_count).times.and_return("test registrant #{attr_name}")
+ render
+ expect(rendered).to have_text("test registrant #{attr_name}", count: mention_count)
+ end
+ end
+end