mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 04:37:30 +02:00
Fix possible doubling of contact objects after race
This commit is contained in:
parent
a1b39740e7
commit
2fdc487511
4 changed files with 2232 additions and 41 deletions
|
@ -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
|
2234
db/structure.sql
2234
db/structure.sql
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
|
|
|
@ -137,9 +137,9 @@ class DomainTest < ActiveSupport::TestCase
|
|||
contact = contacts(:john)
|
||||
|
||||
domain.admin_contacts << contact
|
||||
domain.admin_contacts << contact
|
||||
|
||||
assert domain.invalid?
|
||||
assert_raise ActiveRecord::RecordNotUnique do
|
||||
domain.admin_contacts << contact
|
||||
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
|
||||
domain.tech_contacts << contact
|
||||
|
||||
assert domain.invalid?
|
||||
assert_raise ActiveRecord::RecordNotUnique do
|
||||
domain.tech_contacts << contact
|
||||
end
|
||||
end
|
||||
|
||||
def test_validates_name_server_count_when_name_servers_are_required
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue