Fix possible doubling of contact objects after race

This commit is contained in:
Alex Sherman 2020-06-22 15:03:48 +05:00
parent a1b39740e7
commit 2fdc487511
4 changed files with 2232 additions and 41 deletions

View file

@ -0,0 +1,25 @@
class AddUniqueConstraintsToDomainObjects < ActiveRecord::Migration[6.0]
def up
execute <<-SQL
alter table domain_contacts
add constraint uniq_contact_of_type_per_domain unique (domain_id, type, contact_id);
SQL
execute <<-SQL
alter table nameservers
add constraint uniq_hostname_per_domain unique (domain_id, hostname);
SQL
end
def down
execute <<-SQL
alter table domain_contacts
drop constraint if exists uniq_contact_of_type_per_domain;
SQL
execute <<-SQL
alter table nameservers
drop constraint if exists uniq_hostname_per_domain;
SQL
end
end

File diff suppressed because it is too large Load diff

View file

@ -177,7 +177,7 @@ class ContactTest < ActiveSupport::TestCase
def test_linked_when_in_use_as_domain_contact
Domain.update_all(registrant_id: contacts(:william).id)
DomainContact.update_all(contact_id: @contact.id)
DomainContact.first.update(contact_id: @contact.id)
assert @contact.linked?
end

View file

@ -137,9 +137,9 @@ class DomainTest < ActiveSupport::TestCase
contact = contacts(:john)
domain.admin_contacts << contact
assert_raise ActiveRecord::RecordNotUnique do
domain.admin_contacts << contact
assert domain.invalid?
end
end
def test_invalid_when_the_same_tech_contact_is_linked_twice
@ -147,9 +147,9 @@ class DomainTest < ActiveSupport::TestCase
contact = contacts(:john)
domain.tech_contacts << contact
assert_raise ActiveRecord::RecordNotUnique do
domain.tech_contacts << contact
assert domain.invalid?
end
end
def test_validates_name_server_count_when_name_servers_are_required