diff --git a/app/models/concerns/contact/transferable.rb b/app/models/concerns/contact/transferable.rb index 407922f25..987933a8d 100644 --- a/app/models/concerns/contact/transferable.rb +++ b/app/models/concerns/contact/transferable.rb @@ -7,7 +7,7 @@ module Concerns::Contact::Transferable end def transfer(new_registrar) - return identical(new_registrar) if identical_with_registrar?(new_registrar) + return identical(new_registrar) if identical(new_registrar) new_contact = self.dup new_contact.registrar = new_registrar @@ -23,13 +23,6 @@ module Concerns::Contact::Transferable protected - def identical_with_registrar?(registrar) - return false unless identical(registrar) - return true unless DomainContact.where(contact_id: id).any? - - false - end - def generate_auth_info self.auth_info = SecureRandom.hex(11) end diff --git a/test/integration/api/domain_transfers_test.rb b/test/integration/api/domain_transfers_test.rb index dac04bd2c..aabaeb728 100644 --- a/test/integration/api/domain_transfers_test.rb +++ b/test/integration/api/domain_transfers_test.rb @@ -64,7 +64,7 @@ class APIDomainTransfersTest < ApplicationIntegrationTest end def test_duplicates_registrant_admin_and_tech_contacts - assert_difference -> { @new_registrar.contacts.size }, 4 do + assert_difference -> { @new_registrar.contacts.size }, 3 do post '/repp/v1/domain_transfers', params: request_params, as: :json, headers: { 'HTTP_AUTHORIZATION' => http_auth_key } end @@ -73,7 +73,7 @@ class APIDomainTransfersTest < ApplicationIntegrationTest def test_reuses_identical_contact post '/repp/v1/domain_transfers', params: request_params, as: :json, headers: { 'HTTP_AUTHORIZATION' => http_auth_key } - assert_equal 2, @new_registrar.contacts.where(name: 'William').size + assert_equal 1, @new_registrar.contacts.where(name: 'William').size end def test_fails_if_domain_does_not_exist diff --git a/test/integration/epp/domain/transfer/request_test.rb b/test/integration/epp/domain/transfer/request_test.rb index 5b8dad6ad..c7a838ca6 100644 --- a/test/integration/epp/domain/transfer/request_test.rb +++ b/test/integration/epp/domain/transfer/request_test.rb @@ -59,7 +59,7 @@ class EppDomainTransferRequestTest < EppTestCase end def test_duplicates_registrant_admin_and_tech_contacts - assert_difference -> { @new_registrar.contacts.size }, 4 do + assert_difference -> { @new_registrar.contacts.size }, 3 do post epp_transfer_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_goodnames' } end @@ -68,7 +68,7 @@ class EppDomainTransferRequestTest < EppTestCase def test_reuses_identical_contact post epp_transfer_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_goodnames' } - assert_equal 2, @new_registrar.contacts.where(name: 'William').size + assert_equal 1, @new_registrar.contacts.where(name: 'William').size end def test_saves_legal_document diff --git a/test/models/contact/transfer_test.rb b/test/models/contact/transfer_test.rb index af51048aa..cc35cfdea 100644 --- a/test/models/contact/transfer_test.rb +++ b/test/models/contact/transfer_test.rb @@ -47,6 +47,11 @@ class ContactTransferTest < ActiveSupport::TestCase end end + def test_reuses_identical_contact + identical = contacts(:identical_to_william) + assert_equal identical, contacts(:william).transfer(@new_registrar) + end + def test_bypasses_validation @contact = contacts(:invalid) diff --git a/test/models/domain_transfer_test.rb b/test/models/domain_transfer_test.rb index a955f37a6..943fc2a0a 100644 --- a/test/models/domain_transfer_test.rb +++ b/test/models/domain_transfer_test.rb @@ -29,23 +29,4 @@ class DomainTransferTest < ActiveSupport::TestCase assert_equal id, notification.attached_obj_id assert_equal class_name, notification.attached_obj_type end - - def test_does_not_reuse_identical_contacts_on_transfer - # Create identical contact and assign it to domain - domain = @domain_transfer.domain - identical_contact = domain.contacts.first.transfer(domain.registrar) - - assert_equal 3, domain.domain_contacts.count - domain.domain_contacts.create!(contact: identical_contact, type: 'AdminDomainContact') - - assert_equal 4, domain.domain_contacts.count - - @domain_transfer.approve - @domain_transfer.reload - domain.reload - - assert @domain_transfer.approved? - assert_equal 4, domain.domain_contacts.count - assert_equal domain.registrar, @domain_transfer.new_registrar - end end