diff --git a/app/models/contact.rb b/app/models/contact.rb index 364a5d39e..5701cce94 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -552,4 +552,8 @@ class Contact < ActiveRecord::Base def registrant? registrant_domains.any? end + + def deletable? + !linked? + end end diff --git a/test/fixtures/contacts.yml b/test/fixtures/contacts.yml index 15b82148f..ddfbfe93f 100644 --- a/test/fixtures/contacts.yml +++ b/test/fixtures/contacts.yml @@ -78,14 +78,6 @@ identical_to_william: auth_info: 5ab865 uuid: c0a191d5-3793-4f0b-8f85-491612d0293e -not_in_use: - name: Useless - email: useless@inbox.test - registrar: bestnames - code: not-in-use - auth_info: e75a2a - uuid: ca613cc5-a8dc-48c1-8d32-d3c6a0b6c952 - invalid: name: any code: invalid diff --git a/test/integration/epp/contact/delete/base_test.rb b/test/integration/epp/contact/delete/base_test.rb index 9d7b4b861..05e96d248 100644 --- a/test/integration/epp/contact/delete/base_test.rb +++ b/test/integration/epp/contact/delete/base_test.rb @@ -1,15 +1,11 @@ require 'test_helper' class EppContactDeleteBaseTest < ActionDispatch::IntegrationTest - def setup - @contact = contacts(:john) - end - - def test_deletes_a_contact_that_is_not_in_use - @contact = contacts(:not_in_use) + def test_deletes_contact + contact = deletable_contact # https://github.com/internetee/registry/issues/415 - @contact.update_columns(code: @contact.code.upcase) + contact.update_columns(code: contact.code.upcase) request_xml = <<-XML @@ -17,7 +13,7 @@ class EppContactDeleteBaseTest < ActionDispatch::IntegrationTest - not-in-use + #{contact.code} @@ -32,11 +28,12 @@ class EppContactDeleteBaseTest < ActionDispatch::IntegrationTest assert_equal 1, response_xml.css('result').size end - def test_contact_that_is_in_use_cannot_be_deleted - assert_equal 'john-001', @contact.code + def test_undeletable_cannot_be_deleted + contact = contacts(:john) + assert_not contact.deletable? # https://github.com/internetee/registry/issues/415 - @contact.update_columns(code: @contact.code.upcase) + contact.update_columns(code: contact.code.upcase) request_xml = <<-XML @@ -44,7 +41,7 @@ class EppContactDeleteBaseTest < ActionDispatch::IntegrationTest - john-001 + #{contact.code} @@ -57,4 +54,12 @@ class EppContactDeleteBaseTest < ActionDispatch::IntegrationTest response_xml = Nokogiri::XML(response.body) assert_equal '2305', response_xml.at_css('result')[:code] end + + private + + def deletable_contact + Domain.update_all(registrant_id: contacts(:william)) + DomainContact.delete_all + contacts(:john) + end end \ No newline at end of file diff --git a/test/models/contact/contact_test.rb b/test/models/contact/contact_test.rb index e9301280e..18c854190 100644 --- a/test/models/contact/contact_test.rb +++ b/test/models/contact/contact_test.rb @@ -44,6 +44,16 @@ class ContactTest < ActiveSupport::TestCase 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 unlinked_contact