Sha256: f464a82db0a19e6614f6090f3c05a1ddc2735f39427bd3f283ed2c09ed199850
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
require 'json' module Lurker class Spy class BlindError < StandardError; end attr_reader :block, :service attr_accessor :request, :response extend Forwardable delegate [:verb, :payload] => :request delegate [:status, :body] => :response def initialize(options={}, &block) @options = options @block = block @service = if defined?(Rails) Service.new(Rails.root.join(DEFAULT_SERVICE_PATH).to_s, Rails.application.class.parent_name) else Service.default_service end end def call @request = @response = nil # fill in while test @block.call.tap do |result| if @request && @response @service.verify!( verb, endpoint_path, payload, extensions, status, body ) @service.persist! if success?(result) end end end def endpoint_path [request.endpoint_path, suffix].compact.join('-') end def extensions extensions = { path_params: request.path_params, path_info: request.path_info, method: request.verb, suffix: suffix.to_s, } unless request.query_params.empty? extensions[:query_params] = request.query_params end extensions end def suffix if (suffix = @options[:suffix]).is_a?(String) suffix.gsub(/[^[[:alnum:]]]/, '_') end end def success?(result) if defined?(::Minitest::Test) && result.is_a?(::Minitest::Test) result.failure.nil? elsif result.is_a?(Exception) false else result end end private :success? def self.on(options={}, &block) require 'lurker/spec_helper' unless defined? Lurker::SpecHelper (Thread.current[:lurker_spy] = new(options, &block)).tap do |spy| spy.call end end def self.enabled? current.present? end def self.current Thread.current[:lurker_spy] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lurker-0.6.1 | lib/lurker/spy.rb |