From 7997d34aea8f31893a66477a13d954d6f1f84b86 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 10 Feb 2018 21:43:45 +0200 Subject: [PATCH] Bypass validation on contact transfers #701 --- app/models/concerns/contact/transferable.rb | 2 +- test/fixtures/contacts.yml | 6 ++++++ test/models/contact/contact_test.rb | 4 ++++ test/models/contact/contact_transfer_test.rb | 8 ++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/contact/transferable.rb b/app/models/concerns/contact/transferable.rb index e280adfae..8da98fc57 100644 --- a/app/models/concerns/contact/transferable.rb +++ b/app/models/concerns/contact/transferable.rb @@ -14,7 +14,7 @@ module Concerns::Contact::Transferable new_contact.regenerate_code new_contact.regenerate_auth_info new_contact.remove_address unless self.class.address_processing? - new_contact.save! + new_contact.save(validate: false) new_contact end diff --git a/test/fixtures/contacts.yml b/test/fixtures/contacts.yml index b59d9cba3..2a9898543 100644 --- a/test/fixtures/contacts.yml +++ b/test/fixtures/contacts.yml @@ -30,3 +30,9 @@ acme_ltd: ident_country_code: US code: acme-ltd-001 auth_info: 720b3c + +invalid: + name: any + code: any + auth_info: any + registrar: bestnames diff --git a/test/models/contact/contact_test.rb b/test/models/contact/contact_test.rb index aad044592..c4f26f4a3 100644 --- a/test/models/contact/contact_test.rb +++ b/test/models/contact/contact_test.rb @@ -8,4 +8,8 @@ class ContactTest < ActiveSupport::TestCase def test_validates assert @contact.valid? end + + def test_invalid_fixture_is_invalid + assert contacts(:invalid).invalid? + end end diff --git a/test/models/contact/contact_transfer_test.rb b/test/models/contact/contact_transfer_test.rb index ae5955230..6c403bb23 100644 --- a/test/models/contact/contact_transfer_test.rb +++ b/test/models/contact/contact_transfer_test.rb @@ -48,6 +48,14 @@ class ContactTransferTest < ActiveSupport::TestCase end end + def test_bypasses_validation + @contact = contacts(:invalid) + + assert_difference 'Contact.count' do + @contact.transfer(@new_registrar) + end + end + def test_changes_registrar new_contact = @contact.transfer(@new_registrar) assert_equal @new_registrar, new_contact.registrar