lib/spec/matchers/has.rb in rspec-1.1.11 vs lib/spec/matchers/has.rb in rspec-1.1.12
- old
+ new
@@ -1,34 +1,18 @@
module Spec
module Matchers
-
- class Has #:nodoc:
- def initialize(sym, *args)
- @sym = sym
- @args = args
+ def has(sym, *args) # :nodoc:
+ simple_matcher do |actual, matcher|
+ matcher.failure_message = "expected ##{predicate(sym)}(#{args[0].inspect}) to return true, got false"
+ matcher.negative_failure_message = "expected ##{predicate(sym)}(#{args[0].inspect}) to return false, got true"
+ matcher.description = "have key #{args[0].inspect}"
+ actual.__send__(predicate(sym), *args)
end
-
- def matches?(given)
- given.__send__(predicate, *@args)
- end
-
- def failure_message
- "expected ##{predicate}(#{@args[0].inspect}) to return true, got false"
- end
-
- def negative_failure_message
- "expected ##{predicate}(#{@args[0].inspect}) to return false, got true"
- end
-
- def description
- "have key #{@args[0].inspect}"
- end
-
- private
- def predicate
- "#{@sym.to_s.sub("have_","has_")}?".to_sym
- end
-
end
-
+
+ private
+ def predicate(sym)
+ "#{sym.to_s.sub("have_","has_")}?".to_sym
+ end
+
end
end