Sha256: 10adfa5f495235140c6cf22f721a497035713d4903741857d183a19c9709ff15

Contents?: true

Size: 875 Bytes

Versions: 4

Compression:

Stored size: 875 Bytes

Contents

module DevelopWithPassion
  module Fakes
    class MethodStub
      def initialize(arg_sets = [])
        @arg_sets = arg_sets
      end

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

      def add_new_set(set)
        @arg_sets << set
        return set
      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.return_value
      end

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

      def times?(value)
        total = @arg_sets.inject(0){|sum,item|sum += item.times_called}
        return total == value
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
developwithpassion_fakes-0.0.9 lib/developwithpassion_fakes/method_stub.rb
developwithpassion_fakes-0.0.6 lib/developwithpassion_fakes/method_stub.rb
developwithpassion_fakes-0.0.5 lib/developwithpassion_fakes/method_stub.rb
developwithpassion_fakes-0.0.4 lib/developwithpassion_fakes/method_stub.rb