Refactor registrars

- Reorganize views
- Improve database structure
- Use default translations
- Combine tests
This commit is contained in:
Artur Beljajev 2019-05-10 13:13:19 +03:00
parent 59e9b16dfa
commit efb63399b2
27 changed files with 287 additions and 353 deletions

View file

@ -3,11 +3,11 @@ bestnames:
reg_no: 1234
code: bestnames
email: info@bestnames.test
street: Main Street
zip: 12345
city: New York
state: New York
country_code: US
address_street: Main Street 1
address_zip: 1234
address_city: NY
address_state: NY State
address_country_code: US
accounting_customer_code: bestnames
language: en
billing_email: billing@bestnames.test
@ -19,18 +19,18 @@ goodnames:
reg_no: 12345
code: goodnames
email: info@goodnames.test
country_code: DE
address_country_code: US
vat_no: DE123456789
accounting_customer_code: goodnames
language: en
reference_no: 26
not_in_use:
name: any
name: Not in use
reg_no: any
code: any
email: any@example.com
country_code: US
address_country_code: US
vat_no: any
accounting_customer_code: any
language: en
@ -41,7 +41,7 @@ invalid:
reg_no: any
code: another
email: any
country_code: US
address_country_code: US
vat_no: any
accounting_customer_code: any
language: en

View file

@ -15,7 +15,7 @@ class RegistrarVATTest < ActiveSupport::TestCase
def test_apply_vat_rate_from_registry_when_registrar_is_local_vat_payer
Setting.registry_country_code = 'US'
@registrar.country_code = 'US'
@registrar.address_country_code = 'US'
Registry.instance.stub(:vat_rate, BigDecimal('5.5')) do
assert_equal BigDecimal('5.5'), @registrar.effective_vat_rate
@ -32,13 +32,13 @@ class RegistrarVATTest < ActiveSupport::TestCase
def test_apply_vat_rate_from_registrar_when_registrar_is_foreign_vat_payer
Setting.registry_country_code = 'US'
@registrar.country_code = 'DE'
@registrar.address_country_code = 'DE'
@registrar.vat_rate = BigDecimal('5.6')
assert_equal BigDecimal('5.6'), @registrar.effective_vat_rate
end
def test_require_vat_rate_when_registrar_is_foreign_vat_payer_and_vat_no_is_absent
@registrar.country_code = 'DE'
@registrar.address_country_code = 'DE'
@registrar.vat_no = ''
@registrar.vat_rate = ''
@ -50,7 +50,7 @@ class RegistrarVATTest < ActiveSupport::TestCase
end
def test_require_no_vat_rate_when_registrar_is_foreign_vat_payer_and_vat_no_is_present
@registrar.country_code = 'DE'
@registrar.address_country_code = 'DE'
@registrar.vat_no = 'valid'
@registrar.vat_rate = 1
@ -61,7 +61,7 @@ class RegistrarVATTest < ActiveSupport::TestCase
end
def test_vat_rate_validation
@registrar.country_code = 'DE'
@registrar.address_country_code = 'DE'
@registrar.vat_no = ''
@registrar.vat_rate = -1
@ -78,7 +78,7 @@ class RegistrarVATTest < ActiveSupport::TestCase
end
def test_serializes_and_deserializes_vat_rate
@registrar.country_code = 'DE'
@registrar.address_country_code = 'DE'
@registrar.vat_rate = BigDecimal('25.5')
@registrar.save!
@registrar.reload

View file

@ -5,8 +5,8 @@ class RegistrarTest < ActiveSupport::TestCase
@registrar = registrars(:bestnames)
end
def test_default_fixture_is_valid
assert @registrar.valid?, proc { @registrar.errors.full_messages }
def test_valid_registrar_is_valid
assert valid_registrar.valid?, proc { valid_registrar.errors.full_messages }
end
def test_invalid_fixture_is_invalid
@ -14,33 +14,33 @@ class RegistrarTest < ActiveSupport::TestCase
end
def test_invalid_without_name
@registrar.name = ''
assert @registrar.invalid?
registrar = valid_registrar
registrar.name = ''
assert registrar.invalid?
end
def test_invalid_without_reg_no
@registrar.reg_no = ''
assert @registrar.invalid?
registrar = valid_registrar
registrar.reg_no = ''
assert registrar.invalid?
end
def test_invalid_without_email
@registrar.email = ''
assert @registrar.invalid?
registrar = valid_registrar
registrar.email = ''
assert registrar.invalid?
end
def test_invalid_without_accounting_customer_code
@registrar.accounting_customer_code = ''
assert @registrar.invalid?
end
def test_invalid_without_country_code
@registrar.country_code = ''
assert @registrar.invalid?
registrar = valid_registrar
registrar.accounting_customer_code = ''
assert registrar.invalid?
end
def test_invalid_without_language
@registrar.language = ''
assert @registrar.invalid?
registrar = valid_registrar
registrar.language = ''
assert registrar.invalid?
end
def test_has_default_language
@ -56,7 +56,9 @@ class RegistrarTest < ActiveSupport::TestCase
end
def test_full_address
assert_equal 'Main Street, New York, New York, 12345', @registrar.address
registrar = Registrar.new(address_street: 'Main Street 1', address_zip: '1234',
address_city: 'NY', address_state: 'NY State')
assert_equal 'Main Street 1, NY, NY State, 1234', registrar.address
end
def test_validates_reference_number_format
@ -96,4 +98,10 @@ class RegistrarTest < ActiveSupport::TestCase
Setting.days_to_keep_invoices_active = @original_days_to_keep_invoices_active_setting
end
private
def valid_registrar
registrars(:bestnames)
end
end

View file

@ -4,6 +4,8 @@ class ContactVersionsTest < ApplicationSystemTestCase
def setup
super
@registrar = registrars(:bestnames)
create_contact_with_history
sign_in users(:admin)
end
@ -16,18 +18,13 @@ class ContactVersionsTest < ApplicationSystemTestCase
def create_contact_with_history
sql = <<-SQL.squish
INSERT INTO registrars (id, name, reg_no, email, country_code, code,
accounting_customer_code, language, reference_no)
VALUES (75, 'test_registrar', 'test123', 'test@test.com', 'EE', 'TEST123',
'test123', 'en', '1234');
INSERT INTO contacts (id, code, email, auth_info, registrar_id)
VALUES (75, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', 75);
VALUES (75, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', #{@registrar.id});
INSERT INTO log_contacts (item_type, item_id, event, whodunnit, object,
object_changes, created_at, session, children, ident_updated_at, uuid)
VALUES ('Contact', 75, 'update', '1-AdminUser',
'{"id": 75, "code": "test_code", "auth_info": "8b4d462aa04194ca78840a", "registrar_id": 75, "old_field": "value"}',
'{"id": 75, "code": "test_code", "auth_info": "8b4d462aa04194ca78840a", "registrar_id": #{@registrar.id}, "old_field": "value"}',
'{"other_made_up_field": "value"}',
'2018-04-23 15:50:48.113491', '2018-04-23 12:44:56',
'{"legal_documents":[null]}', null, null
@ -42,16 +39,20 @@ class ContactVersionsTest < ApplicationSystemTestCase
end
def test_removed_fields_are_not_causing_errors_in_index_view
assert_equal 'Best Names', @registrar.name
visit admin_contact_versions_path
assert_text 'test_registrar'
assert_text 'Best Names'
assert_text 'update 23.04.18, 18:50'
end
def test_removed_fields_are_not_causing_errors_in_details_view
assert_equal 'Best Names', @registrar.name
version_id = Contact.find(75).versions.last
visit admin_contact_version_path(version_id)
assert_text 'test_registrar'
assert_text 'Best Names'
assert_text '23.04.18, 18:50 update 1-AdminUser'
end
end
end

View file

@ -4,6 +4,8 @@ class DomainVersionsTest < ApplicationSystemTestCase
def setup
super
@registrar = registrars(:bestnames)
create_domain_with_history
sign_in users(:admin)
end
@ -16,22 +18,17 @@ class DomainVersionsTest < ApplicationSystemTestCase
def create_domain_with_history
sql = <<-SQL.squish
INSERT INTO registrars (id, name, reg_no, email, country_code, code,
accounting_customer_code, language, reference_no)
VALUES (54, 'test_registrar', 'test123', 'test@test.com', 'EE', 'TEST123',
'test123', 'en', '1234');
INSERT INTO contacts (id, code, email, auth_info, registrar_id)
VALUES (54, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', 54);
VALUES (54, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', #{@registrar.id});
INSERT INTO domains (id, registrar_id, valid_to, registrant_id,
transfer_code)
VALUES (54, 54, '2018-06-23T12:14:02.732+03:00', 54, 'transfer_code');
VALUES (54, #{@registrar.id}, '2018-06-23T12:14:02.732+03:00', 54, 'transfer_code');
INSERT INTO log_domains (item_type, item_id, event, whodunnit, object,
object_changes, created_at, session, children)
VALUES ('Domain', 54, 'update', '1-AdminUser',
'{"id": 54, "registrar_id": 54, "valid_to": "2018-07-23T12:14:05.583+03:00", "registrant_id": 54, "transfer_code": "transfer_code", "valid_from": "2017-07-23T12:14:05.583+03:00"}',
'{"id": 54, "registrar_id": #{@registrar.id}, "valid_to": "2018-07-23T12:14:05.583+03:00", "registrant_id": 54, "transfer_code": "transfer_code", "valid_from": "2017-07-23T12:14:05.583+03:00"}',
'{"foo": "bar", "other_made_up_field": "value"}',
'2018-04-23 15:50:48.113491', '2018-04-23 12:44:56',
'{"null_fracdmin_contacts":[108],"tech_contacts":[109],"nameservers":[],"dnskeys":[],"legal_documents":[null],"registrant":[1]}'
@ -45,17 +42,21 @@ class DomainVersionsTest < ApplicationSystemTestCase
end
def test_removed_fields_are_not_causing_errors_in_index_view
assert_equal 'Best Names', @registrar.name
visit admin_domain_versions_path
assert_text 'test_registrar'
assert_text 'test_registrar update 23.04.18, 18:50'
assert_text 'Best Names'
assert_text 'Best Names update 23.04.18, 18:50'
end
def test_removed_fields_are_not_causing_errors_in_details_view
assert_equal 'Best Names', @registrar.name
version_id = Domain.find(54).versions.last
visit admin_domain_version_path(version_id)
assert_text 'test_registrar'
assert_text 'Best Names'
assert_text '23.04.18, 18:50 update 1-AdminUser'
end
end
end

View file

@ -1,30 +0,0 @@
require 'test_helper'
class AdminAreaDeleteRegistrarTest < ApplicationSystemTestCase
setup do
sign_in 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

View file

@ -1,26 +0,0 @@
require 'test_helper'
class AdminAreaRegistrarDetailsTest < ApplicationSystemTestCase
include ActionView::Helpers::NumberHelper
setup do
sign_in users(:admin)
@registrar = registrars(:bestnames)
end
def test_registrar_details
@registrar.accounting_customer_code = 'US0001'
@registrar.vat_no = 'US12345'
@registrar.vat_rate = 5
@registrar.language = 'en'
@registrar.billing_email = 'billing@bestnames.test'
@registrar.save(validate: false)
visit admin_registrar_path(@registrar)
assert_text 'Accounting customer code US0001'
assert_text 'VAT number US12345'
assert_text 'VAT rate 5.0%'
assert_text 'Language English'
assert_text 'billing@bestnames.test'
end
end

View file

@ -1,69 +0,0 @@
require 'test_helper'
class AdminAreaEditRegistrarTest < ApplicationSystemTestCase
setup do
sign_in 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

View file

@ -1,50 +0,0 @@
require 'test_helper'
class AdminAreaNewRegistrarTest < ApplicationSystemTestCase
setup do
sign_in 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'
select 'United States', from: 'Country'
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

View file

@ -0,0 +1,84 @@
require 'test_helper'
class AdminRegistrarsSystemTest < ApplicationSystemTestCase
include ActionView::Helpers::NumberHelper
setup do
@registrar = registrars(:bestnames)
sign_in users(:admin)
end
def test_creates_new_registrar
assert_nil Registrar.find_by(name: 'New name')
visit admin_registrars_path
click_on 'New registrar'
fill_in 'Name', with: 'New name'
fill_in 'Reg no', with: '55555555'
fill_in 'Contact e-mail', with: 'any@registrar.test'
select 'United States', from: 'Country'
fill_in 'Accounting customer code', with: 'test'
fill_in 'Code', with: 'test'
click_on 'Create registrar'
assert_text 'Registrar has been successfully created'
assert_text 'New name'
end
def test_updates_registrar
assert_not_equal 'New name', @registrar.name
visit admin_registrar_path(@registrar)
click_link_or_button 'Edit'
fill_in 'Name', with: 'New name'
click_link_or_button 'Update registrar'
assert_text 'Registrar has been successfully updated'
assert_text 'New name'
end
def test_deletes_registrar
registrar = registrars(:not_in_use)
assert_equal 'Not in use', registrar.name
visit admin_registrar_path(registrar)
click_on 'Delete'
assert_text 'Registrar has been successfully deleted'
assert_no_text 'Not in use'
end
def test_registrar_cannot_be_deleted_when_in_use
visit admin_registrar_url(@registrar)
click_on 'Delete'
assert_text 'Cannot delete record because dependent domains exist'
end
def test_pre_populates_default_language_upon_creation
Setting.default_language = 'en'
visit new_admin_registrar_path
assert_field 'Language', with: 'en'
end
def test_code_cannot_be_edited
visit edit_admin_registrar_path(@registrar)
assert_no_field 'Code'
end
def test_shows_registrar_details
@registrar.accounting_customer_code = 'US0001'
@registrar.vat_no = 'US12345'
@registrar.vat_rate = 5
@registrar.language = 'en'
@registrar.billing_email = 'billing@bestnames.test'
@registrar.save(validate: false)
visit admin_registrar_path(@registrar)
assert_text 'Accounting customer code US0001'
assert_text 'VAT number US12345'
assert_text "VAT rate #{number_to_percentage(5, precision: 1)}"
assert_text 'Language English'
assert_text 'billing@bestnames.test'
end
end