mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 21:54:48 +02:00
149 lines
No EOL
4 KiB
Ruby
149 lines
No EOL
4 KiB
Ruby
require 'test_helper'
|
|
|
|
class ContactTest < ActiveSupport::TestCase
|
|
setup do
|
|
@contact = contacts(:john)
|
|
end
|
|
|
|
def test_valid_fixture_is_valid
|
|
assert @contact.valid?, proc { @contact.errors.full_messages }
|
|
end
|
|
|
|
def test_invalid_fixture_is_invalid
|
|
assert contacts(:invalid).invalid?
|
|
end
|
|
|
|
def test_private_entity
|
|
assert_equal 'priv', Contact::PRIV
|
|
end
|
|
|
|
def test_legal_entity
|
|
assert_equal 'org', Contact::ORG
|
|
end
|
|
|
|
def test_invalid_without_email
|
|
@contact.email = ''
|
|
assert @contact.invalid?
|
|
end
|
|
|
|
def test_email_format_validation
|
|
@contact.email = 'invalid'
|
|
assert @contact.invalid?
|
|
|
|
@contact.email = 'test@bestmail.test'
|
|
assert @contact.valid?
|
|
end
|
|
|
|
def test_invalid_without_phone
|
|
@contact.email = ''
|
|
assert @contact.invalid?
|
|
end
|
|
|
|
def test_phone_format_validation
|
|
@contact.phone = '+123.'
|
|
assert @contact.invalid?
|
|
|
|
@contact.phone = '+123.4'
|
|
assert @contact.valid?
|
|
end
|
|
|
|
def test_address
|
|
address = Contact::Address.new('new street', '83746', 'new city', 'new state', 'EE')
|
|
@contact.address = address
|
|
@contact.save!
|
|
@contact.reload
|
|
|
|
assert_equal 'new street', @contact.street
|
|
assert_equal '83746', @contact.zip
|
|
assert_equal 'new city', @contact.city
|
|
assert_equal 'new state', @contact.state
|
|
assert_equal 'EE', @contact.country_code
|
|
assert_equal address, @contact.address
|
|
end
|
|
|
|
def test_returns_registrant_user_direct_contacts
|
|
assert_equal Contact::PRIV, @contact.ident_type
|
|
assert_equal '1234', @contact.ident
|
|
assert_equal 'US', @contact.ident_country_code
|
|
registrant_user = RegistrantUser.new(registrant_ident: 'US-1234')
|
|
|
|
registrant_user.stub(:companies, []) do
|
|
assert_equal [@contact], Contact.registrant_user_contacts(registrant_user)
|
|
assert_equal [@contact], Contact.registrant_user_direct_contacts(registrant_user)
|
|
end
|
|
end
|
|
|
|
def test_returns_registrant_user_indirect_contacts
|
|
@contact.update!(ident_type: Contact::ORG)
|
|
assert_equal '1234', @contact.ident
|
|
assert_equal 'US', @contact.ident_country_code
|
|
registrant_user = RegistrantUser.new(registrant_ident: 'US-1234')
|
|
|
|
registrant_user.stub(:companies, [OpenStruct.new(registration_number: '1234')]) do
|
|
assert_equal [@contact], Contact.registrant_user_contacts(registrant_user)
|
|
end
|
|
end
|
|
|
|
def test_contact_is_a_registrant
|
|
assert_equal @contact.becomes(Registrant), domains(:shop).registrant
|
|
assert @contact.registrant?
|
|
|
|
make_contact_free_of_domains_where_it_acts_as_a_registrant(@contact)
|
|
assert_not @contact.registrant?
|
|
end
|
|
|
|
def test_linked_when_in_use_as_registrant
|
|
Domain.update_all(registrant_id: @contact)
|
|
DomainContact.delete_all
|
|
|
|
assert @contact.linked?
|
|
end
|
|
|
|
def test_linked_when_in_use_as_domain_contact
|
|
Domain.update_all(registrant_id: contacts(:william))
|
|
DomainContact.update_all(contact_id: @contact)
|
|
|
|
assert @contact.linked?
|
|
end
|
|
|
|
def test_unlinked_when_not_in_use_as_either_registrant_or_domain_contact
|
|
contact = unlinked_contact
|
|
assert_not contact.linked?
|
|
end
|
|
|
|
def test_managed_when_identity_codes_match
|
|
contact = Contact.new(ident: '1234')
|
|
user = RegistrantUser.new(registrant_ident: 'US-1234')
|
|
assert contact.managed_by?(user)
|
|
end
|
|
|
|
def test_unmanaged_when_identity_codes_do_not_match
|
|
contact = Contact.new(ident: '1234')
|
|
user = RegistrantUser.new(registrant_ident: 'US-12345')
|
|
assert_not contact.managed_by?(user)
|
|
end
|
|
|
|
def test_deletable_when_not_linked
|
|
contact = unlinked_contact
|
|
assert contact.deletable?
|
|
end
|
|
|
|
def test_undeletable_when_linked
|
|
assert @contact.linked?
|
|
assert_not @contact.deletable?
|
|
end
|
|
|
|
private
|
|
|
|
def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact)
|
|
other_contact = contacts(:william)
|
|
assert_not_equal other_contact, contact
|
|
Domain.update_all(registrant_id: other_contact)
|
|
end
|
|
|
|
def unlinked_contact
|
|
Domain.update_all(registrant_id: contacts(:william))
|
|
DomainContact.delete_all
|
|
contacts(:john)
|
|
end
|
|
end |