Sha256: f2f05263368519bfc62b858944c4f91778e2d4fadd51482ffd2df434d574ba81

Contents?: true

Size: 950 Bytes

Versions: 15

Compression:

Stored size: 950 Bytes

Contents

module Fakes
  class MethodStub
    def initialize(arg_sets = [])
      array :arg_sets do|a|
        a.mutator :add_new_set do|set|
          @arg_sets << set
          set
        end
      end
      @arg_sets = arg_sets
    end

    def with(*args)
      return add_new_set(ArgSet.new(args))
    end

    def throws(exception)
      ignore_arg.throws(exception)
    end

    def ignore_arg
      return add_new_set(IgnoreSet.new)
    end

    def and_return(item)
      ignore_arg.and_return(item)
    end


    def invoke(args)
      set = @arg_sets.find{|item| item.matches?(args)} || ignore_arg
      set.capture_args(args)
      return set.process
    end

    def called_with(*args)
      return @arg_sets.find{|item| item.was_called_with?(args)}
    end

    def total_times_called
      return @arg_sets.inject(0){|sum,item|sum += item.times_called}
    end

    def times?(value)
      return total_times_called == value
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
fakes-1.0.31 lib/core/method_stub.rb
fakes-1.0.30 lib/core/method_stub.rb
fakes-1.0.24 lib/core/method_stub.rb
fakes-1.0.5 lib/core/method_stub.rb
fakes-1.0.2 lib/core/method_stub.rb
fakes-1.0.1 lib/core/method_stub.rb
fakes-1.0.0 lib/core/method_stub.rb
fakes-0.4.1 lib/core/method_stub.rb
fakes-0.4.0 lib/core/method_stub.rb
fakes-0.3.8 lib/core/method_stub.rb
fakes-0.3.7 lib/core/method_stub.rb
fakes-0.3.2 lib/core/method_stub.rb
fakes-0.3.1 lib/core/method_stub.rb
fakes-0.3.0 lib/core/method_stub.rb
fakes-0.2.3 lib/core/method_stub.rb