1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
module RSpec
module Expectations
# Wraps the target of an expectation.
# @example
# expect(something) # => ExpectationTarget wrapping something
#
# # used with `to`
# expect(actual).to eq(3)
#
# # with `not_to`
# expect(actual).not_to eq(3)
class ExpectationTarget
class << self
attr_accessor :deprecated_should_enabled
alias deprecated_should_enabled? deprecated_should_enabled
end
# @api private
def initialize(target)
@target = target
end
# Runs the given expectation, passing if `matcher` returns true.
# @example
# expect(value).to eq(5)
# expect { perform }.to raise_error
# @param [Matcher]
# matcher
# @param [String] message optional message to display when the expectation fails
# @return [Boolean] true if the expectation succeeds (else raises)
# @see RSpec::Matchers
def to(matcher=nil, message=nil, &block)
prevent_operator_matchers(:to, matcher)
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(@target, matcher, message, &block)
end
# Runs the given expectation, passing if `matcher` returns false.
# @example
# expect(value).not_to eq(5)
# @param [Matcher]
# matcher
# @param [String] message optional message to display when the expectation fails
# @return [Boolean] false if the negative expectation succeeds (else raises)
# @see RSpec::Matchers
def not_to(matcher=nil, message=nil, &block)
prevent_operator_matchers(:not_to, matcher)
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(@target, matcher, message, &block)
end
alias to_not not_to
def self.enable_deprecated_should
return if deprecated_should_enabled?
def should(*args)
RSpec.deprecate "`expect { }.should`", :replacement => "`expect { }.to`"
@target.should(*args)
end
def should_not(*args)
RSpec.deprecate "`expect { }.should_not`", :replacement => "`expect { }.not_to`"
@target.should_not(*args)
end
self.deprecated_should_enabled = true
end
def self.disable_deprecated_should
return unless deprecated_should_enabled?
remove_method :should
remove_method :should_not
self.deprecated_should_enabled = false
end
private
def prevent_operator_matchers(verb, matcher)
return if matcher
raise ArgumentError, "The expect syntax does not support operator matchers, " +
"so you must pass a matcher to `##{verb}`."
end
end
end
end
|