Class: Deas::TestRunner

Inherits:
Runner
  • Object
show all
Defined in:
lib/deas/test_runner.rb

Defined Under Namespace

Classes: ContentTypeArgs, HaltArgs, HeadersArgs, NormalizedParams, RedirectArgs, RenderArgs, SendFileArgs, StatusArgs

Instance Attribute Summary collapse

Attributes inherited from Runner

#handler, #handler_class, #logger, #params, #request, #response, #router, #session, #template_source

Instance Method Summary collapse

Methods inherited from Runner

#partial, #render

Constructor Details

#initialize(handler_class, args = nil) ⇒ TestRunner

Returns a new instance of TestRunner.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/deas/test_runner.rb', line 14

def initialize(handler_class, args = nil)
  if !handler_class.include?(Deas::ViewHandler)
    raise InvalidServiceHandlerError, "#{handler_class.inspect} is not a"\
                                      " Deas::ServiceHandler"
  end

  args = (args || {}).dup
  super(handler_class, {
    :request  => args.delete(:request),
    :response => args.delete(:response),
    :session  => args.delete(:session),
    :params   => NormalizedParams.new(args.delete(:params) || {}).value,
    :logger   => args.delete(:logger),
    :router   => args.delete(:router),
    :template_source => args.delete(:template_source)
  })
  args.each{|key, value| self.handler.send("#{key}=", value) }

  @response_value = catch(:halt){ self.handler.init; nil }
end

Instance Attribute Details

#response_valueObject (readonly)

Returns the value of attribute response_value.



12
13
14
# File 'lib/deas/test_runner.rb', line 12

def response_value
  @response_value
end

Instance Method Details

#content_type(*args) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/deas/test_runner.rb', line 63

def content_type(*args)
  return @content_type if args.empty?
  opts, value = [
    args.last.kind_of?(Hash) ? args.pop : {},
    args.last
  ]
  @content_type = ContentTypeArgs.new(value, opts)
end

#halt(*args) ⇒ Object

Helpers



41
42
43
# File 'lib/deas/test_runner.rb', line 41

def halt(*args)
  throw(:halt, HaltArgs.new(args))
end

#headers(*args) ⇒ Object



80
81
82
83
84
# File 'lib/deas/test_runner.rb', line 80

def headers(*args)
  return @headers if args.empty?
  value = args.last
  @headers = HeadersArgs.new(value)
end

#redirect(path, *halt_args) ⇒ Object



55
56
57
# File 'lib/deas/test_runner.rb', line 55

def redirect(path, *halt_args)
  throw(:halt, RedirectArgs.new(path, halt_args))
end

#runObject



35
36
37
# File 'lib/deas/test_runner.rb', line 35

def run
  @response_value ||= catch(:halt){ self.handler.run }
end

#send_file(file_path, options = nil, &block) ⇒ Object



87
88
89
# File 'lib/deas/test_runner.rb', line 87

def send_file(file_path, options = nil, &block)
  SendFileArgs.new(file_path, options, block)
end

#source_partial(source, template_name, locals = nil) ⇒ Object



98
99
100
101
# File 'lib/deas/test_runner.rb', line 98

def source_partial(source, template_name, locals = nil)
  super # render the markup and discard it
  RenderArgs.new(source, template_name, locals)
end

#source_render(source, template_name, locals = nil) ⇒ Object



92
93
94
95
# File 'lib/deas/test_runner.rb', line 92

def source_render(source, template_name, locals = nil)
  super # render the markup and discard it
  RenderArgs.new(source, template_name, locals)
end

#status(*args) ⇒ Object



73
74
75
76
77
# File 'lib/deas/test_runner.rb', line 73

def status(*args)
  return @status if args.empty?
  value = args.last
  @status = StatusArgs.new(value)
end