Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

allow additional arguments for be_able_to matcher, this requires Ruby…

… 1.8.7 or higher to use matcher
  • Loading branch information...
commit 6e1e96c85a03f430e02f508ba45a181b44e31193 1 parent cf49c5b
@ryanb authored
View
2  CHANGELOG.rdoc
@@ -1,5 +1,7 @@
1.1.0 (not released)
+* Adding be_able_to RSpec matcher (thanks dchelimsky) - see issue #54
+
* Support additional arguments to can? which get passed to the block - see issue #48
View
8 lib/cancan/matchers.rb
@@ -1,13 +1,13 @@
-Spec::Matchers.define :be_able_to do |action, subject|
+Spec::Matchers.define :be_able_to do |*args|
match do |model|
- model.can?(action, subject)
+ model.can?(*args)
end
failure_message_for_should do |model|
- "expected to be able to #{action.inspect} #{subject.inspect}"
+ "expected to be able to #{args.map(&:inspect).join(" ")}"
end
failure_message_for_should_not do |model|
- "expected not to be able to #{action.inspect} #{subject.inspect}"
+ "expected not to be able to #{args.map(&:inspect).join(" ")}"
end
end
View
8 spec/cancan/matchers_spec.rb
@@ -22,4 +22,12 @@
object.should_not be_able_to(:read, 123)
end.should raise_error('expected not to be able to :read 123')
end
+
+ it "delegates additional arguments to can? and reports in failure message" do
+ object = Object.new
+ mock(object).can?(:read, 123, 456) { false }
+ expect do
+ object.should be_able_to(:read, 123, 456)
+ end.should raise_error('expected to be able to :read 123 456')
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.