Extract class

#727
This commit is contained in:
Artur Beljajev 2018-02-24 20:38:16 +02:00
parent 880ce2ed62
commit e0960bcca4
10 changed files with 54 additions and 85 deletions

2
.reek
View file

@ -145,7 +145,6 @@ DuplicateMethodCall:
- Admin::DomainsController#build_associations - Admin::DomainsController#build_associations
- Admin::DomainsController#index - Admin::DomainsController#index
- Admin::DomainsController#normalize_search_parameters - Admin::DomainsController#normalize_search_parameters
- Admin::DomainsController#schedule_force_delete
- Admin::EppLogsController#index - Admin::EppLogsController#index
- Admin::EppLogsController#set_default_dates - Admin::EppLogsController#set_default_dates
- Admin::LegalDocumentsController#show - Admin::LegalDocumentsController#show
@ -624,7 +623,6 @@ TooManyStatements:
- Admin::DomainVersionsController#show - Admin::DomainVersionsController#show
- Admin::DomainsController#index - Admin::DomainsController#index
- Admin::DomainsController#normalize_search_parameters - Admin::DomainsController#normalize_search_parameters
- Admin::DomainsController#schedule_force_delete
- Admin::DomainsController#update - Admin::DomainsController#update
- Admin::EppLogsController#index - Admin::EppLogsController#index
- Admin::InvoicesController#create - Admin::InvoicesController#create

View file

@ -0,0 +1,39 @@
module Admin
module Domains
class ForceDeleteController < BaseController
def create
authorize! :manage, domain
domain.transaction do
domain.schedule_force_delete
domain.registrar.messages.create!(body: t('force_delete_set_on_domain', domain_name: domain.name))
if notify_by_email?
DomainDeleteMailer.forced(domain: domain,
registrar: domain.registrar,
registrant: domain.registrant,
template_name: params[:template_name]).deliver_now
end
end
redirect_to edit_admin_domain_url(domain), notice: t('.scheduled')
end
def destroy
authorize! :manage, domain
domain.cancel_force_delete
redirect_to edit_admin_domain_url(domain), notice: t('.cancelled')
end
private
def domain
@domain ||= Domain.find(params[:domain_id])
end
def notify_by_email?
ActiveRecord::Type::Boolean.new.type_cast_from_user(params[:notify_by_email])
end
end
end
end

View file

@ -62,34 +62,6 @@ module Admin
end end
end end
def schedule_force_delete
raise 'Template param cannot be empty' if params[:template_name].blank?
@domain.transaction do
@domain.schedule_force_delete
@domain.registrar.messages.create!(body: I18n.t('force_delete_set_on_domain', domain_name: @domain.name))
if notify_by_email?
DomainDeleteMailer.forced(domain: @domain,
registrar: @domain.registrar,
registrant: @domain.registrant,
template_name: params[:template_name]).deliver_now
end
end
redirect_to edit_admin_domain_url(@domain), notice: t('.scheduled')
end
def cancel_force_delete
if @domain.cancel_force_delete
flash[:notice] = t('.cancelled')
else
flash.now[:alert] = I18n.t('failed_to_update_domain')
end
redirect_to edit_admin_domain_url(@domain)
end
def versions def versions
@domain = Domain.where(id: params[:domain_id]).includes({ versions: :item }).first @domain = Domain.where(id: params[:domain_id]).includes({ versions: :item }).first
@versions = @domain.versions @versions = @domain.versions
@ -138,9 +110,5 @@ module Admin
def force_delete_templates def force_delete_templates
%w(removed_company death) %w(removed_company death)
end end
def notify_by_email?
ActiveRecord::Type::Boolean.new.type_cast_from_user(params[:notify_by_email])
end
end end
end end

View file

@ -49,8 +49,8 @@ class DomainPresenter
) )
else else
view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'), view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'),
view.cancel_force_delete_admin_domain_path(domain), view.admin_domain_force_delete_path(domain),
method: :patch, method: :delete,
data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confim') }, data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confim') },
class: 'btn btn-primary') class: 'btn btn-primary')
end end

View file

@ -10,8 +10,8 @@
<div class="modal-body"> <div class="modal-body">
<div class="row"> <div class="row">
<%= form_tag schedule_force_delete_admin_domain_path, method: :patch, <%= form_tag admin_domain_force_delete_path(domain), id: 'domain-force-delete-form',
id: 'domain-force-delete-form', class: 'form-horizontal' do %> class: 'form-horizontal' do %>
<div class="form-group"> <div class="form-group">
<div class="col-sm-9 col-md-offset-2"> <div class="col-sm-9 col-md-offset-2">
<div class="checkbox"> <div class="checkbox">

View file

@ -17,4 +17,4 @@
<hr> <hr>
<%= render 'form' %> <%= render 'form' %>
<%= render 'force_delete_dialog', templates: force_delete_templates %> <%= render 'force_delete_dialog', domain: @domain, templates: force_delete_templates %>

View file

@ -19,12 +19,6 @@ en:
close_btn: Close dialog close_btn: Close dialog
submit_btn: Force delete domain 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: versions:
time: Time time: Time
registrant: Registrant registrant: Registrant

View file

@ -0,0 +1,9 @@
en:
admin:
domains:
force_delete:
create:
scheduled: Force delete procedure has been scheduled
destroy:
cancelled: Force delete procedure has been cancelled

View file

@ -202,11 +202,7 @@ Rails.application.routes.draw do
resources :domain_versions, controller: 'domains', action: 'versions' resources :domain_versions, controller: 'domains', action: 'versions'
resources :pending_updates resources :pending_updates
resources :pending_deletes resources :pending_deletes
resource :force_delete, controller: 'domains/force_delete', only: %i[create destroy]
member do
patch 'schedule_force_delete'
patch 'cancel_force_delete'
end
end end
resources :domain_versions do resources :domain_versions do

View file

@ -114,41 +114,6 @@ RSpec.describe DomainPresenter do
end end
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( domain_delegatable_attributes = %i(
name name
transfer_code transfer_code