Add tests for fixing ignored columns in versions

This commit is contained in:
Alex Sherman 2020-01-24 14:26:30 +05:00
parent 3d424e3dd0
commit e4352d121a
2 changed files with 30 additions and 2 deletions

View file

@ -61,8 +61,8 @@ module Versions
preceding(time + 1, true). preceding(time + 1, true).
select("distinct on (item_id) #{ver_klass.table_name}.*"). select("distinct on (item_id) #{ver_klass.table_name}.*").
map do |ver| map do |ver|
ignored_columns = ver.item_type.constantize&.ignored_columns valid_columns = ver.item_type.constantize&.column_names
o = new(ver.object&.except!(*ignored_columns)) o = new(ver.object&.slice(*valid_columns))
o.version_loader = ver o.version_loader = ver
ver.object_changes.to_h.each { |k, v| o.public_send("#{k}=", v[-1]) } ver.object_changes.to_h.each { |k, v| o.public_send("#{k}=", v[-1]) }
o o

View file

@ -0,0 +1,28 @@
require 'test_helper'
class VersionsTest < ActiveSupport::TestCase
def test_if_gets_all_versions_without_error_if_ignored_column_present
@nameserver = nameservers(:shop_ns1)
@nameserver.update(hostname: 'ns99.bestnames.test')
@ignored_column_title = Nameserver.ignored_columns.first
version = NameserverVersion.last
hash = version.object
hash[@ignored_column_title] = 123456
version.update(object: hash)
assert_nothing_raised do
Nameserver.all_versions_for([@nameserver.id], Time.zone.now)
end
end
def test_if_gets_all_versions_without_error_if_no_ignored_column
@account = accounts(:cash)
@account.update(currency: 'USD')
assert_nothing_raised do
Account.all_versions_for([@account.id], Time.zone.now)
end
end
end