From 49530adaaa302c4b4e3b9eefb05e9551503a0ba6 Mon Sep 17 00:00:00 2001 From: Markus Roberts Date: Mon, 21 Dec 2009 22:59:23 -0800 Subject: Fixing #2964 updated resources cannot be collected until they are exported twice This logic had a bug where it would not insert data if it had just been deleted. Signed-off-by: Jesse Wolfe --- lib/puppet/rails/resource.rb | 2 +- spec/unit/rails/resource.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/puppet/rails/resource.rb b/lib/puppet/rails/resource.rb index be28e377f..7b37a52bf 100644 --- a/lib/puppet/rails/resource.rb +++ b/lib/puppet/rails/resource.rb @@ -148,7 +148,7 @@ class Puppet::Rails::Resource < ActiveRecord::Base # Lastly, add any new parameters. catalog_params.each do |name, value| - next if db_params.include?(name) + next if db_params.include?(name) && ! db_params[name].find{ |val| deletions.include?( val["id"] ) } values = value.is_a?(Array) ? value : [value] values.each do |v| diff --git a/spec/unit/rails/resource.rb b/spec/unit/rails/resource.rb index 9e2ff8cd2..e9162b92e 100755 --- a/spec/unit/rails/resource.rb +++ b/spec/unit/rails/resource.rb @@ -84,4 +84,24 @@ describe "Puppet::Rails::Resource" do @resource.merge_parser_resource(@parser) end end + + describe "merge_parameters" do + it "should replace values that have changed" do + @resource = Puppet::Rails::Resource.new + @resource.params_list = [{"name" => "replace", "value" => 1, "id" => 100 }] + + Puppet::Rails::ParamValue.expects(:delete).with([100]) + param_values = stub "param_values" + param_values.expects(:build).with({:value=>nil, :param_name=>nil, :line=>{"replace"=>2}}) + @resource.stubs(:param_values).returns(param_values) + + Puppet::Rails::ParamName.stubs(:accumulate_by_name) + + merge_resource = stub "merge_resource" + merge_resource.expects(:line).returns({ "replace" => 2 }) + merge_resource.stubs(:each).yields([["replace", 2]]) + + @resource.merge_parameters(merge_resource) + end + end end -- cgit