Guest User

Untitled

a guest
Oct 12th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.51 KB | None | 0 0
  1. require 'rspec/expectations'
  2.  
  3. RSpec::Matchers.define :include_one do |expected|
  4. function_passed = expected.is_a?(Proc)
  5.  
  6. match do |actual|
  7. if function_passed
  8. actual.select {|el| expected.call(el) }.size == 1
  9. else
  10. actual.select {|el| el.eql?(expected) }.size == 1
  11. end
  12. end
  13.  
  14. failure_message do |actual|
  15. "expected #{actual.inspect} to have only one #{expected}"
  16. end
  17. end
  18.  
  19. RSpec::Matchers.alias_matcher :include_exactly_one, :include_one
  20. RSpec::Matchers.alias_matcher :contain_one, :include_one
Add Comment
Please, Sign In to add comment