diff options
| author | Andrew Parker <andy@puppetlabs.com> | 2014-02-03 11:13:54 -0800 |
|---|---|---|
| committer | Andrew Parker <andy@puppetlabs.com> | 2014-02-03 11:13:54 -0800 |
| commit | 8bab12e9c9e2a18b023cac2b46c96e54739f96c0 (patch) | |
| tree | a626500afdf1b5f0dcd33e92ea66c34fe46a87bb /spec/lib | |
| parent | bfc60db480921f1d735e33dc05198749709b698f (diff) | |
| download | puppet-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.rb | 35 |
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 |
