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 21, 2016
1 parent a763e97 commit d49c4f0
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 2 deletions.
11 changes: 10 additions & 1 deletion app/models/lookup_keys/lookup_key.rb
Expand Up @@ -21,13 +21,14 @@ class LookupKey < ActiveRecord::Base

alias_attribute :value, :default_value
before_validation :cast_default_value
after_validation :reset_override_params, :if => ->(key) { key.override_changed? && !key.override? }

validates :key, :presence => true
validates :validator_type, :inclusion => { :in => VALIDATOR_TYPES, :message => N_("invalid")}, :allow_blank => true, :allow_nil => true
validates :key_type, :inclusion => {:in => KEY_TYPES, :message => N_("invalid")}, :allow_blank => true, :allow_nil => true
validate :validate_default_value
validates_associated :lookup_values
validate :disable_merge_overrides, :disable_avoid_duplicates, :disable_merge_default
validate :disable_merge_overrides, :disable_avoid_duplicates, :disable_merge_default, :if => :override?

before_save :sanitize_path
attr_name :key
Expand Down Expand Up @@ -203,6 +204,14 @@ def cast_default_value
true
end

def reset_override_params
self.merge_overrides = false
self.avoid_duplicates = false
self.merge_default = false

true
end

def load_yaml_or_json(value)
return value unless value.is_a? String
begin
Expand Down
2 changes: 1 addition & 1 deletion config/environments/development.rb
Expand Up @@ -31,7 +31,7 @@
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
config.assets.debug = false

# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
Expand Down
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
18 changes: 18 additions & 0 deletions test/unit/lookup_key_test.rb
Expand Up @@ -376,6 +376,24 @@ 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)
override_params = [:merge_overrides, :merge_default, :avoid_duplicates]

override_params.each { |param| @key.send("#{param}=", true) }
@key.save

@key.override = false
@key.description = "Gregor Samsa"

assert @key.save
refute @key.errors.any?
override_params.each { |param| assert_equal false, @key.read_attribute(param) }
end

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

0 comments on commit d49c4f0

Please sign in to comment.