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