summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorAndrew Parker <andy@puppetlabs.com>2014-02-03 11:13:54 -0800
committerAndrew Parker <andy@puppetlabs.com>2014-02-03 11:13:54 -0800
commit8bab12e9c9e2a18b023cac2b46c96e54739f96c0 (patch)
treea626500afdf1b5f0dcd33e92ea66c34fe46a87bb /spec/lib
parentbfc60db480921f1d735e33dc05198749709b698f (diff)
downloadpuppet-8bab12e9c9e2a18b023cac2b46c96e54739f96c0.tar.gz
(Maint) Extract re-usable resource matcher
Checking that catalogs have particular resources is useful. Let's make it easier. This also adds parameter matching to the resource matcher.
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/matchers/resource.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/lib/matchers/resource.rb b/spec/lib/matchers/resource.rb
new file mode 100644
index 000000000..3964a3e9e
--- /dev/null
+++ b/spec/lib/matchers/resource.rb
@@ -0,0 +1,35 @@
+module Matchers; module Resource
+ extend RSpec::Matchers::DSL
+
+ matcher :have_resource do |expected_resource|
+ @params = {}
+
+ match do |actual_catalog|
+ @mismatch = ""
+ if resource = actual_catalog.resource(expected_resource)
+ matched = true
+ failures = []
+ @params.each do |name, value|
+ if resource[name] != value
+ matched = false
+ failures << "expected #{name} to be '#{value}' but was '#{resource[name]}'"
+ end
+ end
+ @mismatch = failures.join("\n")
+
+ matched
+ else
+ @mismatch = "expected #{@actual.to_dot} to include #{@expected[0]}"
+ false
+ end
+ end
+
+ chain :with_parameter do |name, value|
+ @params[name] = value
+ end
+
+ def failure_message_for_should
+ @mismatch
+ end
+ end
+end; end