I'm going to want to reuse this logic later so that I can quickly determine if a report has any differences.
Reviewed-by: Nick Lewis Signed-off-by: Matt Robinson <[email protected]> --- Local-branch: ticket/next/5866 app/controllers/reports_controller.rb | 9 +-------- app/models/report.rb | 12 ++++++++++++ spec/models/report_spec.rb | 23 ++++++++++++++++++++--- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 6b3f3c4..bd6f85a 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -41,14 +41,7 @@ class ReportsController < InheritedResources::Base @my_report = Report.find(params[:id]) @baseline_report = Report.find(params[:baseline_id]) @diff = @baseline_report.diff(@my_report) - @resource_statuses = {:failure => [], :pass => []} - @diff.each do |resource, differences| - if ! differences.empty? - @resource_statuses[:failure] << resource - else - @resource_statuses[:pass] << resource - end - end + @resource_statuses = Report.divide_diff_into_pass_and_fail(@diff) end def make_baseline diff --git a/app/models/report.rb b/app/models/report.rb index 9d669ec..858c657 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -73,6 +73,18 @@ class Report < ActiveRecord::Base diff_stuff end + def self.divide_diff_into_pass_and_fail(diff) + divided_diff = {:failure => [], :pass => []} + diff.each do |resource, differences| + if ! differences.empty? + divided_diff[:failure] << resource + else + divided_diff[:pass] << resource + end + end + divided_diff + end + def self.attribute_hash_from(report_hash) attribute_hash = report_hash.dup attribute_hash["logs_attributes"] = attribute_hash.delete("logs") diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 8bc6a58..776aa8f 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -172,24 +172,37 @@ HEREDOC it "should produce a diff with no changes for the same report twice" do report1 = generate_report(Time.now, "file", "foo") report2 = generate_report(1.week.ago, "file", "foo") - report1.diff(report2).should == { "File[/tmp/foo]" => {} } + report_diff = report1.diff(report2) + report_diff.should == { "File[/tmp/foo]" => {} } + Report.divide_diff_into_pass_and_fail(report_diff).should == { + :pass => ["File[/tmp/foo]"], + :failure => [] + } end it "should show diff for the different reports" do report1 = generate_report(Time.now, "file", "foo") report2 = generate_report(1.week.ago, "directory", "bar") - report1.diff(report2).should == { + report_diff = report1.diff(report2) + + report_diff.should == { 'File[/tmp/foo]' => { :ensure => [:file, :directory], :content => ["{md5}foo", "{md5}bar"], } } + Report.divide_diff_into_pass_and_fail(report_diff).should == { + :pass => [], + :failure => ["File[/tmp/foo]"] + } end it "should output nils appropriately for resources that are missing from either report" do report1 = generate_report(Time.now, "file", "foo", "/tmp/foo") report2 = generate_report(1.week.ago, "file", "foo", "/tmp/bar") - report1.diff(report2).should == { + report_diff = report1.diff(report2) + + report_diff.should == { 'File[/tmp/foo]' => { :ensure => [:file, nil], :content => ["{md5}foo", nil], @@ -199,6 +212,10 @@ HEREDOC :content => [nil, "{md5}foo"], } } + Report.divide_diff_into_pass_and_fail(report_diff).should == { + :pass => [], + :failure => ["File[/tmp/foo]", "File[/tmp/bar]"] + } end it "should output nils appropriately for properties that are missing from either report" do -- 1.7.3.1 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
