Revision e0e41840
Added by Ori Rabin over 8 years ago
app/helpers/lookup_keys_helper.rb | ||
---|---|---|
def lookup_key_with_diagnostic(obj, lookup_key, lookup_value)
|
||
value, matcher = value_matcher(obj, lookup_key)
|
||
inherited_value = lookup_key.value_before_type_cast(value)
|
||
effective_value = lookup_value.id.nil? ? inherited_value.to_s : lookup_value.value_before_type_cast.to_s
|
||
effective_value = lookup_value.lookup_key_id.nil? ? inherited_value.to_s : lookup_value.value_before_type_cast.to_s
|
||
warnings = lookup_key_warnings(lookup_key.required, effective_value.present?)
|
||
popover_value = lookup_key.hidden_value? ? lookup_key.hidden_value : inherited_value
|
||
|
app/views/puppetclasses/_class_parameters.html.erb | ||
---|---|---|
<% lookup_keys = overridable_lookup_keys(puppetclass, obj) %>
|
||
<% lookup_keys.each_with_index do |lookup_key, index| %>
|
||
<% lookup_value = lookup_value(obj, lookup_key) %>
|
||
<%
|
||
# LookupValue#match is generated automatically by Host#lookup_values_attributes=
|
||
# from the name, so don't present errors directly to the user. Any validation
|
||
# errors should also be visible against the Host#name field.
|
||
if lookup_value.errors[:match].any?
|
||
logger.debug("Ignoring #{lookup_value.inspect} match errors: #{lookup_value.errors[:match]}")
|
||
lookup_value.errors.delete(:match)
|
||
end
|
||
%>
|
||
<% overridden = lookup_key.overridden?(obj) %>
|
||
<% disabled = can_edit_params? && !overridden %>
|
||
<% error = lookup_value.errors %>
|
test/integration/host_test.rb | ||
---|---|---|
end
|
||
|
||
describe 'clone page' do
|
||
test 'clones lookup values' do
|
||
host = FactoryGirl.create(:host, :with_puppetclass)
|
||
lookup_key = FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param, :with_override,
|
||
:puppetclass => host.puppetclasses.first)
|
||
lookup_value = LookupValue.create(:value => 'abc', :match => host.lookup_value_matcher, :lookup_key_id => lookup_key.id)
|
||
|
||
visit clone_host_path(host)
|
||
assert page.has_link?('Parameters', :href => '#params')
|
||
click_link 'Parameters'
|
||
a = page.find("#host_lookup_values_attributes_#{lookup_key.id}_value")
|
||
assert_equal lookup_value.value, a.value
|
||
end
|
||
|
||
test 'shows no errors on lookup values' do
|
||
host = FactoryGirl.create(:host, :with_puppetclass)
|
||
FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param, :with_override,
|
||
... | ... | |
visit clone_host_path(host)
|
||
assert page.has_link?('Parameters', :href => '#params')
|
||
click_link 'Parameters'
|
||
assert page.has_no_selector?('#params tr.has-error')
|
||
assert page.has_no_selector?('#params .has-error')
|
||
end
|
||
end
|
||
end
|
test/integration/hostgroup_test.rb | ||
---|---|---|
assert page.has_selector?('#params td.has-error')
|
||
end
|
||
|
||
test 'clones lookup values' do
|
||
group = FactoryGirl.create(:hostgroup, :with_puppetclass)
|
||
lookup_key = FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param, :with_override,
|
||
:puppetclass => group.puppetclasses.first)
|
||
lookup_value = LookupValue.create(:value => 'abc', :match => group.lookup_value_matcher, :lookup_key_id => lookup_key.id)
|
||
|
||
visit clone_hostgroup_path(group)
|
||
assert page.has_link?('Parameters', :href => '#params')
|
||
click_link 'Parameters'
|
||
a = page.find("#hostgroup_lookup_values_attributes_#{lookup_key.id}_value")
|
||
assert_equal lookup_value.value, a.value
|
||
end
|
||
|
||
test 'clone shows no errors on lookup values' do
|
||
group = FactoryGirl.create(:hostgroup, :with_puppetclass)
|
||
FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param, :with_override,
|
||
... | ... | |
visit clone_hostgroup_path(group)
|
||
assert page.has_link?('Parameters', :href => '#params')
|
||
click_link 'Parameters'
|
||
assert page.has_no_selector?('#params tr.has-error')
|
||
assert page.has_no_selector?('#params .has-error')
|
||
end
|
||
end
|
test/unit/host_test.rb | ||
---|---|---|
describe 'cloning' do
|
||
test 'relationships are copied' do
|
||
host = FactoryGirl.create(:host, :with_config_group, :with_puppetclass, :with_parameter)
|
||
key = FactoryGirl.create(:puppetclass_lookup_key, :as_smart_class_param, :key_type => 'string',
|
||
:override => true, :puppetclass => host.puppetclasses.first)
|
||
LookupValue.create(:value => 'abc', :match => host.lookup_value_matcher, :lookup_key_id => key.id)
|
||
copy = host.clone
|
||
assert_equal host.host_classes.map(&:puppetclass_id), copy.host_classes.map(&:puppetclass_id)
|
||
assert_equal host.host_parameters.map(&:name), copy.host_parameters.map(&:name)
|
||
assert_equal host.host_parameters.map(&:value), copy.host_parameters.map(&:value)
|
||
assert_equal host.host_config_groups.map(&:config_group_id), copy.host_config_groups.map(&:config_group_id)
|
||
assert_equal host.lookup_values.map(&:key), copy.lookup_values.map(&:key)
|
||
assert_equal host.lookup_values.map(&:value), copy.lookup_values.map(&:value)
|
||
end
|
||
|
||
test '#classes etc. on cloned host return the same' do
|
Also available in: Unified diff
Fixes #12752 - Host and hostgroup clone should copy smart class parameters overrides