You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

23 lines
584 B

# Allow matching arrays in "ba_able_to"
#
# user.should be_able_to [:read, :write], post
#
RSpec::Matchers.define :be_able_to do |*args|
match do |ability|
arguments = args.dup
first = arguments.delete_at(0)
if first.is_a?(Array)
first.all?{|operation| ability.can?(operation, *arguments)}
else
ability.can?(*args)
end
end
failure_message do |ability|
"expected to be able to #{args.map(&:inspect).join(" ")}"
end
failure_message_when_negated do |ability|
"expected not to be able to #{args.map(&:inspect).join(" ")}"
end
end