Story#119627029 process history ids even if they are strings

(cherry picked from commit 5cc603d)
This commit is contained in:
Vladimir Krylov 2016-10-03 14:51:18 +03:00
parent b8bc341bee
commit be75b79c85
2 changed files with 27 additions and 2 deletions

View file

@ -86,8 +86,18 @@ class LegalDocument < ActiveRecord::Base
contact_ids = DomainVersion.where(item_id: orig_legal.documentable_id).distinct.
pluck("object->>'registrant_id'", "object_changes->>'registrant_id'",
"children->>'tech_contacts'", "children->>'admin_contacts'",
"children->>'tech_contacts'", "children->>'admin_contacts'").flatten.uniq
contact_ids = contact_ids.map{|id| id.is_a?(Hash) ? id["id"] : id}.flatten.compact.uniq
contact_ids = contact_ids.map{|id|
case id
when Hash
id["id"]
when String
JSON.parse(id) rescue id.to_i
else
id
end
}.flatten.compact.uniq
LegalDocument.where(documentable_type: "Contact", documentable_id: contact_ids).
where(checksum: orig_legal.checksum).where.not(path: orig_legal.path).each do |new_legal|
unless modified.include?(orig_legal.id)

View file

@ -9,6 +9,7 @@ describe LegalDocument do
Fabricate(:zonefile_setting, origin: 'fie.ee')
Fabricate(:zonefile_setting, origin: 'com.ee')
LegalDocument.explicitly_write_file = true
PaperTrail.enabled = true
domain = Fabricate(:domain)
domain2 = Fabricate(:domain)
@ -19,6 +20,15 @@ describe LegalDocument do
domains << skipping_as_different = domain.legal_documents.create!(body: Base64.encode64('D' * 4.kilobytes))
domains << skipping_as_no_checksum = domain.legal_documents.create!(checksum: nil, body: Base64.encode64('S' * 4.kilobytes))
domains << skipping_as_no_checksum2 = domain.legal_documents.create!(checksum: "", body: Base64.encode64('S' * 4.kilobytes))
domains << registrant_copy = domain.registrant.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
domains << registrant_skipping_as_different = domain.registrant.legal_documents.create!(body: Base64.encode64('Q' * 4.kilobytes))
domains << tech_copy = domain.tech_contacts.first.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
domains << tech_skipping_as_different = domain.tech_contacts.first.legal_documents.create!(body: Base64.encode64('W' * 4.kilobytes))
domains << admin_copy = domain.admin_contacts.first.legal_documents.create!(body: Base64.encode64('S' * 4.kilobytes))
domains << admin_skipping_as_different = domain.admin_contacts.first.legal_documents.create!(body: Base64.encode64('E' * 4.kilobytes))
# writing nesting to history
domain.update(updated_at: Time.now)
domain2.update(updated_at: Time.now)
skipping_as_no_checksum.update_columns(checksum: nil)
skipping_as_no_checksum2.update_columns(checksum: "")
@ -37,8 +47,13 @@ describe LegalDocument do
skipping_as_no_checksum.path.should_not be(skipping_as_no_checksum2.path)
original.path.should_not == skipping_as_different.path
original.path.should_not == skipping_as_different_domain.path
original.path.should_not == registrant_skipping_as_different.path
original.path.should_not == tech_skipping_as_different.path
original.path.should_not == admin_skipping_as_different.path
original.path.should == copy.path
original.path.should == registrant_copy.path
original.path.should == tech_copy.path
original.path.should == admin_copy.path
end
end