Sha256: 1cece67823f7a3a06d2c5c6ed4b44ba75ab47d17fdfcff962d99669891cca51a
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
require 'singleton' module Spy # Manages all the spies class Agency include Singleton # @private def initialize clear! end # given a spy ID it will return the associated spy # @param id [Integer] spy object id # @return [Nil, Subroutine, Constant, Double] def find(id) @spies[id] end # Record that a spy was initialized and hooked # @param spy [Subroutine, Constant, Double] # @return [spy] def recruit(spy) raise AlreadyStubbedError if @spies[spy.object_id] case spy when Subroutine, Constant, Double @spies[spy.object_id] = spy else raise ArgumentError, "#{spy}, was not a spy" end end # remove spy from the records # @param spy [Subroutine, Constant, Double] # @return [spy] def retire(spy) raise NoSpyError unless @spies[spy.object_id] case spy when Subroutine, Constant, Double @spies.delete(spy.object_id) else raise ArgumentError, "#{spy}, was not a spy" end end # checks to see if a spy is hooked # @param spy [Subroutine, Constant, Double] # @return [Boolean] def active?(spy) case spy when Subroutine, Constant, Double @spies.has_key?(spy.object_id) else raise ArgumentError, "#{spy}, was not a spy" end end # unhooks all spies and clears records # @return [self] def dissolve! @spies.values.each do |spy| spy.unhook if spy.respond_to?(:unhook) end clear! end # clears records # @return [self] def clear! @spies = {} self end # returns all the spies that have been initialized since the creation of # this agency # @return [Array<Subroutine, Constant, Double>] def spies @spies.values end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spy-0.2.5 | lib/spy/agency.rb |