Sha256: 51163d8e630932b2aa61b14be569863daa9a02c053056d1fb8534da06a596316

Contents?: true

Size: 1.26 KB

Versions: 8

Compression:

Stored size: 1.26 KB

Contents

module RR
  class SpyVerification
    def initialize(subject, method_name, args)
      @subject = subject
      @method_name = method_name.to_sym
      set_argument_expectation_for_args(args)
      @ordered = false
      once
    end

    attr_reader :argument_expectation, :method_name, :times_matcher
    attr_accessor :subject

    include RR::DoubleDefinitions::DoubleDefinition::TimesDefinitionConstructionMethods
    include RR::DoubleDefinitions::DoubleDefinition::ArgumentDefinitionConstructionMethods

    def ordered
      @ordered = true
      self
    end

    def ordered?
      @ordered
    end

    def call
      (error = RR.recorded_calls.match_error(self)) && raise(error)
    end

    def to_proc
      lambda do
        call
      end
    end

    def subject_inspect
      if subject.respond_to?(:__rr__original_inspect, true)
        subject.__rr__original_inspect
      else
        subject.inspect
      end
    end

  protected
    attr_writer :times_matcher

    def set_argument_expectation_for_args(args)
      # with_no_args and with actually set @argument_expectation
      args.empty? ? with_no_args : with(*args)
    end

    def install_method_callback(return_value_block)
      # Do nothing. This is to support DefinitionConstructionMethods
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rr-3.0.5 lib/rr/spy_verification.rb
rr-3.0.4 lib/rr/spy_verification.rb
rr-3.0.3 lib/rr/spy_verification.rb
rr-3.0.2 lib/rr/spy_verification.rb
rr-3.0.1 lib/rr/spy_verification.rb
rr-3.0.0 lib/rr/spy_verification.rb
rr-1.2.1 lib/rr/spy_verification.rb
rr-1.2.0 lib/rr/spy_verification.rb