summaryrefslogtreecommitdiff
path: root/spec/lib/matchers.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/matchers.rb')
-rw-r--r--spec/lib/matchers.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/lib/matchers.rb b/spec/lib/matchers.rb
new file mode 100644
index 0000000..57a35e6
--- /dev/null
+++ b/spec/lib/matchers.rb
@@ -0,0 +1,30 @@
+module Matchers
+
+ class AutoRequireMatcher
+ def initialize(*expected)
+ @expected = expected
+ end
+
+ def matches?(resource)
+ resource_type = resource.class
+ configuration = resource_type.instance_variable_get(:@autorequires) || {}
+ @autorequires = configuration.inject([]) do |memo, (param, block)|
+ memo + resource.instance_eval(&block)
+ end
+ @autorequires.include?(@expected)
+ end
+ def failure_message_for_should
+ "expected resource autorequires (#{@autorequires.inspect}) to include #{@expected.inspect}"
+ end
+ def failure_message_for_should_not
+ "expected resource autorequires (#{@autorequires.inspect}) to not include #{@expected.inspect}"
+ end
+ end
+
+ # call-seq:
+ # autorequire :logical_volume, 'mylv'
+ def autorequire(type, name)
+ AutoRequireMatcher.new(type, name)
+ end
+
+end