class Pakyow::TestHelp::Simulator

Attributes

env[R]
method[R]
params[R]
path[R]

Public Class Methods

new(name_or_path, method: :get, params: {}, session: {}, cookies: {}, env: {}) click to toggle source
# File pakyow-test/lib/pakyow/test_help/simulator.rb, line 8
def initialize(name_or_path, method: :get, params: {}, session: {}, cookies: {}, env: {})
  @path   = router.path(name_or_path, params)
  @method = method
  @params = params
  @env    = {
    'REQUEST_METHOD'            => @method.to_s.upcase,
    'REQUEST_PATH'              => @path,
    'PATH_INFO'                 => @path,
    'QUERY_STRING'              => @params.to_a.map { |p| p.join('=') }.join('&'),
    'rack.session'              => session,
    'rack.request.cookie_hash'  => cookies,
    'rack.input'                => StringIO.new,
    'pakyow.params'             => @params,
    'rack.logger'               => Pakyow::TestHelp::ObservableLogger.new
  }.merge(Hash[env.map{ |k,v| [k.to_s, v] }])
end

Public Instance Methods

run() { |sim| ... } click to toggle source
# File pakyow-test/lib/pakyow/test_help/simulator.rb, line 25
def run(&block)
  sim = Simulation.new(CallContext.new(env).process)

  return sim unless block_given?
  yield sim
end

Private Instance Methods

router() click to toggle source
# File pakyow-test/lib/pakyow/test_help/simulator.rb, line 34
def router
  Pakyow::Router.instance
end