diff --git a/app/models/object_manager/attribute.rb b/app/models/object_manager/attribute.rb index 404b5b3d1..806b77055 100644 --- a/app/models/object_manager/attribute.rb +++ b/app/models/object_manager/attribute.rb @@ -678,7 +678,7 @@ to send no browser reload event, pass false =begin -where attributes are used by triggers, overviews or schedulers +where attributes are used in conditions result = ObjectManager::Attribute.attribute_to_references_hash @@ -696,22 +696,36 @@ where attributes are used by triggers, overviews or schedulers =end def self.attribute_to_references_hash - objects = Trigger.select(:name, :condition) + Overview.select(:name, :condition) + Job.select(:name, :condition) attribute_list = {} - objects.each do |item| - item.condition.each do |condition_key, _condition_attributes| - attribute_list[condition_key] ||= {} - attribute_list[condition_key][item.class.name] ||= [] - next if attribute_list[condition_key][item.class.name].include?(item.name) - attribute_list[condition_key][item.class.name].push item.name + attribute_to_references_hash_objects + .map { |elem| elem.select(:name, :condition) } + .flatten + .each do |item| + item.condition.each do |condition_key, _condition_attributes| + attribute_list[condition_key] ||= {} + attribute_list[condition_key][item.class.name] ||= [] + next if attribute_list[condition_key][item.class.name].include?(item.name) + + attribute_list[condition_key][item.class.name].push item.name + end end - end + attribute_list end =begin +models that may reference attributes + +=end + + def self.attribute_to_references_hash_objects + Models.all.keys.select { |elem| elem.include? ChecksConditionValidation } + end + +=begin + is certain attribute used by triggers, overviews or schedulers ObjectManager::Attribute.attribute_used_by_references?('Ticket', 'attribute_name') diff --git a/app/models/report/profile.rb b/app/models/report/profile.rb index 9f8cbc3f5..fc1e8d07a 100644 --- a/app/models/report/profile.rb +++ b/app/models/report/profile.rb @@ -2,6 +2,7 @@ class Report::Profile < ApplicationModel self.table_name = 'report_profiles' + include ChecksConditionValidation validates :name, presence: true store :condition diff --git a/spec/models/object_manager/attribute_spec.rb b/spec/models/object_manager/attribute_spec.rb index 4e71f5b58..03d040947 100644 --- a/spec/models/object_manager/attribute_spec.rb +++ b/spec/models/object_manager/attribute_spec.rb @@ -148,4 +148,12 @@ RSpec.describe ObjectManager::Attribute, type: :model do it { is_expected.to be_valid } end end + + describe 'Class methods:' do + describe '.attribute_to_references_hash_objects' do + it 'returns classes with conditions' do + expect(described_class.attribute_to_references_hash_objects).to match_array [Trigger, Overview, Job, Sla, Report::Profile ] + end + end + end end