diff --git a/app/controllers/admin/registrars_controller.rb b/app/controllers/admin/registrars_controller.rb
index 8d020787b..82fa37be4 100644
--- a/app/controllers/admin/registrars_controller.rb
+++ b/app/controllers/admin/registrars_controller.rb
@@ -19,17 +19,15 @@ module Admin
def create
@registrar = Registrar.new(registrar_params)
- begin
+ if @registrar.valid?
@registrar.transaction do
@registrar.save!
@registrar.accounts.create!(account_type: Account::CASH, currency: 'EUR')
end
- flash[:notice] = t('.created')
- redirect_to [:admin, @registrar]
- rescue ActiveRecord::RecordInvalid
- flash.now[:alert] = t('.not_created')
- render 'new'
+ redirect_to [:admin, @registrar], notice: t('.created')
+ else
+ render :new
end
end
@@ -38,21 +36,19 @@ module Admin
def update
if @registrar.update(registrar_params)
- flash[:notice] = t('.updated')
- redirect_to [:admin, @registrar]
+ redirect_to [:admin, @registrar], notice: t('.updated')
else
- flash.now[:alert] = t('.not_updated')
- render 'edit'
+ render :edit
end
end
def destroy
if @registrar.destroy
- flash[:notice] = I18n.t('registrar_deleted')
- redirect_to admin_registrars_path
+ flash[:notice] = t('.deleted')
+ redirect_to admin_registrars_url
else
- flash.now[:alert] = I18n.t('failed_to_delete_registrar')
- render 'show'
+ flash[:alert] = @registrar.errors.full_messages.first
+ redirect_to admin_registrar_url(@registrar)
end
end
diff --git a/app/models/registrar.rb b/app/models/registrar.rb
index 2aa9ea3e4..5fd0008b5 100644
--- a/app/models/registrar.rb
+++ b/app/models/registrar.rb
@@ -6,7 +6,7 @@ class Registrar < ActiveRecord::Base
has_many :api_users, dependent: :restrict_with_error
has_many :messages
has_many :invoices, foreign_key: 'buyer_id'
- has_many :accounts
+ has_many :accounts, dependent: :destroy
has_many :nameservers, through: :domains
has_many :whois_records
has_many :white_ips, dependent: :destroy
@@ -17,37 +17,10 @@ class Registrar < ActiveRecord::Base
validates :name, :reference_no, :code, uniqueness: true
validates :accounting_customer_code, presence: true
validates :language, presence: true
- validate :forbidden_codes
+ validate :forbid_special_code
after_initialize :set_defaults
-
- def forbidden_codes
- return true unless ['CID'].include? code
- errors.add(:code, I18n.t(:forbidden_code))
- false
- end
-
before_validation :generate_iso_11649_reference_no
- def generate_iso_11649_reference_no
- return if reference_no.present?
-
- loop do
- base = nil
- loop do
- base = SecureRandom.random_number.to_s.last(8)
- break if base.to_i != 0 && base.length == 8
- end
-
- control_base = (base + '2715' + '00').to_i
- reminder = control_base % 97
- check_digits = 98 - reminder
-
- check_digits = check_digits < 10 ? "0#{check_digits}" : check_digits.to_s
-
- self.reference_no = "RF#{check_digits}#{base}"
- break unless self.class.exists?(reference_no: reference_no)
- end
- end
validates :email, :billing_email,
email_format: { message: :invalid },
@@ -177,4 +150,29 @@ class Registrar < ActiveRecord::Base
def set_defaults
self.language = Setting.default_language unless language
end
+
+ def forbid_special_code
+ errors.add(:code, :forbidden) if code == 'CID'
+ end
+
+ def generate_iso_11649_reference_no
+ return if reference_no.present?
+
+ loop do
+ base = nil
+ loop do
+ base = SecureRandom.random_number.to_s.last(8)
+ break if base.to_i != 0 && base.length == 8
+ end
+
+ control_base = (base + '2715' + '00').to_i
+ reminder = control_base % 97
+ check_digits = 98 - reminder
+
+ check_digits = check_digits < 10 ? "0#{check_digits}" : check_digits.to_s
+
+ self.reference_no = "RF#{check_digits}#{base}"
+ break unless self.class.exists?(reference_no: reference_no)
+ end
+ end
end
diff --git a/app/views/admin/bank_transactions/show.haml b/app/views/admin/bank_transactions/show.haml
index 4133386e5..60515200a 100644
--- a/app/views/admin/bank_transactions/show.haml
+++ b/app/views/admin/bank_transactions/show.haml
@@ -41,7 +41,7 @@
%dt= t(:currency)
%dd= @bank_transaction.currency
- %dt= t(:reference_no)
+ %dt= BankTransaction.human_attribute_name :reference_no
%dd= @bank_transaction.reference_no
%dt= t(:paid_at)
diff --git a/app/views/admin/registrars/_billing.html.erb b/app/views/admin/registrars/_billing.html.erb
new file mode 100644
index 000000000..f3960233e
--- /dev/null
+++ b/app/views/admin/registrars/_billing.html.erb
@@ -0,0 +1,17 @@
+
+
+ <%= t '.header' %>
+
+
+
+ - <%= Registrar.human_attribute_name :vat_no %>
+ - <%= registrar.vat_no %>
+
+ - <%= Registrar.human_attribute_name :accounting_customer_code %>
+ - <%= registrar.accounting_customer_code %>
+
+ - <%= Registrar.human_attribute_name :billing_email %>
+ - <%= registrar.billing_email %>
+
+
+
diff --git a/app/views/admin/registrars/_contacts.html.erb b/app/views/admin/registrars/_contacts.html.erb
new file mode 100644
index 000000000..190e48458
--- /dev/null
+++ b/app/views/admin/registrars/_contacts.html.erb
@@ -0,0 +1,24 @@
+
+
+ <%= t '.header' %>
+
+
+
+
+ - <%= t(:country) %>
+ - <%= @registrar.country %>
+
+ - <%= t(:address) %>
+ - <%= @registrar.address %>
+
+ - <%= t(:contact_phone) %>
+ - <%= @registrar.phone %>
+
+ - <%= t(:contact_email) %>
+ - <%= @registrar.email %>
+
+ - <%= Registrar.human_attribute_name :billing_email %>
+ - <%= @registrar.billing_email %>
+
+
+
diff --git a/app/views/admin/registrars/_details.html.erb b/app/views/admin/registrars/_details.html.erb
new file mode 100644
index 000000000..c640075ba
--- /dev/null
+++ b/app/views/admin/registrars/_details.html.erb
@@ -0,0 +1,27 @@
+
+
+ <%= t '.header' %>
+
+
+
+
+ - <%= Registrar.human_attribute_name :name %>
+ - <%= registrar.name %>
+
+ - <%= Registrar.human_attribute_name :reg_no %>
+ - <%= registrar.reg_no %>
+
+ - <%= Registrar.human_attribute_name :reference_no %>
+ - <%= registrar.reference_no %>
+
+ - <%= Registrar.human_attribute_name :code %>
+ - <%= registrar.code %>
+
+ - <%= Registrar.human_attribute_name :balance %>
+ - <%= registrar.balance %>
+
+ - <%= Registrar.human_attribute_name :website %>
+ - <%= registrar.website %>
+
+
+
diff --git a/app/views/admin/registrars/_form.html.erb b/app/views/admin/registrars/_form.html.erb
index 65a5351ad..71c4fb68f 100644
--- a/app/views/admin/registrars/_form.html.erb
+++ b/app/views/admin/registrars/_form.html.erb
@@ -1,5 +1,6 @@
<%= form_for([:admin, @registrar], html: { class: 'form-horizontal' }) do |f| %>
- <%= render 'shared/full_errors', object: @registrar %>
+ <%= render 'form_errors', target: @registrar %>
+
@@ -133,7 +134,9 @@
<%= f.label :code %>
- <%= f.text_field :code, required: f.object.new_record?, class: 'form-control', disabled: !f.object.new_record? %>
+ <%= f.text_field :code, required: f.object.new_record?,
+ disabled: f.object.persisted?,
+ class: 'form-control' %>
diff --git a/app/views/admin/registrars/show/_preferences.html.erb b/app/views/admin/registrars/_preferences.html.erb
similarity index 100%
rename from app/views/admin/registrars/show/_preferences.html.erb
rename to app/views/admin/registrars/_preferences.html.erb
diff --git a/app/views/admin/registrars/_users.html.erb b/app/views/admin/registrars/_users.html.erb
new file mode 100644
index 000000000..f182e4615
--- /dev/null
+++ b/app/views/admin/registrars/_users.html.erb
@@ -0,0 +1,28 @@
+
+
+ <%= t '.header' %>
+
+
+
+
+
+ <%= ApiUser.human_attribute_name :username %> |
+ <%= ApiUser.human_attribute_name :active %> |
+
+
+
+
+ <% registrar.api_users.each do |user| %>
+
+ <%= link_to(user, [:admin, user]) %> |
+ <%= user.active %> |
+
+ <% end %>
+
+
+
+
+
diff --git a/app/views/admin/registrars/_white_ips.html.erb b/app/views/admin/registrars/_white_ips.html.erb
new file mode 100644
index 000000000..c86c85eb9
--- /dev/null
+++ b/app/views/admin/registrars/_white_ips.html.erb
@@ -0,0 +1,38 @@
+
+
+ <%= t '.header' %>
+
+
+
+
+
+ <%= WhiteIp.human_attribute_name :ipv4 %> |
+ <%= WhiteIp.human_attribute_name :ipv6 %> |
+ <%= WhiteIp.human_attribute_name :interfaces %> |
+
+
+
+
+ <% registrar.white_ips.each do |white_ip| %>
+
+
+ <% if white_ip.ipv4.present? %>
+ <%= link_to(white_ip.ipv4, [:admin, registrar, white_ip]) %>
+ <% end %>
+ |
+
+ <% if white_ip.ipv6.present? %>
+ <%= link_to(white_ip.ipv6, [:admin, registrar, white_ip]) %>
+ <% end %>
+ |
+ <%= white_ip.interfaces.join(', ').upcase %> |
+
+ <% end %>
+
+
+
+
+
diff --git a/app/views/admin/registrars/edit.html.erb b/app/views/admin/registrars/edit.html.erb
index 71d6bd882..205ba6b28 100644
--- a/app/views/admin/registrars/edit.html.erb
+++ b/app/views/admin/registrars/edit.html.erb
@@ -1,5 +1,10 @@
-<% content_for :actions do %>
- <%= link_to(t(:back_to_registrar), [:admin, @registrar], class: 'btn btn-default') %>
-<% end %>
-<%= render 'shared/title', name: "#{t(:edit)}: #{@registrar.name}" %>
+
+ - <%= link_to t('admin.registrars.index.header'), admin_registrars_path %>
+ - <%= link_to @registrar.name, admin_registrar_path(@registrar) %>
+
+
+
+
<%= render 'form' %>
diff --git a/app/views/admin/registrars/index.html.erb b/app/views/admin/registrars/index.html.erb
index 5533a6f07..a66816568 100644
--- a/app/views/admin/registrars/index.html.erb
+++ b/app/views/admin/registrars/index.html.erb
@@ -1,7 +1,15 @@
-<% content_for :actions do %>
- <%= link_to(t('.new_btn'), new_admin_registrar_path, class: 'btn btn-primary') %>
-<% end %>
-<%= render 'shared/title', name: t(:registrars) %>
+
+
@@ -12,10 +20,10 @@
<%= sort_link(@q, 'name') %>
- <%= sort_link(@q, 'reg_no', t(:reg_no)) %>
+ <%= sort_link(@q, 'reg_no', Registrar.human_attribute_name(:reg_no)) %>
|
- <%= t(:credit_balance) %>
+ <%= Registrar.human_attribute_name :balance %>
|
<%= t(:test_registrar) %>
diff --git a/app/views/admin/registrars/new.html.erb b/app/views/admin/registrars/new.html.erb
index 70154d217..e813bdd57 100644
--- a/app/views/admin/registrars/new.html.erb
+++ b/app/views/admin/registrars/new.html.erb
@@ -1,2 +1,9 @@
-<%= render 'shared/title', name: t(:new_registrar) %>
+
+ - <%= link_to t('admin.registrars.index.header'), admin_registrars_path %>
+
+
+
+
<%= render 'form' %>
diff --git a/app/views/admin/registrars/show.html.erb b/app/views/admin/registrars/show.html.erb
index a6f2240a9..65435ef77 100644
--- a/app/views/admin/registrars/show.html.erb
+++ b/app/views/admin/registrars/show.html.erb
@@ -1,218 +1,50 @@
<% registrar = RegistrarPresenter.new(registrar: @registrar, view: self) %>
-<% content_for :actions do %>
- <%= link_to(t(:edit), edit_admin_registrar_path(@registrar), class: 'btn btn-primary') %>
- <%= link_to(t(:delete), admin_registrar_path(@registrar), method: :delete, data: { confirm: t(:are_you_sure) }, class: 'btn btn-danger') %>
-<% end %>
-<% content_for :page_name do %>
- <%= @registrar.name %>
- <% if @registrar.test_registrar? %>
- (test)
- <% end %>
-<% end %>
-<%= render 'shared/title', name: @registrar.name %>
-<% if @registrar.errors.any? %>
- <% @registrar.errors.each do |attr, err| %>
- <%= err %>
-
- <% end %>
-<% end %>
-<% if @registrar.errors.any? %>
-
-<% end %>
+
+
+ - <%= link_to t('admin.registrars.index.header'), admin_registrars_path %>
+
+
+
+
-
-
-
- <%= t(:general) %>
-
-
-
-
- -
- <%= t(:name) %>
-
- -
- <%= @registrar.name %>
-
- -
- <%= t(:reg_no) %>
-
- -
- <%= @registrar.reg_no %>
-
- -
- <%= t(:vat_no) %>
-
- -
- <%= @registrar.vat_no %>
-
- -
- <%= t(:reference_no) %>
-
- -
- <%= @registrar.reference_no %>
-
- -
- <%= t(:id) %>
-
- -
- <%= @registrar.code %>
-
- -
- <%= t(:credit_balance) %>
-
- -
- <%= @registrar.balance %>
-
- -
- <%= Registrar.human_attribute_name :website %>
-
- -
- <%= @registrar.website %>
-
- -
- <%= Registrar.human_attribute_name :accounting_customer_code %>
-
- -
- <%= @registrar.accounting_customer_code %>
-
-
-
-
+ <%= render 'details', registrar: @registrar %>
-
-
-
- <%= t(:contact) %>
-
-
-
-
- -
- <%= t(:country) %>
-
- -
- <%= @registrar.country %>
-
- -
- <%= t(:address) %>
-
- -
- <%= @registrar.address %>
-
- -
- <%= t(:contact_phone) %>
-
- -
- <%= @registrar.phone %>
-
- -
- <%= t(:contact_email) %>
-
- -
- <%= @registrar.email %>
-
- -
- <%= t(:billing_email) %>
-
- -
- <%= @registrar.billing_email %>
-
-
-
-
- <%= render 'admin/registrars/show/preferences', registrar: registrar %>
+ <%= render 'contacts', registrar: @registrar %>
+ <%= render 'billing', registrar: @registrar %>
+ <%= render 'preferences', registrar: registrar %>
+
-
-
-
- <%= t('.api_users') %>
-
-
- <%= link_to(t('.new_api_use_btn'), new_admin_registrar_api_user_path(@registrar), class: 'btn btn-default btn-xs') %>
-
-
-
-
-
-
-
- <%= t(:username) %>
- |
-
- <%= t('.active') %>
- |
-
-
-
- <% @registrar.api_users.each do |x| %>
-
-
- <%= link_to(x, [:admin, x]) %>
- |
-
- <%= x.active %>
- |
-
- <% end %>
-
-
-
-
+ <%= render 'users', registrar: @registrar %>
+
-
-
-
- <%= t(:white_ips) %>
-
-
- <%= link_to(t(:create_new_white_ip), new_admin_registrar_white_ip_path(@registrar), class: 'btn btn-default btn-xs') %>
-
-
-
-
-
-
-
- <%= t(:ipv4) %>
- |
-
- <%= t(:ipv6) %>
- |
-
- <%= t(:interfaces) %>
- |
-
-
-
- <% @registrar.white_ips.each do |x| %>
-
-
- <% if x.ipv4.present? %>
- <%= link_to(x.ipv4, [:admin, @registrar, x]) %>
- <% end %>
- |
-
- <% if x.ipv6.present? %>
- <%= link_to(x.ipv6, [:admin, @registrar, x]) %>
- <% end %>
- |
-
- <%= x.interfaces.join(', ').upcase %>
- |
-
- <% end %>
-
-
-
-
+ <%= render 'white_ips', registrar: @registrar %>
diff --git a/app/views/admin/white_ips/new.haml b/app/views/admin/white_ips/new.haml
index 99150a871..220599d2a 100644
--- a/app/views/admin/white_ips/new.haml
+++ b/app/views/admin/white_ips/new.haml
@@ -1,5 +1,5 @@
- content_for :actions do
= link_to(t(:back_to_registrar), admin_registrar_path(@registrar), class: 'btn btn-default')
-= render 'shared/title', name: t(:create_new_white_ip)
+= render 'shared/title', name: t('.header')
= render 'form'
diff --git a/app/views/admin/white_ips/show.haml b/app/views/admin/white_ips/show.haml
index 33688d9fe..2ec354aa4 100644
--- a/app/views/admin/white_ips/show.haml
+++ b/app/views/admin/white_ips/show.haml
@@ -14,11 +14,11 @@
%dt= t(:registrar_name)
%dd= link_to(@registrar, [:admin, @registrar])
- %dt= t(:ipv4)
+ %dt= WhiteIp.human_attribute_name :ipv4
%dd= @white_ip.ipv4
- %dt= t(:ipv6)
+ %dt= WhiteIp.human_attribute_name :ipv6
%dd= @white_ip.ipv6
- %dt= t(:interfaces)
+ %dt= WhiteIp.human_attribute_name :interfaces
%dd= @white_ip.interfaces.join(', ').upcase
diff --git a/app/views/registrant/registrars/index.haml b/app/views/registrant/registrars/index.haml
index 0489bcf52..03bd5a02a 100644
--- a/app/views/registrant/registrars/index.haml
+++ b/app/views/registrant/registrars/index.haml
@@ -10,7 +10,7 @@
%th{class: 'col-xs-6'}
= sort_link(@q, 'name')
%th{class: 'col-xs-6'}
- = sort_link(@q, 'reg_no', t(:reg_no))
+ = sort_link(@q, 'reg_no', Registrar.human_attribute_name(:reg_no))
%tbody
- @registrars.each do |x|
%tr
diff --git a/app/views/registrant/registrars/show.haml b/app/views/registrant/registrars/show.haml
index e0da73ee3..678e387de 100644
--- a/app/views/registrant/registrars/show.haml
+++ b/app/views/registrant/registrars/show.haml
@@ -16,10 +16,10 @@
%dt= t(:name)
%dd= @registrar.name
- %dt= t(:reg_no)
+ %dt= Registrar.human_attribute_name :reg_no
%dd= @registrar.reg_no
- %dt= t(:vat_no)
+ %dt= Registrar.human_attribute_name :vat_no
%dd= @registrar.vat_no
%dt= t(:id)
diff --git a/app/views/registrar/invoices/partials/_details.haml b/app/views/registrar/invoices/partials/_details.haml
index 1375c76f8..69248b457 100644
--- a/app/views/registrar/invoices/partials/_details.haml
+++ b/app/views/registrar/invoices/partials/_details.haml
@@ -32,5 +32,5 @@
%dt= t(:description)
%dd=@invoice.description
- %dt= t(:reference_no)
+ %dt= Invoice.human_attribute_name :reference_no
%dd= @invoice.reference_no
diff --git a/app/views/registrar/invoices/partials/_seller.haml b/app/views/registrar/invoices/partials/_seller.haml
index 0008c2f13..30f27bcef 100644
--- a/app/views/registrar/invoices/partials/_seller.haml
+++ b/app/views/registrar/invoices/partials/_seller.haml
@@ -4,7 +4,7 @@
%dt= t(:name)
%dd= @invoice.seller_name
- %dt= t(:reg_no)
+ %dt= Registrar.human_attribute_name :reg_no
%dd= @invoice.seller_reg_no
%dt= t(:iban)
@@ -16,7 +16,7 @@
%dt= t(:swift)
%dd= @invoice.seller_swift
- %dt= t(:vat_no)
+ %dt= Registrar.human_attribute_name :vat_no
%dd= @invoice.seller_vat_no
%dt= t(:address)
diff --git a/app/views/registrar/invoices/pdf.haml b/app/views/registrar/invoices/pdf.haml
index a74254a2a..c3f5fba75 100644
--- a/app/views/registrar/invoices/pdf.haml
+++ b/app/views/registrar/invoices/pdf.haml
@@ -182,7 +182,7 @@
%dt= t(:description)
%dd=@invoice.description
- %dt= t(:reference_no)
+ %dt= Invoice.human_attribute_name :reference_no
%dd= @invoice.reference_no
.col-md-6.right
@@ -261,7 +261,7 @@
%br
= "#{t('reg_no')} #{@invoice.seller_reg_no}"
%br
- = "#{t('vat_no')} #{@invoice.seller_vat_no}"
+ = "#{Registrar.human_attribute_name :vat_no} #{@invoice.seller_vat_no}"
.col-md-3.left
= @invoice.seller_phone
diff --git a/config/locales/admin/registrars.en.yml b/config/locales/admin/registrars.en.yml
index 3d269f64b..9acfca542 100644
--- a/config/locales/admin/registrars.en.yml
+++ b/config/locales/admin/registrars.en.yml
@@ -2,23 +2,31 @@ en:
admin:
registrars:
index:
+ header: Registrars
new_btn: New registrar
- show:
- new_api_use_btn: New API user
- active: Active
- api_users: API users
+ new:
+ header: New registrar
- preferences:
- header: Preferences
+ show:
+ edit_btn: Edit
+ delete_btn: Delete
+ delete_btn_confirm: Are you sure you want delete registrar?
+
+ edit:
+ header: Edit registrar
+
+ billing:
+ header: Billing
create:
created: Registrar has been successfully created
- not_created: Unable to create registrar
update:
updated: Registrar has been successfully updated
- not_updated: Unable to update registrar
+
+ destroy:
+ deleted: Registrar has been successfully deleted
form:
misc: Miscellaneous
@@ -30,3 +38,20 @@ en:
preferences:
header: Preferences
+
+ details:
+ header: Details
+
+ contacts:
+ header: Contacts
+
+ preferences:
+ header: Preferences
+
+ users:
+ header: API Users
+ new_btn: New API user
+
+ white_ips:
+ header: Whitelisted IPs
+ new_btn: New whitelisted IP
diff --git a/config/locales/admin/white_ips.en.yml b/config/locales/admin/white_ips.en.yml
new file mode 100644
index 000000000..b42db4cff
--- /dev/null
+++ b/config/locales/admin/white_ips.en.yml
@@ -0,0 +1,5 @@
+en:
+ admin:
+ white_ips:
+ new:
+ header: New whitelisted IP
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6366faca0..1e65f7e29 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -197,15 +197,11 @@ en:
alg: 'Algorithm'
public_key: 'Public key'
registrar:
- billing_email: 'Billing e-mail'
phone: 'Contact phone'
email: 'Contact e-mail'
state: 'State / Province'
deposit:
amount: 'Amount'
- white_ip:
- ipv4: 'IPv4'
- ipv6: 'IPv6'
errors:
messages:
@@ -302,7 +298,6 @@ en:
reg_no: 'Reg. no'
status: 'Status'
contact: 'Contact'
- credit_balance: 'Credit balance'
starting_balance: 'Starting balance'
destroyed: 'Destroyed'
@@ -313,13 +308,7 @@ en:
edit_statuses: 'Edit statuses'
history: 'History'
- new_registrar: 'New registrar'
- registrar_details: 'Registrar details'
- vat_no: 'VAT no'
- edit_registrar: 'Edit registrar'
back_to_registrar: 'Back to registrar'
- registrar_deleted: 'Registrar deleted'
- failed_to_delete_registrar: 'Failed to delete registrar'
users: 'Users'
user_details: 'User details'
@@ -393,7 +382,6 @@ en:
choose: 'Choose...'
created_before: 'Created before'
created_after: 'Created after'
- billing_email: 'Billing e-mail'
contact_phone: 'Contact phone'
contact_email: 'Contact e-mail'
address_help: 'Street name, house no - apartment no, city, county, country, zip'
@@ -584,7 +572,6 @@ en:
queried_at: 'Queried at'
import_file_path: 'Import file path'
bank_code: 'Bank code'
- reference_no: 'Reference no'
currency: 'Currency'
buyer_name: 'Buyer name'
buyer_iban: 'Buyer IBAN'
@@ -649,7 +636,6 @@ en:
due_date_until: 'Due date until'
minimum_total: 'Minimum total'
maximum_total: 'Maximum total'
- forbidden_code: 'is forbidden to use'
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'
@@ -662,8 +648,6 @@ en:
not_valid_domain_verification_body: This could mean your verification has been expired or done already.
Please contact us if you think something is wrong.
upload_crt: 'Upload CRT'
crt_or_csr_must_be_present: 'CRT or CSR must be present'
- white_ips: 'White IP-s'
- create_new_white_ip: 'Create new white IP'
ipv4_or_ipv6_must_be_present: 'IPv4 or IPv6 must be present'
white_ip: 'White IP'
edit_white_ip: 'Edit white IP'
@@ -751,7 +735,6 @@ en:
failure: "It was not saved"
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
welcome_to_eis_registrar_portal: 'Welcome to EIS Registrar portal'
- interfaces: 'Interfaces'
next: 'Next'
previous: 'Previous'
personal_domain_verification_url: 'Personal domain verification url'
@@ -777,3 +760,8 @@ en:
delimiter: " "
precision: 2
unit: €
+
+ attributes:
+ vat_no: VAT number
+ ipv4: IPv4
+ ipv6: IPv6
diff --git a/config/locales/registrars.en.yml b/config/locales/registrars.en.yml
new file mode 100644
index 000000000..60cb9d5c5
--- /dev/null
+++ b/config/locales/registrars.en.yml
@@ -0,0 +1,8 @@
+en:
+ activerecord:
+ errors:
+ models:
+ registrar:
+ attributes:
+ code:
+ forbidden: is forbidden
diff --git a/config/routes.rb b/config/routes.rb
index 77f856c8f..9caeef4a2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -97,7 +97,6 @@ Rails.application.routes.draw do
get 'pay/go/:bank' => 'payments#pay', as: 'payment_with'
end
- # REGISTRANT ROUTES
namespace :registrant do
root 'domains#index'
@@ -111,17 +110,6 @@ Rails.application.routes.draw do
end
end
- # resources :invoices do
- # member do
- # get 'download_pdf'
- # match 'forward', via: [:post, :get]
- # patch 'cancel'
- # end
- # end
-
- # resources :deposits
- # resources :account_activities
-
resources :domain_update_confirms
resources :domain_delete_confirms
@@ -150,8 +138,6 @@ Rails.application.routes.draw do
end
resources :registrars do
- resources :api_users
- resources :white_ips
collection do
get :search
end
diff --git a/db/migrate/20180309053424_add_registrars_unique_constraints.rb b/db/migrate/20180309053424_add_registrars_unique_constraints.rb
new file mode 100644
index 000000000..fb3455896
--- /dev/null
+++ b/db/migrate/20180309053424_add_registrars_unique_constraints.rb
@@ -0,0 +1,17 @@
+class AddRegistrarsUniqueConstraints < ActiveRecord::Migration
+ def up
+ execute <<-SQL
+ ALTER TABLE registrars ADD CONSTRAINT unique_name UNIQUE (name);
+ ALTER TABLE registrars ADD CONSTRAINT unique_reference_no UNIQUE (reference_no);
+ ALTER TABLE registrars ADD CONSTRAINT unique_code UNIQUE (code);
+ SQL
+ end
+
+ def down
+ execute <<-SQL
+ ALTER TABLE registrars DROP CONSTRAINT unique_name;
+ ALTER TABLE registrars DROP CONSTRAINT unique_reference_no;
+ ALTER TABLE registrars DROP CONSTRAINT unique_code;
+ SQL
+ end
+end
diff --git a/db/migrate/20180309053921_remove_registrars_indexes.rb b/db/migrate/20180309053921_remove_registrars_indexes.rb
new file mode 100644
index 000000000..0613d9fc6
--- /dev/null
+++ b/db/migrate/20180309053921_remove_registrars_indexes.rb
@@ -0,0 +1,6 @@
+class RemoveRegistrarsIndexes < ActiveRecord::Migration
+ def change
+ remove_index :registrars, name: :index_registrars_on_code
+ remove_index :registrars, name: :index_registrars_on_legacy_id
+ end
+end
diff --git a/db/migrate/20180309054510_add_registrars_not_null_constraints.rb b/db/migrate/20180309054510_add_registrars_not_null_constraints.rb
new file mode 100644
index 000000000..33d464356
--- /dev/null
+++ b/db/migrate/20180309054510_add_registrars_not_null_constraints.rb
@@ -0,0 +1,9 @@
+class AddRegistrarsNotNullConstraints < ActiveRecord::Migration
+ def change
+ change_column_null :registrars, :name, false
+ change_column_null :registrars, :reg_no, false
+ change_column_null :registrars, :country_code, false
+ change_column_null :registrars, :email, false
+ change_column_null :registrars, :code, false
+ end
+end
diff --git a/db/structure.sql b/db/structure.sql
index a9257ffa3..e95d61ae5 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -2136,22 +2136,22 @@ ALTER SEQUENCE registrant_verifications_id_seq OWNED BY registrant_verifications
CREATE TABLE registrars (
id integer NOT NULL,
- name character varying,
- reg_no character varying,
+ name character varying NOT NULL,
+ reg_no character varying NOT NULL,
vat_no character varying,
created_at timestamp without time zone,
updated_at timestamp without time zone,
creator_str character varying,
updator_str character varying,
phone character varying,
- email character varying,
+ email character varying NOT NULL,
billing_email character varying,
- country_code character varying,
+ country_code character varying NOT NULL,
state character varying,
city character varying,
street character varying,
zip character varying,
- code character varying,
+ code character varying NOT NULL,
website character varying,
accounting_customer_code character varying NOT NULL,
vat boolean,
@@ -3243,6 +3243,14 @@ ALTER TABLE ONLY settings
ADD CONSTRAINT settings_pkey PRIMARY KEY (id);
+--
+-- Name: unique_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
+--
+
+ALTER TABLE ONLY registrars
+ ADD CONSTRAINT unique_code UNIQUE (code);
+
+
--
-- Name: unique_contact_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
@@ -3251,6 +3259,30 @@ ALTER TABLE ONLY contacts
ADD CONSTRAINT unique_contact_code UNIQUE (code);
+--
+-- Name: unique_name; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
+--
+
+ALTER TABLE ONLY registrars
+ ADD CONSTRAINT unique_name UNIQUE (name);
+
+
+--
+-- Name: unique_reference_no; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
+--
+
+ALTER TABLE ONLY registrars
+ ADD CONSTRAINT unique_reference_no UNIQUE (reference_no);
+
+
+--
+-- Name: unique_reg_no; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
+--
+
+ALTER TABLE ONLY registrars
+ ADD CONSTRAINT unique_reg_no UNIQUE (reg_no);
+
+
--
-- Name: unique_session_id; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
@@ -3853,20 +3885,6 @@ CREATE INDEX index_registrant_verifications_on_created_at ON registrant_verifica
CREATE INDEX index_registrant_verifications_on_domain_id ON registrant_verifications USING btree (domain_id);
---
--- Name: index_registrars_on_code; Type: INDEX; Schema: public; Owner: -; Tablespace:
---
-
-CREATE INDEX index_registrars_on_code ON registrars USING btree (code);
-
-
---
--- Name: index_registrars_on_legacy_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
---
-
-CREATE INDEX index_registrars_on_legacy_id ON registrars USING btree (legacy_id);
-
-
--
-- Name: index_settings_on_thing_type_and_thing_id_and_var; Type: INDEX; Schema: public; Owner: -; Tablespace:
--
@@ -4679,3 +4697,9 @@ INSERT INTO schema_migrations (version) VALUES ('20180306183549');
INSERT INTO schema_migrations (version) VALUES ('20180308123240');
+INSERT INTO schema_migrations (version) VALUES ('20180309053424');
+
+INSERT INTO schema_migrations (version) VALUES ('20180309053921');
+
+INSERT INTO schema_migrations (version) VALUES ('20180309054510');
+
diff --git a/lib/tasks/import.rake b/lib/tasks/import.rake
index f26ad252f..9c439f7a7 100644
--- a/lib/tasks/import.rake
+++ b/lib/tasks/import.rake
@@ -100,7 +100,7 @@ namespace :import do
puts "-----> Generating reference numbers"
Registrar.all.each do |x|
- x.generate_iso_11649_reference_no
+ x.send(:generate_iso_11649_reference_no)
x.save(validate: false)
end
diff --git a/spec/models/registrar_spec.rb b/spec/models/registrar_spec.rb
deleted file mode 100644
index 4a8110d45..000000000
--- a/spec/models/registrar_spec.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-require 'rails_helper'
-
-describe Registrar do
- context 'with invalid attribute' do
- before :all do
- @registrar = Registrar.new
- end
-
- it 'is not valid' do
- @registrar.valid?
- @registrar.errors.full_messages.should include(*[
- 'Contact e-mail is missing',
- 'Country code is missing',
- 'Name is missing',
- 'Reg no is missing',
- 'Code is missing'
- ])
- end
-
- it 'returns an error with invalid email' do
- @registrar.email = 'bla'
- @registrar.billing_email = 'bla'
-
- @registrar.valid?
- @registrar.errors[:email].should == ['is invalid']
- @registrar.errors[:billing_email].should == ['is invalid']
- end
-
- it 'should not have valid code' do
- @registrar.code.should == nil
- end
-
- it 'should generate reference number' do
- @registrar.generate_iso_11649_reference_no
- @registrar.reference_no.should_not be_blank
- @registrar.reference_no.last(10).to_i.should_not == 0
- end
- end
-
- context 'with valid attributes' do
- before :all do
- @registrar = create(:registrar)
- end
-
- it 'should be valid' do
- @registrar.valid?
- @registrar.errors.full_messages.should match_array([])
- end
-
- it 'should be valid twice' do
- @registrar = create(:registrar)
- @registrar.valid?
- @registrar.errors.full_messages.should match_array([])
- end
-
- it 'should remove blank from code' do
- registrar = build(:registrar, code: 'with blank')
- registrar.valid?
- registrar.errors.full_messages.should match_array([
- ])
- registrar.code.should == 'WITHBLANK'
- end
-
- it 'should remove colon from code' do
- registrar = build(:registrar, code: 'with colon:and:blank')
- registrar.valid?
- registrar.errors.full_messages.should match_array([
- ])
- registrar.code.should == 'WITHCOLONANDBLANK'
- end
-
- it 'should allow dot in code' do
- registrar = build(:registrar, code: 'with.dot')
- registrar.valid?
- registrar.errors.full_messages.should match_array([
- ])
- registrar.code.should == 'WITH.DOT'
- end
-
- it 'should have one version' do
- with_versioning do
- @registrar.versions.should == []
- @registrar.name = 'New name'
- @registrar.save
- @registrar.errors.full_messages.should match_array([])
- @registrar.versions.size.should == 1
- end
- end
-
- it 'should return full address' do
- registrar = described_class.new(street: 'Street 999', city: 'Town', state: 'County', zip: 'Postal')
- registrar.address.should == 'Street 999, Town, County, Postal'
- end
-
- it 'should not be able to change code' do
- registrar = create(:registrar, code: 'TEST')
- registrar.code = 'new-code'
- expect(registrar.code).to eq('TEST')
- end
-
- it 'should be able to issue a prepayment invoice' do
- Setting.days_to_keep_invoices_active = 30
- create(:registrar, name: 'EIS', reg_no: '90010019')
- @registrar.issue_prepayment_invoice(200, 'add some money')
- @registrar.invoices.count.should == 1
- i = @registrar.invoices.first
- i.sum.should == BigDecimal.new('240.0')
- i.due_date.should be_within(0.1).of((Time.zone.now + 30.days).end_of_day)
- i.description.should == 'add some money'
- end
-
- it 'should not allaw to use CID as code for leagcy reasons' do
- registrar = build(:registrar, code: 'CID')
- registrar.valid?
- registrar.errors.full_messages.should == ['Code is forbidden to use']
- end
- end
-end
diff --git a/spec/requests/admin/registrars/update_spec.rb b/spec/requests/admin/registrars/update_spec.rb
deleted file mode 100644
index 7bffb99d0..000000000
--- a/spec/requests/admin/registrars/update_spec.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin registrar update' do
- before :example do
- sign_in_to_admin_area
- end
-
- it 'updates website' do
- registrar = create(:registrar, website: 'test')
-
- patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, website: 'new-website')
- registrar.reload
-
- expect(registrar.website).to eq('new-website')
- end
-
- it 'updates email' do
- registrar = create(:registrar, email: 'test@test.com')
-
- patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, email: 'new-test@test.com')
- registrar.reload
-
- expect(registrar.email).to eq('new-test@test.com')
- end
-
- it 'updates billing email' do
- registrar = create(:registrar, billing_email: 'test@test.com')
-
- patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, billing_email: 'new-test@test.com')
- registrar.reload
-
- expect(registrar.billing_email).to eq('new-test@test.com')
- end
-
- it 'redirects to :show' do
- registrar = create(:registrar)
-
- patch admin_registrar_path(registrar), { registrar: attributes_for(:registrar) }
-
- expect(response).to redirect_to admin_registrar_path(registrar)
- end
-end
diff --git a/spec/routing/admin/registrars_routing_spec.rb b/spec/routing/admin/registrars_routing_spec.rb
deleted file mode 100644
index 14ec765e9..000000000
--- a/spec/routing/admin/registrars_routing_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Admin::RegistrarsController do
- describe 'routing' do
- it 'routes to #index' do
- expect(get: '/admin/registrars').to route_to('admin/registrars#index')
- end
-
- it 'routes to #new' do
- expect(get: '/admin/registrars/new').to route_to('admin/registrars#new')
- end
-
- it 'routes to #show' do
- expect(get: '/admin/registrars/1').to route_to('admin/registrars#show', id: '1')
- end
-
- it 'routes to #edit' do
- expect(get: '/admin/registrars/1/edit').to route_to('admin/registrars#edit', id: '1')
- end
-
- it 'routes to #create' do
- expect(post: '/admin/registrars').to route_to('admin/registrars#create')
- end
-
- it 'routes to #update' do
- expect(patch: '/admin/registrars/1').to route_to('admin/registrars#update', id: '1')
- end
-
- it 'routes to #destroy' do
- expect(delete: '/admin/registrars/1').to route_to('admin/registrars#destroy', id: '1')
- end
- end
-end
diff --git a/spec/views/admin/registrars/_form.html.erb_spec.rb b/spec/views/admin/registrars/_form.html.erb_spec.rb
deleted file mode 100644
index 83b727a30..000000000
--- a/spec/views/admin/registrars/_form.html.erb_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin/registrars/_form' do
- let(:registrar) { build_stubbed(:registrar) }
-
- before :example do
- assign(:registrar, registrar)
- stub_template 'shared/_full_errors' => ''
-
- without_partial_double_verification do
- allow(view).to receive(:available_languages).and_return({})
- end
- end
-
- it 'has website' do
- render
- expect(rendered).to have_css('[name="registrar[website]"]')
- end
-end
diff --git a/spec/views/admin/registrars/show.haml_spec.rb b/spec/views/admin/registrars/show.haml_spec.rb
deleted file mode 100644
index 4def10e8c..000000000
--- a/spec/views/admin/registrars/show.haml_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'admin/registrars/show' do
- let(:registrar) { build_stubbed(:registrar, website: 'test website') }
-
- before :example do
- assign(:registrar, registrar)
- stub_template 'shared/_title' => ''
-
- without_partial_double_verification do
- allow(view).to receive(:available_languages).and_return({})
- end
- end
-
- it 'has website' do
- render
- expect(rendered).to have_text('test website')
- end
-end
diff --git a/test/controllers/admin/registrars/update_test.rb b/test/controllers/admin/registrars/update_test.rb
deleted file mode 100644
index 2c996ef44..000000000
--- a/test/controllers/admin/registrars/update_test.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'test_helper'
-
-class RegistrarsControllerTest < ActionDispatch::IntegrationTest
- def setup
- login_as users(:admin)
- @registrar = registrars(:bestnames)
- end
-
- def test_updates_website
- patch admin_registrar_path(@registrar), registrar: @registrar.attributes.merge(website: 'new.example.com')
- @registrar.reload
-
- assert_equal 'new.example.com', @registrar.website
- end
-
- def test_updates_email
- patch admin_registrar_path(@registrar), registrar: @registrar.attributes.merge(email: 'new@example.com')
- @registrar.reload
-
- assert_equal 'new@example.com', @registrar.email
- end
-
- def test_updates_billing_email
- patch admin_registrar_path(@registrar),
- registrar: @registrar.attributes.merge(billing_email: 'new-billing@example.com')
- @registrar.reload
-
- assert_equal 'new-billing@example.com', @registrar.billing_email
- end
-end
diff --git a/test/fixtures/accounts.yml b/test/fixtures/accounts.yml
index ea51ff7eb..a7060c249 100644
--- a/test/fixtures/accounts.yml
+++ b/test/fixtures/accounts.yml
@@ -3,3 +3,9 @@ cash:
balance: 100
currency: EUR
registrar: bestnames
+
+not_in_use_cash:
+ account_type: cash
+ balance: 0
+ currency: EUR
+ registrar: not_in_use
diff --git a/test/fixtures/registrars.yml b/test/fixtures/registrars.yml
index 0026f323b..b0cc371a7 100644
--- a/test/fixtures/registrars.yml
+++ b/test/fixtures/registrars.yml
@@ -3,6 +3,10 @@ bestnames:
reg_no: 1234
code: bestnames
email: info@bestnames.test
+ street: Main Street
+ zip: 12345
+ city: New York
+ state: New York
country_code: US
accounting_customer_code: bestnames
language: en
@@ -16,3 +20,12 @@ goodnames:
country_code: US
accounting_customer_code: goodnames
language: en
+
+not_in_use:
+ name: any
+ reg_no: any
+ code: any
+ email: any@example.com
+ country_code: US
+ accounting_customer_code: any
+ language: en
diff --git a/test/integration/admin/registrars/delete_test.rb b/test/integration/admin/registrars/delete_test.rb
new file mode 100644
index 000000000..34eb142bf
--- /dev/null
+++ b/test/integration/admin/registrars/delete_test.rb
@@ -0,0 +1,30 @@
+require 'test_helper'
+
+class AdminAreaDeleteRegistrarTest < ActionDispatch::IntegrationTest
+ def setup
+ login_as users(:admin)
+ end
+
+ def test_can_be_deleted_when_not_in_use
+ visit admin_registrar_url(registrars(:not_in_use))
+
+ assert_difference 'Registrar.count', -1 do
+ click_link_or_button 'Delete'
+ end
+
+ assert_current_path admin_registrars_path
+ assert_text 'Registrar has been successfully deleted'
+ end
+
+ def test_cannot_be_deleted_when_in_use
+ registrar = registrars(:bestnames)
+ visit admin_registrar_url(registrar)
+
+ assert_no_difference 'Registrar.count' do
+ click_link_or_button 'Delete'
+ end
+
+ assert_current_path admin_registrar_path(registrar)
+ assert_text 'Cannot delete record because dependent domains exist'
+ end
+end
diff --git a/test/integration/admin/registrars/edit_registrar_test.rb b/test/integration/admin/registrars/edit_registrar_test.rb
deleted file mode 100644
index ada794032..000000000
--- a/test/integration/admin/registrars/edit_registrar_test.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'test_helper'
-
-class EditRegistrarTest < ActionDispatch::IntegrationTest
- def setup
- login_as users(:admin)
- @registrar = registrars(:bestnames)
- end
-
- def test_updates_registrar
- visit admin_registrar_path(@registrar)
- click_link_or_button 'Edit'
- click_link_or_button 'Update registrar'
-
- assert_current_path admin_registrar_path(@registrar)
- assert_text 'Registrar has been successfully updated'
- end
-end
diff --git a/test/integration/admin/registrars/edit_test.rb b/test/integration/admin/registrars/edit_test.rb
new file mode 100644
index 000000000..af420b179
--- /dev/null
+++ b/test/integration/admin/registrars/edit_test.rb
@@ -0,0 +1,69 @@
+require 'test_helper'
+
+class AdminAreaEditRegistrarTest < ActionDispatch::IntegrationTest
+ def setup
+ login_as users(:admin)
+ @registrar = registrars(:bestnames)
+ end
+
+ def test_attributes_update
+ visit admin_registrar_path(@registrar)
+ click_link_or_button 'Edit'
+
+ fill_in 'Name', with: 'new name'
+ fill_in 'Reg no', with: '4727673'
+ fill_in 'Contact phone', with: '2570937'
+ fill_in 'Website', with: 'http://new.example.com'
+ fill_in 'Contact e-mail', with: 'new@example.com'
+
+ fill_in 'Street', with: 'new street'
+ fill_in 'Zip', with: 'new zip'
+ fill_in 'City', with: 'new city'
+ fill_in 'State / Province', with: 'new state'
+ select 'Germany', from: 'Country'
+
+ fill_in 'VAT number', with: '2386449'
+ fill_in 'Accounting customer code', with: '866477'
+ fill_in 'Billing email', with: 'new-billing@example.com'
+
+ select 'Estonian', from: 'Language'
+ click_link_or_button 'Update registrar'
+
+ @registrar.reload
+ assert_equal 'new name', @registrar.name
+ assert_equal '4727673', @registrar.reg_no
+ assert_equal '2570937', @registrar.phone
+ assert_equal 'http://new.example.com', @registrar.website
+ assert_equal 'new@example.com', @registrar.email
+
+ assert_equal 'new street', @registrar.street
+ assert_equal 'new zip', @registrar.zip
+ assert_equal 'new city', @registrar.city
+ assert_equal 'new state', @registrar.state
+ assert_equal Country.new('DE'), @registrar.country
+
+ assert_equal '2386449', @registrar.vat_no
+ assert_equal '866477', @registrar.accounting_customer_code
+ assert_equal 'new-billing@example.com', @registrar.billing_email
+
+ assert_equal 'et', @registrar.language
+ assert_current_path admin_registrar_path(@registrar)
+ assert_text 'Registrar has been successfully updated'
+ end
+
+ def test_code_cannot_be_changed
+ visit admin_registrar_path(@registrar)
+ click_link_or_button 'Edit'
+ assert_no_field 'Code'
+ end
+
+ def test_fails_gracefully
+ visit admin_registrar_path(@registrar)
+ click_link_or_button 'Edit'
+ fill_in 'Name', with: 'Good Names'
+ click_link_or_button 'Update registrar'
+
+ assert_field 'Name', with: 'Good Names'
+ assert_text 'Name has already been taken'
+ end
+end
diff --git a/test/integration/admin/registrars/new_registrar_test.rb b/test/integration/admin/registrars/new_registrar_test.rb
deleted file mode 100644
index 33deea9e8..000000000
--- a/test/integration/admin/registrars/new_registrar_test.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'test_helper'
-
-class NewRegistrarTest < ActionDispatch::IntegrationTest
- def setup
- login_as users(:admin)
- end
-
- def test_creates_registrar
- visit admin_registrars_path
- click_link_or_button 'New registrar'
-
- fill_in 'registrar[name]', with: 'John Doe'
- fill_in 'registrar[reg_no]', with: '1234567'
- fill_in 'registrar[email]', with: 'test@test.com'
- fill_in 'registrar[code]', with: 'test'
- fill_in 'registrar[accounting_customer_code]', with: 'test'
- click_link_or_button 'Create registrar'
-
- assert_current_path admin_registrar_path(Registrar.last)
- assert_text 'Registrar has been successfully created'
- assert_text 'John Doe'
- end
-end
diff --git a/test/integration/admin/registrars/new_test.rb b/test/integration/admin/registrars/new_test.rb
new file mode 100644
index 000000000..61a7a43be
--- /dev/null
+++ b/test/integration/admin/registrars/new_test.rb
@@ -0,0 +1,49 @@
+require 'test_helper'
+
+class AdminAreaNewRegistrarTest < ActionDispatch::IntegrationTest
+ def setup
+ login_as users(:admin)
+ end
+
+ def test_new_registrar_creation_with_required_params
+ visit admin_registrars_url
+ click_link_or_button 'New registrar'
+
+ fill_in 'Name', with: 'Brand new names'
+ fill_in 'Reg no', with: '55555555'
+ fill_in 'Contact e-mail', with: 'test@example.com'
+ fill_in 'Accounting customer code', with: 'test'
+ fill_in 'Code', with: 'test'
+
+ assert_difference 'Registrar.count' do
+ click_link_or_button 'Create registrar'
+ end
+
+ assert_current_path admin_registrar_path(Registrar.last)
+ assert_text 'Registrar has been successfully created'
+ end
+
+ def test_fails_gracefully
+ visit admin_registrars_url
+ click_link_or_button 'New registrar'
+
+ fill_in 'Name', with: 'Best Names'
+ fill_in 'Reg no', with: '55555555'
+ fill_in 'Contact e-mail', with: 'test@example.com'
+ fill_in 'Accounting customer code', with: 'test'
+ fill_in 'Code', with: 'test'
+
+ assert_no_difference 'Registrar.count' do
+ click_link_or_button 'Create registrar'
+ end
+ assert_field 'Name', with: 'Best Names'
+ assert_text 'Name has already been taken'
+ end
+
+ def test_pre_populated_default_language
+ Setting.default_language = 'en'
+ visit admin_registrars_url
+ click_link_or_button 'New registrar'
+ assert_field 'Language', with: 'en'
+ end
+end
diff --git a/test/models/registrar/code_test.rb b/test/models/registrar/code_test.rb
new file mode 100644
index 000000000..7b5188878
--- /dev/null
+++ b/test/models/registrar/code_test.rb
@@ -0,0 +1,29 @@
+require 'test_helper'
+
+class RegistrarCodeTest < ActiveSupport::TestCase
+ def setup
+ @registrar = registrars(:bestnames).dup
+ end
+
+ def test_registrar_is_invalid_without_code
+ @registrar.code = ''
+ assert @registrar.invalid?
+ end
+
+ def test_special_code_validation
+ @registrar.code = 'CID'
+ assert @registrar.invalid?
+ assert_includes @registrar.errors.full_messages, 'Code is forbidden'
+ end
+
+ def test_cannot_be_changed_once_registrar_is_created
+ registrar = registrars(:bestnames)
+ registrar.update!(code: 'new-code')
+ refute_equal 'new-code', registrar.code
+ end
+
+ def test_normalization
+ @registrar.code = 'with spaces:and:colon.'
+ assert_equal 'WITHSPACESANDCOLON.', @registrar.code
+ end
+end
diff --git a/test/models/registrar/delete_test.rb b/test/models/registrar/delete_test.rb
new file mode 100644
index 000000000..2020c76dc
--- /dev/null
+++ b/test/models/registrar/delete_test.rb
@@ -0,0 +1,37 @@
+require 'test_helper'
+
+class DeleteRegistrarTest < ActiveSupport::TestCase
+ def setup
+ @registrar = registrars(:not_in_use)
+ end
+
+ def test_can_be_deleted_if_not_in_use
+ assert_difference 'Registrar.count', -1 do
+ @registrar.destroy
+ end
+ end
+
+ def test_cannot_be_deleted_if_has_at_least_one_user
+ users(:api_bestnames).update!(registrar: @registrar)
+
+ assert_no_difference 'Registrar.count' do
+ @registrar.destroy
+ end
+ end
+
+ def test_cannot_be_deleted_if_has_at_least_one_contact
+ contacts(:john).update!(registrar: @registrar)
+
+ assert_no_difference 'Registrar.count' do
+ @registrar.destroy
+ end
+ end
+
+ def test_cannot_be_deleted_if_has_at_least_one_domain
+ domains(:shop).update!(registrar: @registrar)
+
+ assert_no_difference 'Registrar.count' do
+ @registrar.destroy
+ end
+ end
+end
diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb
index 58a06b0ae..fda377d9b 100644
--- a/test/models/registrar_test.rb
+++ b/test/models/registrar_test.rb
@@ -9,21 +9,33 @@ class RegistrarTest < ActiveSupport::TestCase
assert @registrar.valid?
end
- def test_rejects_absent_accounting_customer_code
- @registrar.accounting_customer_code = nil
- @registrar.validate
+ def test_invalid_without_name
+ @registrar.name = ''
+ assert @registrar.invalid?
+ end
+
+ def test_invalid_without_reg_no
+ @registrar.reg_no = ''
+ assert @registrar.invalid?
+ end
+
+ def test_invalid_without_email
+ @registrar.email = ''
+ assert @registrar.invalid?
+ end
+
+ def test_invalid_without_accounting_customer_code
+ @registrar.accounting_customer_code = ''
assert @registrar.invalid?
end
def test_requires_country_code
- @registrar.country_code = nil
- @registrar.validate
+ @registrar.country_code = ''
assert @registrar.invalid?
end
- def test_requires_language
- @registrar.language = nil
- @registrar.validate
+ def test_invalid_without_language
+ @registrar.language = ''
assert @registrar.invalid?
end
@@ -38,4 +50,13 @@ class RegistrarTest < ActiveSupport::TestCase
registrar = Registrar.new(language: 'de')
assert_equal 'de', registrar.language
end
+
+ def test_full_address
+ assert_equal 'Main Street, New York, New York, 12345', @registrar.address
+ end
+
+ def test_reference_number_generation
+ @registrar.validate
+ refute_empty @registrar.reference_no
+ end
end
|