allow additional arguments for be_able_to matcher, this requires Ruby 1.8.7 or higher to use matcher
This commit is contained in:
		
							parent
							
								
									cf49c5b9de
								
							
						
					
					
						commit
						6e1e96c85a
					
				@ -1,5 +1,7 @@
 | 
				
			|||||||
1.1.0 (not released)
 | 
					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
 | 
					* Support additional arguments to can? which get passed to the block - see issue #48
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,13 @@
 | 
				
			|||||||
Spec::Matchers.define :be_able_to do |action, subject|
 | 
					Spec::Matchers.define :be_able_to do |*args|
 | 
				
			||||||
  match do |model|
 | 
					  match do |model|
 | 
				
			||||||
    model.can?(action, subject)
 | 
					    model.can?(*args)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  failure_message_for_should do |model|
 | 
					  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
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  failure_message_for_should_not do |model|
 | 
					  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
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -22,4 +22,12 @@ describe "be_able_to" do
 | 
				
			|||||||
      object.should_not be_able_to(:read, 123)
 | 
					      object.should_not be_able_to(:read, 123)
 | 
				
			||||||
    end.should raise_error('expected not to be able to :read 123')
 | 
					    end.should raise_error('expected not to be able to :read 123')
 | 
				
			||||||
  end
 | 
					  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
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user