spec/support/shared_contexts/async_context.rb in sitehub-0.4.2 vs spec/support/shared_contexts/async_context.rb in sitehub-0.4.3

- old
+ new

@@ -1,69 +1,14 @@ +require_relative '../async' shared_context :async do - class Callback - attr_reader :response - - def call *args - status, headers, body = *args.flatten.to_a - @response = Rack::Response.new(body, status, headers) - EventMachine.stop if EventMachine.reactor_running? - end - end - def callback - @callback ||= Callback.new + @callback ||= Async::Callback.new end def async_response_handler - @async_response_handler ||= begin - instance_double(EM::DefaultDeferrable).tap do |handler| - allow(handler).to receive(:succeed) do |arg| - sitehub_response = arg[:downstream_response] - handler.instance_variable_set(:@arg, arg) - sitehub_response = sitehub_response.to_a - handler.instance_variable_set(:@last_response, Rack::Response.new(sitehub_response[2], sitehub_response[0], sitehub_response[1])) - EM.stop - end - - def handler.last_response - @last_response - end - - def handler.callback_args - @arg - end - end - end + @async_response_handler = Async::ResponseHandler.new end def last_response app.last_response - end - - def async_middleware - Class.new do - def initialize app - @app = app - end - - def last_response - callback.response - end - - def callback - @callback ||= Callback.new - end - - - def call env - - env['async.callback'] = callback - - catch(:async) do - @app.call env - end - - [200, {}, []] - end - end end end