Fixes #4086 - Custom sort on select returns "undefined method `merge' " for older objects.

This commit is contained in:
Rolf Schmidt 2022-05-17 19:19:09 +02:00
parent d095cd6612
commit e06d10978e
2 changed files with 48 additions and 0 deletions

View file

@ -0,0 +1,15 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Issue4086FixHistoricalOptions < ActiveRecord::Migration[5.0]
def change
# return if it's a new setup
return if !Setting.exists?(name: 'system_init_done')
ObjectManager::Attribute.find_each do |attribute|
next if !%r{^(multi|tree_)?select$}.match?(attribute.data_type)
attribute.data_option[:historical_options] = ObjectManager::Attribute.data_options_hash(attribute.data_option[:historical_options] || {})
attribute.save
end
end
end

View file

@ -0,0 +1,33 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
RSpec.describe Issue4086FixHistoricalOptions, type: :db_migration do
let(:expected) do
{
'Sonstiges' => 'Sonstiges',
'Hardware' => 'Hardware',
'Software' => 'Software',
}
end
let(:attribute) do
attribute = create(:object_manager_attribute_select)
attribute.data_option[:historical_options] = [
{ 'name' => 'Sonstiges', 'value' => 'Sonstiges' },
{ 'name' => 'Hardware', 'value' => 'Hardware' },
{ 'name' => 'Software', 'value' => 'Software' }
]
attribute.save
attribute
end
before do
attribute
end
it 'does fix the broken historical_options' do
migrate
expect(attribute.reload.data_option[:historical_options]).to eq(expected)
end
end