summaryrefslogtreecommitdiff
path: root/spec/support
diff options
context:
space:
mode:
authorBruce Williams <bruce@codefluency.com>2010-03-17 23:54:02 -0700
committerBruce Williams <bruce@codefluency.com>2010-03-17 23:54:02 -0700
commit736c094145ff6f86d2bfdc8cecf32da8180d95fe (patch)
tree212fc4fef423537ad54c38a51e7c8e4a1522c2c1 /spec/support
parent532cfbb18195ba759574e91dc6bd360978045e75 (diff)
Further condense provider example group API, update Bazaar provider spec to use it.
Diffstat (limited to 'spec/support')
-rw-r--r--spec/support/resource_helpers.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/spec/support/resource_helpers.rb b/spec/support/resource_helpers.rb
index 8327ec0..00bf259 100644
--- a/spec/support/resource_helpers.rb
+++ b/spec/support/resource_helpers.rb
@@ -17,6 +17,34 @@ class ProviderExampleGroup < Spec::Example::ExampleGroup
resource.value(name)
end
+ class << self
+
+ def field(field, &block)
+ ResourceField.new(self, field, &block)
+ end
+
+ # call-seq:
+ #
+ # given(:ensure)
+ # given(:ensure => :present)
+ def context_with(*args, &block)
+ options = args.last.is_a?(Hash) ? args.pop : {}
+ if args.empty?
+ text = options.map { |k, v| "#{k} => #{v.inspect}" }.join(' and with ')
+ context("and with #{text}", {:resource => options}, &block)
+ else
+ text = args.join(', ')
+ placeholders = args.inject({}) { |memo, key| memo.merge(key => 'an-unimportant-value') }
+ context("and with a #{text}", {:resource => placeholders}, &block)
+ end
+ end
+
+ def context_without(field, &block)
+ context("and without a #{field}", &block)
+ end
+
+ end
+
end
Spec::Example::ExampleGroupFactory.register(:provider, ProviderExampleGroup)