Skip to content

Commit

Permalink
Fixes #15814 - Reset override params when override is off
Browse files Browse the repository at this point in the history
  • Loading branch information
David Davis committed Aug 17, 2016
1 parent 791fedd commit 446fc9a
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 0 deletions.
11 changes: 11 additions & 0 deletions app/models/lookup_keys/lookup_key.rb
Expand Up @@ -21,6 +21,7 @@ class LookupKey < ActiveRecord::Base

alias_attribute :value, :default_value
before_validation :cast_default_value
before_validation :reset_override_params

validates :key, :presence => true
validates :validator_type, :inclusion => { :in => VALIDATOR_TYPES, :message => N_("invalid")}, :allow_blank => true, :allow_nil => true
Expand Down Expand Up @@ -203,6 +204,16 @@ def cast_default_value
true
end

def reset_override_params
if override_changed? && !override?
self.merge_overrides = false
self.avoid_duplicates = false
self.merge_default = false
end

true
end

def load_yaml_or_json(value)
return value unless value.is_a? String
begin
Expand Down
4 changes: 4 additions & 0 deletions app/models/lookup_keys/puppetclass_lookup_key.rb
Expand Up @@ -41,6 +41,10 @@ def puppet?
def check_override_selected
return if (changed - ['description', 'override']).empty?
return if override?
return if !override? && override_changed? && (changed - ['merge_overrides',
'avoid_duplicates',
'merge_default',
'override']).empty?
errors.add(:override, _("must be true to edit the parameter"))
end
end
12 changes: 12 additions & 0 deletions db/migrate/20160817125655_reset_override_params.rb
@@ -0,0 +1,12 @@
class ResetOverrideParams < ActiveRecord::Migration
class LookupKey < ::ActiveRecord::Base
end

def up
LookupKey.where(override: false).update_all(
merge_overrides: false,
avoid_duplicates: false,
merge_default: false
)
end
end
14 changes: 14 additions & 0 deletions test/unit/lookup_key_test.rb
Expand Up @@ -376,6 +376,20 @@ def setup
end
end

test "override params are reset after override changes back to false" do
@key = FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param,
:override => true, :key_type => 'array',
:default_value => '[]', :puppetclass => puppetclasses(:one),
:use_puppet_default => true)

@key.merge_overrides = true
@key.save
@key.override = false

assert @key.save
refute @key.errors.any?
end

test "#overridden? works for unsaved hosts" do
key = FactoryGirl.create(:puppetclass_lookup_key)
host = FactoryGirl.build(:host)
Expand Down

0 comments on commit 446fc9a

Please sign in to comment.