From be75b79c85551fa97bd356178e7df85518a84088 Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Mon, 3 Oct 2016 14:51:18 +0300 Subject: [PATCH] Story#119627029 process history ids even if they are strings (cherry picked from commit 5cc603d) --- app/models/legal_document.rb | 12 +++++++++++- spec/models/legal_documents_spec.rb | 17 ++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/models/legal_document.rb b/app/models/legal_document.rb index 13fbdf049..e8139519a 100644 --- a/app/models/legal_document.rb +++ b/app/models/legal_document.rb @@ -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) diff --git a/spec/models/legal_documents_spec.rb b/spec/models/legal_documents_spec.rb index ac0379176..46922f869 100644 --- a/spec/models/legal_documents_spec.rb +++ b/spec/models/legal_documents_spec.rb @@ -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