Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud.
+
+
Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul.
+
+
Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine.
+
+
Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida.
+
+
Lisaküsimuste korral võtke palun ühendust oma registripidajaga:
Dear contact of <%= @domain.name %> domain
+The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry:
EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death.
+
+
According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s).
+
+
As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant.
+
+
If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis.
+
+
Should you have additional questions, please contact your registrar:
Eesti Interneti Sihtasutus
+ Estonian Internet Foundation
+
+
+
+
+
diff --git a/app/views/mailers/domain_delete_mailer/forced/death.text.erb b/app/views/mailers/domain_delete_mailer/forced/death.text.erb
new file mode 100644
index 000000000..58939070f
--- /dev/null
+++ b/app/views/mailers/domain_delete_mailer/forced/death.text.erb
@@ -0,0 +1,44 @@
+Lugupeetud domeeni <%= @domain.name %> kontaktisik
+.ee domeeniregistrisse on domeeni <%= @domain.name %> kohta kantud järgmised andmed:
+
+Registreerija nimi: <%= @registrant.name %>
+Isikukood: <%= @registrant.id_code %>
+
+Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et füüsiline isik isikukoodiga <%= @registrant.id_code %> on surnud ja sellest on möödunud vähemalt 6 kuud.
+
+Domeenireeglite punktist 6.6 tulenevalt on domeeni suhtes õigust omaval registreerijal võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus Domeenireeglite p 5.3.6.2 kohaselt. Taotlusele tuleb lisada pärimisõiguse tõend, mis asendavad Domeenireeglite punktis 5.3.6.3 sätestatud üleandva registreerija nõusolekut. Vastav dokumentatsioon tuleb esitada Registripidajale <%= @redemption_grace_period %> päeva jooksul.
+
+Kuna käesoleval hetkel domeenil registreerijat pole, on EIS algatanud <%= l(@force_delete_set_date, format: :date) %> vastavalt Domeenireeglite (http://www.internet.ee/domeenid/) punktile 6.6 domeeni <%= @domain.name %> suhtes <%= @redemption_grace_period %> päeva pikkuse kustutusmenetluse. Kustutamise käigus jääb domeen internetis kättesaadavaks ja selle aja jooksul on võimalik teostada domeeni üleandmine.
+
+Kui üleandmine ei ole <%= @redemption_grace_period %> päeva jooksul toimunud, kustub domeen <%= @domain.name %> 24 tunni jooksul <%= @domain.force_delete_date %> juhuslikult valitud ajahetkel. Soovi korral on võimalik domeen pärast selle kustumist registrist “kes ees, see mees” põhimõttel uuesti registreerida.
+
+Lisaküsimuste korral võtke palun ühendust oma registripidajaga:
+
+<%= render 'mailers/shared/registrar/registrar.et.text', registrar: @registrar %>
+
+
+
+Dear contact of <%= @domain.name %> domain
+
+The following details for domain name <%= @domain.name %> have been entered into the Estonian Internet Foundation's (EIS) domain registry:
+
+Registrant's name: <%= @registrant.name %>
+Identification code: <%= @registrant.id_code %>
+
+EIS has learned that the natural person <%= @registrant.name %> with identification code <%= @registrant.id_code %> has been deceased and 6 months have passed from death.
+
+According to paragraph 6.6 of the Domain Regulation, the registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> in accordance with paragraph 5.3.6.2 of the Domain Regulation. The application must be submitted together with succession evidence certifying the acquisition of the domain that will replace the consent of the surrendering registrant as laid down in paragraph 5.3.6.3 of the Domain Regulation. The relevant documents should be submitted to the registrar within <%= @redemption_grace_period %> day(s).
+
+As a deceased natural person is not the registrant of a domain, the EIS started the deletion process of <%= @domain.name %> domain on <%= l(@force_delete_set_date, format: :date) %> according to the Domain Regulation (http://www.internet.ee/en/domains/), using the <%= @redemption_grace_period %>-day delete procedure. The domain will remain available on the Internet during the delete procedure and within this time can be transferred to new registrant.
+
+If the transfer has not been made in <%= @redemption_grace_period %> day(s), the domain <%= @domain.name %> will be deleted at a randomly chosen moment within 24 hours on <%= @domain.force_delete_date %>. After deletion it is possible to reregister the domain on a "first come, first served" basis.
+
+Should you have additional questions, please contact your registrar:
+
+<%= render 'mailers/shared/registrar/registrar.en.text', registrar: @registrar %>
+
+Lugupidamisega,
+Best Regards,
+
+Eesti Interneti Sihtasutus
+Estonian Internet Foundation
diff --git a/app/views/mailers/domain_delete_mailer/forced.html.erb b/app/views/mailers/domain_delete_mailer/forced/removed_company.html.erb
similarity index 100%
rename from app/views/mailers/domain_delete_mailer/forced.html.erb
rename to app/views/mailers/domain_delete_mailer/forced/removed_company.html.erb
diff --git a/app/views/mailers/domain_delete_mailer/forced.text.erb b/app/views/mailers/domain_delete_mailer/forced/removed_company.text.erb
similarity index 100%
rename from app/views/mailers/domain_delete_mailer/forced.text.erb
rename to app/views/mailers/domain_delete_mailer/forced/removed_company.text.erb
diff --git a/app/views/registrar/shared/_flash_messages.haml b/app/views/registrar/shared/_flash_messages.haml
deleted file mode 100644
index b1d850a0c..000000000
--- a/app/views/registrar/shared/_flash_messages.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-- display = (flash.empty?) ? 'none' : 'block'
-#flash{style: "display: #{display};"}
- - type = (flash[:notice]) ? 'bg-success' : 'bg-danger'
- .alert{class: type}= flash[:notice] || flash[:alert]
diff --git a/config/environments/development-example.rb b/config/environments/development-example.rb
index f2e07435a..59efe01d9 100644
--- a/config/environments/development-example.rb
+++ b/config/environments/development-example.rb
@@ -24,7 +24,7 @@ Rails.application.configure do
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
- config.assets.debug = true
+ config.assets.debug = false
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
diff --git a/config/locales/admin/domains.en.yml b/config/locales/admin/domains.en.yml
index fcb0da578..ae0626ffb 100644
--- a/config/locales/admin/domains.en.yml
+++ b/config/locales/admin/domains.en.yml
@@ -4,6 +4,22 @@ en:
index:
reset_btn: Reset
+ edit:
+ add_new_status_btn: Add new status
+ back_btn: Back to domain
+
+ force_delete_dialog:
+ title: Force delete
+ template: Template
+ close_btn: Close dialog
+ submit_btn: Force delete domain
+
+ schedule_force_delete:
+ scheduled: Force delete procedure has been scheduled
+
+ cancel_force_delete:
+ cancelled: Force delete procedure has been cancelled
+
versions:
time: Time
admin_contact: Admin contact
@@ -13,3 +29,8 @@ en:
outzone_time: Outzone time
delete_time: Delete time
force_delete_time: Force delete time
+
+ force_delete_toggle_btn:
+ schedule: Schedule force delete
+ cancel: Cancel force delete
+ cancel_confim: Are you sure you want cancel force delete procedure?
diff --git a/config/locales/en.yml b/config/locales/en.yml
index f75324218..d266cdfdf 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -602,7 +602,6 @@ en:
new_domain: 'New domain'
edit: 'Edit'
delete: 'Delete'
- are_you_sure: 'Are you sure?'
renew: 'Renew'
new: New
renew_domain: 'Renew domain'
@@ -844,8 +843,6 @@ en:
valid: Valid
category: Zone
object_is_not_eligible_for_renewal: 'Object is not eligible for renewal'
- set_force_delete: 'Set force delete'
- unset_force_delete: 'Unset force delete'
domain_expiring: 'Domain expiring'
domain_validation_rules: 'Domain validation rules'
bank_statement_desc: 'Import file row will match only when matching following attributes: ref number payment amount invoice number (the first numerical value in comment field).'
@@ -914,7 +911,7 @@ en:
created_at_from: 'Created at from'
created_at_until: 'Created at until'
is_registrant: 'Is registrant'
- force_delete_set_on_domain: 'Force delete set on domain %{domain}'
+ force_delete_set_on_domain: 'Force delete set on domain %{domain_name}'
mail_templates: Mail Templates
new_mail_template: New mail template
failure: "It was not saved"
diff --git a/config/routes.rb b/config/routes.rb
index c4f1cf32c..8b52e7091 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -202,9 +202,10 @@ Rails.application.routes.draw do
resources :domain_versions, controller: 'domains', action: 'versions'
resources :pending_updates
resources :pending_deletes
+
member do
- post 'set_force_delete'
- post 'unset_force_delete'
+ patch 'schedule_force_delete'
+ patch 'cancel_force_delete'
end
end
diff --git a/spec/factories/domain.rb b/spec/factories/domain.rb
index 534670ce0..edbd2274c 100644
--- a/spec/factories/domain.rb
+++ b/spec/factories/domain.rb
@@ -10,5 +10,10 @@ FactoryGirl.define do
domain.admin_domain_contacts << FactoryGirl.build(:admin_domain_contact)
domain.tech_domain_contacts << FactoryGirl.build(:tech_domain_contact)
end
+
+ factory :domain_without_force_delete do
+ force_delete_time nil
+ statuses []
+ end
end
end
diff --git a/spec/features/admin/domains/force_delete_spec.rb b/spec/features/admin/domains/force_delete_spec.rb
new file mode 100644
index 000000000..1d3b926a6
--- /dev/null
+++ b/spec/features/admin/domains/force_delete_spec.rb
@@ -0,0 +1,33 @@
+require 'rails_helper'
+
+RSpec.feature 'Force delete' do
+ context 'when domain has no force delete procedure' do
+ given!(:domain) { create(:domain_without_force_delete) }
+
+ scenario 'schedule' do
+ sign_in_to_admin_area
+
+ visit edit_admin_domain_url(domain)
+ click_link_or_button 'Force delete domain'
+
+ expect(page).to have_text('Force delete procedure has been scheduled')
+ end
+ end
+
+ context 'when domain has force delete procedure' do
+ given!(:domain) { create(:domain_without_force_delete) }
+
+ background do
+ domain.schedule_force_delete
+ end
+
+ scenario 'cancel' do
+ sign_in_to_admin_area
+
+ visit edit_admin_domain_url(domain)
+ click_link_or_button 'Cancel force delete'
+
+ expect(page).to have_text('Force delete procedure has been cancelled')
+ end
+ end
+end
diff --git a/spec/jobs/domain_delete_forced_email_job_spec.rb b/spec/jobs/domain_delete_forced_email_job_spec.rb
index 05dab987b..3d725b987 100644
--- a/spec/jobs/domain_delete_forced_email_job_spec.rb
+++ b/spec/jobs/domain_delete_forced_email_job_spec.rb
@@ -17,7 +17,8 @@ RSpec.describe DomainDeleteForcedEmailJob do
after :example do
domain_id = 1
- described_class.enqueue(domain_id)
+ template_name = 'removed_company'
+ described_class.enqueue(domain_id, template_name)
end
it 'creates log record' do
@@ -32,7 +33,8 @@ RSpec.describe DomainDeleteForcedEmailJob do
it 'sends email' do
expect(DomainDeleteMailer).to receive(:forced).with(domain: domain,
registrar: 'registrar',
- registrant: 'registrant')
+ registrant: 'registrant',
+ template_name: 'removed_company')
.and_return(message)
expect(message).to receive(:deliver_now)
end
diff --git a/spec/mailers/domain_delete_mailer_spec.rb b/spec/mailers/domain_delete_mailer_spec.rb
index 5a2f775c1..ce4bbce93 100644
--- a/spec/mailers/domain_delete_mailer_spec.rb
+++ b/spec/mailers/domain_delete_mailer_spec.rb
@@ -48,12 +48,16 @@ RSpec.describe DomainDeleteMailer do
describe '#forced' do
let(:domain) { instance_spy(Domain, name: 'test.com') }
+ let(:registrant) { instance_spy(Registrant) }
+ let(:template_name) { 'removed_company' }
+
let(:domain_presenter) { instance_spy(DomainPresenter) }
let(:registrar_presenter) { instance_spy(RegistrarPresenter) }
let(:registrant_presenter) { instance_spy(RegistrantPresenter) }
subject(:message) { described_class.forced(domain: domain,
registrar: 'registrar',
- registrant: 'registrant')
+ registrant: registrant,
+ template_name: template_name)
}
before :example do
@@ -75,8 +79,28 @@ RSpec.describe DomainDeleteMailer do
expect(message.subject).to eq('Kustutusmenetluse teade')
end
- it 'sends message' do
- expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
+ context 'when template is :death' do
+ let(:template_name) { 'death' }
+
+ it 'sends message' do
+ expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
+ end
+
+ context 'when registrant is private entity' do
+ let(:registrant) { build_stubbed(:registrant_private_entity) }
+
+ it 'sends message' do
+ expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
+ end
+
+ context 'when registrant is legal entity' do
+ let(:registrant) { build_stubbed(:registrant_legal_entity) }
+
+ it 'sends message' do
+ expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
end
end
end
diff --git a/spec/models/concerns/domain/force_delete_spec.rb b/spec/models/concerns/domain/force_delete_spec.rb
new file mode 100644
index 000000000..3e0563366
--- /dev/null
+++ b/spec/models/concerns/domain/force_delete_spec.rb
@@ -0,0 +1,98 @@
+require 'rails_helper'
+
+RSpec.describe Domain do
+ it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) }
+
+ before :example do
+ Fabricate(:zonefile_setting, origin: 'ee')
+ end
+
+ it 'should set force delete time' do
+ domain = Fabricate(:domain)
+ domain.statuses = ['ok']
+ domain.schedule_force_delete
+
+ domain.statuses.should match_array([
+ "serverForceDelete",
+ "pendingDelete",
+ "serverManualInzone",
+ "serverRenewProhibited",
+ "serverTransferProhibited",
+ "serverUpdateProhibited"
+ ])
+
+ domain.cancel_force_delete
+
+ domain.statuses.should == ['ok']
+
+ domain.statuses = [
+ DomainStatus::CLIENT_DELETE_PROHIBITED,
+ DomainStatus::SERVER_DELETE_PROHIBITED,
+ DomainStatus::PENDING_UPDATE,
+ DomainStatus::PENDING_TRANSFER,
+ DomainStatus::PENDING_RENEW,
+ DomainStatus::PENDING_CREATE,
+ DomainStatus::CLIENT_HOLD,
+ DomainStatus::EXPIRED,
+ DomainStatus::SERVER_HOLD,
+ DomainStatus::DELETE_CANDIDATE
+ ]
+
+ domain.save
+
+ domain.schedule_force_delete
+
+ domain.statuses.should match_array([
+ "clientHold",
+ "deleteCandidate",
+ "expired",
+ "serverForceDelete",
+ "pendingDelete",
+ "serverHold",
+ "serverRenewProhibited",
+ "serverTransferProhibited",
+ "serverUpdateProhibited"
+ ])
+
+ domain.cancel_force_delete
+
+ domain.statuses.should match_array([
+ "clientDeleteProhibited",
+ "clientHold",
+ "deleteCandidate",
+ "expired",
+ "pendingCreate",
+ "pendingRenew",
+ "pendingTransfer",
+ "pendingUpdate",
+ "serverDeleteProhibited",
+ "serverHold"
+ ])
+ end
+
+ it 'should should be manual in zone and held after force delete' do
+ domain = create(:domain)
+ Setting.redemption_grace_period = 1
+
+ domain.valid?
+ domain.outzone_at = Time.zone.now + 1.day # before redemption grace period
+ # what should this be?
+ # domain.server_holdable?.should be true
+ domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
+ domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be false
+ domain.schedule_force_delete
+ domain.server_holdable?.should be false
+ domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be true
+ domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
+ end
+
+ it 'should not allow update after force delete' do
+ domain = create(:domain)
+ domain.valid?
+ domain.pending_update_prohibited?.should be false
+ domain.update_prohibited?.should be false
+ domain.schedule_force_delete
+ domain.pending_update_prohibited?.should be true
+ domain.update_prohibited?.should be true
+ end
+end
diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb
index df4d8cfd3..4d49bc1e8 100644
--- a/spec/models/contact_spec.rb
+++ b/spec/models/contact_spec.rb
@@ -481,4 +481,18 @@ RSpec.describe Contact, db: false do
specify { expect(reg_no).to be_nil }
end
end
+
+ describe '#id_code' do
+ context 'when contact is private entity' do
+ let(:contact) { FactoryGirl.build_stubbed(:contact_private_entity, ident: '1234') }
+
+ specify { expect(contact.id_code).to eq('1234') }
+ end
+
+ context 'when contact is legal entity' do
+ let(:contact) { FactoryGirl.build_stubbed(:contact_legal_entity, ident: '1234') }
+
+ specify { expect(contact.id_code).to be_nil }
+ end
+ end
end
diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb
index 555cf48e1..6e224080f 100644
--- a/spec/models/domain_spec.rb
+++ b/spec/models/domain_spec.rb
@@ -182,98 +182,6 @@ RSpec.describe Domain do
domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
end
- it 'should set force delete time' do
- @domain.statuses = ['ok']
- @domain.set_force_delete
-
- @domain.statuses.should match_array([
- "serverForceDelete",
- "pendingDelete",
- "serverManualInzone",
- "serverRenewProhibited",
- "serverTransferProhibited",
- "serverUpdateProhibited"
- ])
-
- fda = Time.zone.now + Setting.redemption_grace_period.days
-
- @domain.registrar.messages.count.should == 1
- m = @domain.registrar.messages.first
- m.body.should == "Force delete set on domain #{@domain.name}"
-
- @domain.unset_force_delete
-
- @domain.statuses.should == ['ok']
-
- @domain.statuses = [
- DomainStatus::CLIENT_DELETE_PROHIBITED,
- DomainStatus::SERVER_DELETE_PROHIBITED,
- DomainStatus::PENDING_UPDATE,
- DomainStatus::PENDING_TRANSFER,
- DomainStatus::PENDING_RENEW,
- DomainStatus::PENDING_CREATE,
- DomainStatus::CLIENT_HOLD,
- DomainStatus::EXPIRED,
- DomainStatus::SERVER_HOLD,
- DomainStatus::DELETE_CANDIDATE
- ]
-
- @domain.save
-
- @domain.set_force_delete
-
- @domain.statuses.should match_array([
- "clientHold",
- "deleteCandidate",
- "expired",
- "serverForceDelete",
- "pendingDelete",
- "serverHold",
- "serverRenewProhibited",
- "serverTransferProhibited",
- "serverUpdateProhibited"
- ])
-
- @domain.unset_force_delete
-
- @domain.statuses.should match_array([
- "clientDeleteProhibited",
- "clientHold",
- "deleteCandidate",
- "expired",
- "pendingCreate",
- "pendingRenew",
- "pendingTransfer",
- "pendingUpdate",
- "serverDeleteProhibited",
- "serverHold"
- ])
- end
-
- it 'should should be manual in zone and held after force delete' do
- Setting.redemption_grace_period = 1
-
- @domain.valid?
- @domain.outzone_at = Time.zone.now + 1.day # before redemption grace period
- # what should this be?
- # @domain.server_holdable?.should be true
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
- @domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be false
- @domain.set_force_delete
- @domain.server_holdable?.should be false
- @domain.statuses.include?(DomainStatus::SERVER_MANUAL_INZONE).should be true
- @domain.statuses.include?(DomainStatus::SERVER_HOLD).should be false
- end
-
- it 'should not allow update after force delete' do
- @domain.valid?
- @domain.pending_update_prohibited?.should be false
- @domain.update_prohibited?.should be false
- @domain.set_force_delete
- @domain.pending_update_prohibited?.should be true
- @domain.update_prohibited?.should be true
- end
-
context 'with time period settings' do
before :example do
@save_days_to_renew = Setting.days_to_renew_domain_before_expire
@@ -302,7 +210,7 @@ RSpec.describe Domain do
it 'should not allow to renew after force delete' do
Setting.redemption_grace_period = 1
- @domain.set_force_delete
+ @domain.schedule_force_delete
@domain.renewable?.should be false
end
end
@@ -327,7 +235,7 @@ RSpec.describe Domain do
it 'should not allow to renew after force delete' do
Setting.redemption_grace_period = 1
- @domain.set_force_delete
+ @domain.schedule_force_delete
@domain.renewable?.should be false
end
end
@@ -700,7 +608,6 @@ end
RSpec.describe Domain, db: false do
it { is_expected.to alias_attribute(:on_hold_time, :outzone_at) }
it { is_expected.to alias_attribute(:delete_time, :delete_at) }
- it { is_expected.to alias_attribute(:force_delete_time, :force_delete_at) }
it { is_expected.to alias_attribute(:outzone_time, :outzone_at) }
describe 'nameserver validation', db: true do
diff --git a/spec/presenters/domain_presenter_spec.rb b/spec/presenters/domain_presenter_spec.rb
index 2209c01aa..f32e6eb52 100644
--- a/spec/presenters/domain_presenter_spec.rb
+++ b/spec/presenters/domain_presenter_spec.rb
@@ -114,6 +114,40 @@ RSpec.describe DomainPresenter do
end
end
+ describe '#force_delete_toggle_btn' do
+ let(:domain) { build_stubbed(:domain) }
+
+ context 'when force delete is not scheduled' do
+ before :example do
+ expect(domain).to receive(:force_delete_scheduled?).and_return(false)
+ end
+
+ it 'returns schedule button' do
+ html = view.content_tag(:a, 'Schedule force delete',
+ class: 'btn btn-danger',
+ data: {
+ toggle: 'modal',
+ target: '.domain-edit-force-delete-dialog',
+ })
+ expect(presenter.force_delete_toggle_btn).to eq(html)
+ end
+ end
+
+ context 'when force delete is scheduled' do
+ before :example do
+ expect(domain).to receive(:force_delete_scheduled?).and_return(true)
+ end
+
+ it 'returns cancel button' do
+ html = link_to('Cancel force delete',
+ view.cancel_force_delete_admin_domain_path(domain),
+ method: :patch,
+ data: { confirm: 'Are you sure you want cancel force delete procedure?' },
+ class: 'btn btn-primary')
+ expect(presenter.force_delete_toggle_btn).to eq(html)
+ end
+ end
+ end
domain_delegatable_attributes = %i(
name
diff --git a/spec/presenters/registrant_presenter_spec.rb b/spec/presenters/registrant_presenter_spec.rb
index 894dd40d5..5db6cb0da 100644
--- a/spec/presenters/registrant_presenter_spec.rb
+++ b/spec/presenters/registrant_presenter_spec.rb
@@ -11,6 +11,7 @@ RSpec.describe RegistrantPresenter do
priv?
street
city
+ id_code
)
registrant_delegate_attributes.each do |attribute_name|
diff --git a/spec/routing/admin/domains_routing_spec.rb b/spec/routing/admin/domains_routing_spec.rb
new file mode 100644
index 000000000..ce1da8d57
--- /dev/null
+++ b/spec/routing/admin/domains_routing_spec.rb
@@ -0,0 +1,13 @@
+require 'rails_helper'
+
+RSpec.describe Admin::DomainsController do
+ describe 'routing' do
+ it 'routes to #schedule_force_delete' do
+ expect(patch: '/admin/domains/1/schedule_force_delete').to route_to('admin/domains#schedule_force_delete', id: '1')
+ end
+
+ it 'routes to #cancel_force_delete' do
+ expect(patch: '/admin/domains/1/cancel_force_delete').to route_to('admin/domains#cancel_force_delete', id: '1')
+ end
+ end
+end
diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb
index a23609891..63e8bd072 100644
--- a/spec/support/features/session_helpers.rb
+++ b/spec/support/features/session_helpers.rb
@@ -1,5 +1,14 @@
module Features
module SessionHelpers
+ def sign_in_to_admin_area(user: FactoryGirl.create(:admin_user))
+ visit admin_login_url
+
+ fill_in 'admin_user[username]', with: user.username
+ fill_in 'admin_user[password]', with: user.password
+
+ click_button 'Log in'
+ end
+
def sign_in_to_registrar_area(user: FactoryGirl.create(:api_user))
visit registrar_login_url
diff --git a/spec/views/admin/domains/edit.html.erb_spec.rb b/spec/views/admin/domains/edit.html.erb_spec.rb
new file mode 100644
index 000000000..b3cc5d834
--- /dev/null
+++ b/spec/views/admin/domains/edit.html.erb_spec.rb
@@ -0,0 +1,22 @@
+require 'rails_helper'
+
+RSpec.describe 'admin/domains/edit' do
+ let(:domain) { build_stubbed(:domain) }
+ let(:domain_presenter) { DomainPresenter.new(domain: domain, view: view) }
+
+ before :example do
+ allow(DomainPresenter).to receive(:new).and_return(domain_presenter)
+ allow(view).to receive(:force_delete_templates)
+
+ assign(:domain, domain)
+
+ stub_template '_form' => ''
+ stub_template '_force_delete_dialog' => ''
+ end
+
+ it 'has force_delete_toggle_btn' do
+ expect(domain_presenter).to receive(:force_delete_toggle_btn).and_return('force_delete_toggle_btn')
+ render
+ expect(rendered).to have_content('force_delete_toggle_btn')
+ end
+end
diff --git a/spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb
similarity index 76%
rename from spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb
rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb
index 4f38b7743..5a92165b0 100644
--- a/spec/views/mailers/domain_delete_mailer/forced.html.erb_spec.rb
+++ b/spec/views/mailers/domain_delete_mailer/forced/removed_company.html.erb_spec.rb
@@ -1,7 +1,7 @@
require 'rails_helper'
-require_relative 'forced_shared'
+require_relative 'removed_company'
-RSpec.describe 'mailers/domain_delete_mailer/forced.html.erb' do
+RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.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'
diff --git a/spec/views/mailers/domain_delete_mailer/forced_shared.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.rb
similarity index 100%
rename from spec/views/mailers/domain_delete_mailer/forced_shared.rb
rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.rb
diff --git a/spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb b/spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb
similarity index 76%
rename from spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb
rename to spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb
index a53c5beca..ec527b0d7 100644
--- a/spec/views/mailers/domain_delete_mailer/forced.text.erb_spec.rb
+++ b/spec/views/mailers/domain_delete_mailer/forced/removed_company.text.erb_spec.rb
@@ -1,7 +1,7 @@
require 'rails_helper'
-require_relative 'forced_shared'
+require_relative 'removed_company'
-RSpec.describe 'mailers/domain_delete_mailer/forced.text.erb' do
+RSpec.describe 'mailers/domain_delete_mailer/forced/removed_company.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'