Sha256: 28cc187d45e86d474fbdee1b9426c5cf78f2574e63475dd2ba28e7054e603a41

Contents?: true

Size: 1.08 KB

Versions: 9

Compression:

Stored size: 1.08 KB

Contents

require 'muack/mock'
require 'muack/stub'
require 'muack/coat'
require 'muack/spy'
require 'muack/any_instance_of'

module Muack
  class Session
    attr_reader :data
    def initialize; @data = {}; end

    def mock obj; data["mk #{obj.__id__}"] ||= Mock.new(obj)      ; end
    def stub obj; data["sb #{obj.__id__}"] ||= Stub.new(obj)      ; end
    def coat obj; data["co #{obj.__id__}"] ||= Coat.new(obj)      ; end
    def spy  obj; data["sy #{obj.__id__}"] ||= Spy .new(stub(obj)); end

    def any_instance_of kls
      data["ai #{kls.__id__}"] ||= AnyInstanceOf.new(kls)
    end

    def verify obj=nil
      if obj
        with(obj, :[]).all?(&:__mock_verify)
      else
        data.each_value.all?(&:__mock_verify)
      end
    end

    def reset obj=nil
      if obj
        with(obj, :delete).each(&:__mock_reset)
      else
        data.reverse_each{ |_, m| m.__mock_reset } # reverse_each_value?
        data.clear
      end
    end

    private
    def with obj, meth
      %w[mk sb co sy ai].map{ |k|
        data.__send__(meth, "#{k} #{obj.__id__}")
      }.compact
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
muack-1.6.0 lib/muack/session.rb
muack-1.5.1 lib/muack/session.rb
muack-1.5.0 lib/muack/session.rb
muack-1.4.0 lib/muack/session.rb
muack-1.3.2 lib/muack/session.rb
muack-1.3.1 lib/muack/session.rb
muack-1.3.0 lib/muack/session.rb
muack-1.2.0 lib/muack/session.rb
muack-1.1.2 lib/muack/session.rb