deas 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/deas/logger.rb +10 -0
- data/lib/deas/redirect_proxy.rb +1 -1
- data/lib/deas/route.rb +10 -10
- data/lib/deas/route_proxy.rb +1 -1
- data/lib/deas/router.rb +1 -1
- data/lib/deas/runner.rb +12 -8
- data/lib/deas/server.rb +9 -2
- data/lib/deas/sinatra_app.rb +1 -0
- data/lib/deas/sinatra_runner.rb +15 -5
- data/lib/deas/template.rb +0 -4
- data/lib/deas/template_engine.rb +50 -0
- data/lib/deas/template_source.rb +74 -0
- data/lib/deas/test_runner.rb +7 -1
- data/lib/deas/version.rb +1 -1
- data/lib/deas/view_handler.rb +50 -44
- data/lib/deas.rb +1 -11
- data/test/support/fake_sinatra_call.rb +13 -10
- data/test/support/routes.rb +13 -21
- data/test/support/template.erb +1 -0
- data/test/support/template.json +1 -0
- data/test/support/test_template.test +0 -0
- data/test/support/view_handlers.rb +8 -0
- data/test/support/views/show.erb +1 -1
- data/test/system/rack_tests.rb +7 -5
- data/test/unit/error_handler_tests.rb +2 -1
- data/test/unit/logging_tests.rb +2 -1
- data/test/unit/route_tests.rb +16 -14
- data/test/unit/runner_tests.rb +7 -4
- data/test/unit/server_configuration_tests.rb +7 -4
- data/test/unit/server_tests.rb +6 -1
- data/test/unit/show_exceptions_tests.rb +2 -1
- data/test/unit/sinatra_app_tests.rb +16 -13
- data/test/unit/sinatra_runner_tests.rb +48 -0
- data/test/unit/template_engine_tests.rb +121 -0
- data/test/unit/template_source_tests.rb +221 -0
- data/test/unit/template_tests.rb +4 -12
- data/test/unit/test_runner_tests.rb +19 -7
- data/test/unit/view_handler_tests.rb +9 -2
- metadata +17 -4
data/lib/deas/logger.rb
ADDED
data/lib/deas/redirect_proxy.rb
CHANGED
data/lib/deas/route.rb
CHANGED
@@ -16,16 +16,16 @@ module Deas
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def run(sinatra_call)
|
19
|
-
|
20
|
-
:sinatra_call
|
21
|
-
:request
|
22
|
-
:response
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
27
|
-
|
28
|
-
|
19
|
+
runner = Deas::SinatraRunner.new(self.handler_class, {
|
20
|
+
:sinatra_call => sinatra_call,
|
21
|
+
:request => sinatra_call.request,
|
22
|
+
:response => sinatra_call.response,
|
23
|
+
:session => sinatra_call.session,
|
24
|
+
:params => sinatra_call.params,
|
25
|
+
:logger => sinatra_call.settings.logger,
|
26
|
+
:router => sinatra_call.settings.router,
|
27
|
+
:template_source => sinatra_call.settings.template_source
|
28
|
+
})
|
29
29
|
|
30
30
|
sinatra_call.request.env.tap do |env|
|
31
31
|
env['deas.params'] = runner.params
|
data/lib/deas/route_proxy.rb
CHANGED
data/lib/deas/router.rb
CHANGED
data/lib/deas/runner.rb
CHANGED
@@ -1,25 +1,28 @@
|
|
1
1
|
require 'rack/utils'
|
2
|
+
require 'deas/logger'
|
2
3
|
require 'deas/router'
|
4
|
+
require 'deas/template_source'
|
3
5
|
|
4
6
|
module Deas
|
5
7
|
|
6
8
|
class Runner
|
7
9
|
|
8
10
|
attr_reader :handler_class, :handler
|
9
|
-
attr_reader :request, :response, :
|
10
|
-
attr_reader :logger, :router, :
|
11
|
+
attr_reader :request, :response, :session
|
12
|
+
attr_reader :params, :logger, :router, :template_source
|
11
13
|
|
12
14
|
def initialize(handler_class, args = nil)
|
13
15
|
@handler_class = handler_class
|
14
16
|
@handler = @handler_class.new(self)
|
15
17
|
|
16
18
|
a = args || {}
|
17
|
-
@request
|
18
|
-
@response
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
22
|
-
@
|
19
|
+
@request = a[:request]
|
20
|
+
@response = a[:response]
|
21
|
+
@session = a[:session]
|
22
|
+
@params = a[:params] || {}
|
23
|
+
@logger = a[:logger] || Deas::NullLogger.new
|
24
|
+
@router = a[:router] || Deas::Router.new
|
25
|
+
@template_source = a[:template_source] || Deas::NullTemplateSource.new
|
23
26
|
end
|
24
27
|
|
25
28
|
def halt(*args); raise NotImplementedError; end
|
@@ -28,6 +31,7 @@ module Deas
|
|
28
31
|
def status(*args); raise NotImplementedError; end
|
29
32
|
def headers(*args); raise NotImplementedError; end
|
30
33
|
def render(*args); raise NotImplementedError; end
|
34
|
+
def partial(*args); raise NotImplementedError; end
|
31
35
|
def send_file(*args); raise NotImplementedError; end
|
32
36
|
|
33
37
|
class NormalizedParams
|
data/lib/deas/server.rb
CHANGED
@@ -2,11 +2,13 @@ require 'pathname'
|
|
2
2
|
require 'ns-options'
|
3
3
|
require 'ns-options/boolean'
|
4
4
|
require 'deas/exceptions'
|
5
|
-
require 'deas/
|
5
|
+
require 'deas/logger'
|
6
6
|
require 'deas/logging'
|
7
|
-
require 'deas/show_exceptions'
|
8
7
|
require 'deas/router'
|
8
|
+
require 'deas/show_exceptions'
|
9
9
|
require 'deas/sinatra_app'
|
10
|
+
require 'deas/template'
|
11
|
+
require 'deas/template_source'
|
10
12
|
|
11
13
|
module Deas; end
|
12
14
|
module Deas::Server
|
@@ -34,6 +36,7 @@ module Deas::Server
|
|
34
36
|
|
35
37
|
option :verbose_logging, NsOptions::Boolean, :default => true
|
36
38
|
option :logger, :default => proc{ Deas::NullLogger.new }
|
39
|
+
option :template_source, :default => proc{ Deas::NullTemplateSource.new }
|
37
40
|
|
38
41
|
attr_accessor :settings, :error_procs, :init_procs, :template_helpers
|
39
42
|
attr_accessor :middlewares, :router
|
@@ -198,6 +201,10 @@ module Deas::Server
|
|
198
201
|
self.configuration.default_charset *args
|
199
202
|
end
|
200
203
|
|
204
|
+
def template_source(*args)
|
205
|
+
self.configuration.template_source *args
|
206
|
+
end
|
207
|
+
|
201
208
|
# router handling
|
202
209
|
|
203
210
|
def router(value = nil)
|
data/lib/deas/sinatra_app.rb
CHANGED
@@ -35,6 +35,7 @@ module Deas
|
|
35
35
|
set :deas_default_charset, server_config.default_charset
|
36
36
|
set :logger, server_config.logger
|
37
37
|
set :router, server_config.router
|
38
|
+
set :template_source, server_config.template_source
|
38
39
|
|
39
40
|
server_config.settings.each{ |set_args| set *set_args }
|
40
41
|
server_config.middlewares.each{ |use_args| use *use_args }
|
data/lib/deas/sinatra_runner.rb
CHANGED
@@ -40,19 +40,29 @@ module Deas
|
|
40
40
|
@sinatra_call.headers(*args)
|
41
41
|
end
|
42
42
|
|
43
|
-
def render(template_name, opts = nil
|
43
|
+
def render(template_name, opts = nil)
|
44
44
|
self.content_type(get_content_type(template_name)) if self.content_type.nil?
|
45
45
|
|
46
|
-
# TODO: move to DeasRunner, don't pass sinatra call to create template
|
47
|
-
# def render(template_name, *args, &block)
|
48
|
-
# super(template_name, *args, &block)
|
49
46
|
options = opts || {}
|
50
47
|
options[:locals] = {
|
51
48
|
:view => self.handler,
|
52
49
|
:logger => self.logger
|
53
50
|
}.merge(options[:locals] || {})
|
54
51
|
options[:layout] = self.handler_class.layouts if !options.key?(:layout)
|
55
|
-
|
52
|
+
|
53
|
+
if self.template_source.engine_for?(template_name)
|
54
|
+
self.template_source.render(template_name, self.handler, options[:locals])
|
55
|
+
else
|
56
|
+
Deas::Template.new(@sinatra_call, template_name, options).render
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def partial(template_name, locals = nil)
|
61
|
+
if self.template_source.engine_for?(template_name)
|
62
|
+
self.template_source.partial(template_name, locals || {})
|
63
|
+
else
|
64
|
+
Deas::Template::Partial.new(@sinatra_call, template_name, locals).render
|
65
|
+
end
|
56
66
|
end
|
57
67
|
|
58
68
|
def send_file(*args, &block)
|
data/lib/deas/template.rb
CHANGED
@@ -76,10 +76,6 @@ module Deas
|
|
76
76
|
|
77
77
|
def initialize(sinatra_call, name, locals = nil)
|
78
78
|
options = { :locals => (locals || {}) }
|
79
|
-
name = name.to_s.tap do |n|
|
80
|
-
basename = File.basename(n)
|
81
|
-
n.sub!(/#{basename}\Z/, "_#{basename}") unless basename[0] == '_'[0]
|
82
|
-
end
|
83
79
|
super sinatra_call, name, options
|
84
80
|
end
|
85
81
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'deas/logger'
|
3
|
+
|
4
|
+
module Deas
|
5
|
+
|
6
|
+
class TemplateEngine
|
7
|
+
|
8
|
+
attr_reader :source_path, :logger, :opts
|
9
|
+
|
10
|
+
def initialize(opts = nil)
|
11
|
+
@opts = opts || {}
|
12
|
+
@source_path = Pathname.new(@opts['source_path'].to_s)
|
13
|
+
@logger = @opts['logger'] || Deas::NullLogger.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def render(template_name, view_handler, locals)
|
17
|
+
raise NotImplementedError
|
18
|
+
end
|
19
|
+
|
20
|
+
def partial(template_name, locals)
|
21
|
+
raise NotImplementedError
|
22
|
+
end
|
23
|
+
|
24
|
+
def capture_partial(template_name, locals, &content)
|
25
|
+
raise NotImplementedError
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
class NullTemplateEngine < TemplateEngine
|
31
|
+
|
32
|
+
def render(template_name, view_handler, locals)
|
33
|
+
template_file = self.source_path.join(template_name).to_s
|
34
|
+
unless File.exists?(template_file)
|
35
|
+
raise ArgumentError, "template file `#{template_file}` does not exist"
|
36
|
+
end
|
37
|
+
File.read(template_file)
|
38
|
+
end
|
39
|
+
|
40
|
+
def partial(template_name, locals)
|
41
|
+
render(template_name, nil, locals)
|
42
|
+
end
|
43
|
+
|
44
|
+
def capture_partial(template_name, locals, &content)
|
45
|
+
render(template_name, nil, locals)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'deas/logger'
|
2
|
+
require 'deas/template_engine'
|
3
|
+
|
4
|
+
module Deas
|
5
|
+
|
6
|
+
class TemplateSource
|
7
|
+
|
8
|
+
DISALLOWED_ENGINE_EXTS = [ 'rb' ]
|
9
|
+
|
10
|
+
DisallowedEngineExtError = Class.new(ArgumentError)
|
11
|
+
|
12
|
+
attr_reader :path, :engines
|
13
|
+
|
14
|
+
def initialize(path, logger = nil)
|
15
|
+
@path = path.to_s
|
16
|
+
@default_opts = {
|
17
|
+
'source_path' => @path,
|
18
|
+
'logger' => logger || Deas::NullLogger.new
|
19
|
+
}
|
20
|
+
@engines = Hash.new{ |h,k| Deas::NullTemplateEngine.new(@default_opts) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def engine(input_ext, engine_class, registered_opts = nil)
|
24
|
+
if DISALLOWED_ENGINE_EXTS.include?(input_ext)
|
25
|
+
raise DisallowedEngineExtError, "`#{input_ext}` is disallowed as an"\
|
26
|
+
" engine extension."
|
27
|
+
end
|
28
|
+
engine_opts = @default_opts.merge(registered_opts || {})
|
29
|
+
@engines[input_ext.to_s] = engine_class.new(engine_opts)
|
30
|
+
end
|
31
|
+
|
32
|
+
def engine_for?(template_name)
|
33
|
+
@engines.keys.include?(get_template_ext(template_name))
|
34
|
+
end
|
35
|
+
|
36
|
+
def render(template_name, view_handler, locals)
|
37
|
+
get_engine(template_name).render(template_name, view_handler, locals)
|
38
|
+
end
|
39
|
+
|
40
|
+
def partial(template_name, locals)
|
41
|
+
get_engine(template_name).partial(template_name, locals)
|
42
|
+
end
|
43
|
+
|
44
|
+
def capture_partial(template_name, locals, &content)
|
45
|
+
get_engine(template_name).capture_partial(template_name, locals, &content)
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def get_engine(template_name)
|
51
|
+
@engines[get_template_ext(template_name)]
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_template_ext(template_name)
|
55
|
+
files = Dir.glob("#{File.join(@path, template_name.to_s)}.*")
|
56
|
+
files = files.reject{ |p| !@engines.keys.include?(parse_ext(p)) }
|
57
|
+
parse_ext(files.first.to_s || '')
|
58
|
+
end
|
59
|
+
|
60
|
+
def parse_ext(template_name)
|
61
|
+
File.extname(template_name)[1..-1]
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
class NullTemplateSource < TemplateSource
|
67
|
+
|
68
|
+
def initialize
|
69
|
+
super('')
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
data/lib/deas/test_runner.rb
CHANGED
@@ -14,10 +14,11 @@ module Deas
|
|
14
14
|
super(handler_class, {
|
15
15
|
:request => args.delete(:request),
|
16
16
|
:response => args.delete(:response),
|
17
|
+
:session => args.delete(:session),
|
17
18
|
:params => NormalizedParams.new(args.delete(:params) || {}).value,
|
18
19
|
:logger => args.delete(:logger),
|
19
20
|
:router => args.delete(:router),
|
20
|
-
:
|
21
|
+
:template_source => args.delete(:template_source)
|
21
22
|
})
|
22
23
|
args.each{|key, value| self.handler.send("#{key}=", value) }
|
23
24
|
|
@@ -72,6 +73,11 @@ module Deas
|
|
72
73
|
end
|
73
74
|
RenderArgs = Struct.new(:template_name, :options, :block)
|
74
75
|
|
76
|
+
def partial(template_name, locals = nil)
|
77
|
+
PartialArgs.new(template_name, locals)
|
78
|
+
end
|
79
|
+
PartialArgs = Struct.new(:template_name, :locals)
|
80
|
+
|
75
81
|
def send_file(file_path, options = nil, &block)
|
76
82
|
SendFileArgs.new(file_path, options, block)
|
77
83
|
end
|
data/lib/deas/version.rb
CHANGED
data/lib/deas/view_handler.rb
CHANGED
@@ -7,66 +7,72 @@ module Deas
|
|
7
7
|
def self.included(klass)
|
8
8
|
klass.class_eval do
|
9
9
|
extend ClassMethods
|
10
|
+
include InstanceMethods
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
@deas_runner = runner
|
15
|
-
end
|
14
|
+
module InstanceMethods
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
self.run_callback 'after_init'
|
21
|
-
end
|
16
|
+
def initialize(runner)
|
17
|
+
@deas_runner = runner
|
18
|
+
end
|
22
19
|
|
23
|
-
|
24
|
-
|
20
|
+
def init
|
21
|
+
run_callback 'before_init'
|
22
|
+
self.init!
|
23
|
+
run_callback 'after_init'
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
data = self.run!
|
29
|
-
self.run_callback 'after_run'
|
30
|
-
data
|
31
|
-
end
|
26
|
+
def init!
|
27
|
+
end
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
def run
|
30
|
+
run_callback 'before_run'
|
31
|
+
data = self.run!
|
32
|
+
run_callback 'after_run'
|
33
|
+
data
|
34
|
+
end
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
36
|
+
def run!
|
37
|
+
raise NotImplementedError
|
38
|
+
end
|
41
39
|
|
42
|
-
|
43
|
-
|
44
|
-
|
40
|
+
def inspect
|
41
|
+
reference = '0x0%x' % (self.object_id << 1)
|
42
|
+
"#<#{self.class}:#{reference} @request=#{request.inspect}>"
|
43
|
+
end
|
44
|
+
|
45
|
+
def ==(other_handler)
|
46
|
+
self.class == other_handler.class
|
47
|
+
end
|
45
48
|
|
46
|
-
|
49
|
+
private
|
47
50
|
|
48
|
-
|
51
|
+
# Helpers
|
49
52
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
def halt(*args); @deas_runner.halt(*args); end
|
54
|
+
def redirect(*args); @deas_runner.redirect(*args); end
|
55
|
+
def content_type(*args); @deas_runner.content_type(*args); end
|
56
|
+
def status(*args); @deas_runner.status(*args); end
|
57
|
+
def headers(*args); @deas_runner.headers(*args); end
|
55
58
|
|
56
|
-
|
57
|
-
|
59
|
+
def render(*args, &block); @deas_runner.render(*args, &block); end
|
60
|
+
def partial(*args, &block); @deas_runner.partial(*args, &block); end
|
61
|
+
def send_file(*args, &block); @deas_runner.send_file(*args, &block); end
|
58
62
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
def logger; @deas_runner.logger; end
|
64
|
+
def router; @deas_runner.router; end
|
65
|
+
def request; @deas_runner.request; end
|
66
|
+
def response; @deas_runner.response; end
|
67
|
+
def params; @deas_runner.params; end
|
68
|
+
def session; @deas_runner.session; end
|
65
69
|
|
66
|
-
|
67
|
-
|
68
|
-
|
70
|
+
def run_callback(callback)
|
71
|
+
(self.class.send("#{callback}_callbacks") || []).each do |callback|
|
72
|
+
self.instance_eval(&callback)
|
73
|
+
end
|
69
74
|
end
|
75
|
+
|
70
76
|
end
|
71
77
|
|
72
78
|
module ClassMethods
|
data/lib/deas.rb
CHANGED
@@ -9,14 +9,4 @@ require 'deas/view_handler'
|
|
9
9
|
# TODO - remove with future version of Rack (> v1.5.2)
|
10
10
|
require 'deas/rack_request_fix'
|
11
11
|
|
12
|
-
module Deas
|
13
|
-
|
14
|
-
class NullLogger
|
15
|
-
require 'logger'
|
16
|
-
|
17
|
-
::Logger::Severity.constants.each do |name|
|
18
|
-
define_method(name.downcase){|*args| } # no-op
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
12
|
+
module Deas; end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'ostruct'
|
2
|
-
require 'deas'
|
2
|
+
require 'deas/logger'
|
3
3
|
require 'deas/router'
|
4
|
+
require 'deas/template_source'
|
4
5
|
|
5
6
|
class FakeSinatraCall
|
6
7
|
|
@@ -10,19 +11,21 @@ class FakeSinatraCall
|
|
10
11
|
attr_accessor :request, :response, :params, :logger, :router, :session
|
11
12
|
attr_accessor :settings
|
12
13
|
|
13
|
-
def initialize(settings={})
|
14
|
-
@request
|
15
|
-
@response
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
14
|
+
def initialize(settings = {})
|
15
|
+
@request = FakeRequest.new('GET','/something', {}, OpenStruct.new)
|
16
|
+
@response = FakeResponse.new
|
17
|
+
@session = @request.session
|
18
|
+
@params = @request.params
|
19
|
+
@logger = Deas::NullLogger.new
|
20
|
+
@router = Deas::Router.new
|
21
|
+
@template_source = Deas::NullTemplateSource.new
|
20
22
|
|
21
23
|
@settings = OpenStruct.new({
|
22
24
|
:deas_template_scope => Deas::Template::Scope,
|
23
25
|
:deas_default_charset => 'utf-8',
|
24
|
-
:
|
25
|
-
:
|
26
|
+
:logger => @logger,
|
27
|
+
:router => @router,
|
28
|
+
:template_source => @template_source
|
26
29
|
}.merge(settings))
|
27
30
|
end
|
28
31
|
|
data/test/support/routes.rb
CHANGED
@@ -33,10 +33,10 @@ class DeasTestServer
|
|
33
33
|
get '/session', 'UseSessionHandler'
|
34
34
|
|
35
35
|
get '/with_layout', 'WithLayoutHandler'
|
36
|
-
get '/alt_with_layout', 'AlternateWithLayoutHandler'
|
37
36
|
get '/haml_with_layout', 'HamlWithLayoutHandler'
|
38
37
|
get '/with_haml_layout', 'WithHamlLayoutHandler'
|
39
38
|
get '/haml_with_haml_layout', 'HamlWithHamlLayoutHandler'
|
39
|
+
get '/partial.html', 'PartialHandler'
|
40
40
|
|
41
41
|
get '/handler/tests.json', 'HandlerTestsHandler'
|
42
42
|
|
@@ -149,21 +149,6 @@ class WithLayoutHandler
|
|
149
149
|
|
150
150
|
end
|
151
151
|
|
152
|
-
class AlternateWithLayoutHandler
|
153
|
-
include Deas::ViewHandler
|
154
|
-
|
155
|
-
def run!
|
156
|
-
render 'layout1' do
|
157
|
-
render 'layout2' do
|
158
|
-
render 'layout3' do
|
159
|
-
render 'with_layout'
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
152
|
class HamlWithLayoutHandler
|
168
153
|
include Deas::ViewHandler
|
169
154
|
layouts 'layout1'
|
@@ -194,6 +179,13 @@ class HamlWithHamlLayoutHandler
|
|
194
179
|
|
195
180
|
end
|
196
181
|
|
182
|
+
class PartialHandler
|
183
|
+
include Deas::ViewHandler
|
184
|
+
|
185
|
+
def run!; partial '_info', :info => 'some-info'; end
|
186
|
+
|
187
|
+
end
|
188
|
+
|
197
189
|
class RedirectHandler
|
198
190
|
include Deas::ViewHandler
|
199
191
|
|
@@ -227,11 +219,11 @@ class HandlerTestsHandler
|
|
227
219
|
|
228
220
|
def init!
|
229
221
|
@data = {}
|
230
|
-
set_data('logger_class_name'){
|
231
|
-
set_data('request_method'){
|
232
|
-
set_data('response_firstheaderval'){
|
233
|
-
set_data('params_a_param'){
|
234
|
-
set_data('session_inspect'){
|
222
|
+
set_data('logger_class_name'){ logger.class.name }
|
223
|
+
set_data('request_method'){ request.request_method.to_s }
|
224
|
+
set_data('response_firstheaderval'){ response.headers.sort.first.to_s }
|
225
|
+
set_data('params_a_param'){ params['a-param'] }
|
226
|
+
set_data('session_inspect'){ session.inspect }
|
235
227
|
end
|
236
228
|
|
237
229
|
def set_data(a, &block)
|
@@ -0,0 +1 @@
|
|
1
|
+
ERB Template Message: <%= view.message %>
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a json template for use in template engine tests.
|
File without changes
|
data/test/support/views/show.erb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
show page: <%= view.message %>
|
2
|
-
<%= partial "
|
2
|
+
<%= partial "_info", :info => 'Show Info' %>
|
data/test/system/rack_tests.rb
CHANGED
@@ -72,11 +72,6 @@ module Deas
|
|
72
72
|
expected_body = "Layout 1\nLayout 2\nLayout 3\nWith Layouts View: WithLayoutHandler\n"
|
73
73
|
assert_equal 200, last_response.status
|
74
74
|
assert_equal expected_body, last_response.body
|
75
|
-
|
76
|
-
get '/alt_with_layout'
|
77
|
-
expected_body = "Layout 1\nLayout 2\nLayout 3\nWith Layouts View: AlternateWithLayoutHandler\n"
|
78
|
-
assert_equal 200, last_response.status
|
79
|
-
assert_equal expected_body, last_response.body
|
80
75
|
end
|
81
76
|
|
82
77
|
should "render mixed (erb and other) templates using layouts" do
|
@@ -96,6 +91,13 @@ module Deas
|
|
96
91
|
assert_equal expected_body, last_response.body
|
97
92
|
end
|
98
93
|
|
94
|
+
should "render partial templates" do
|
95
|
+
get '/partial.html'
|
96
|
+
expected_body = "Stuff: some-info\n"
|
97
|
+
assert_equal 200, last_response.status
|
98
|
+
assert_equal expected_body, last_response.body
|
99
|
+
end
|
100
|
+
|
99
101
|
should "return a 302 redirecting to the expected locations" do
|
100
102
|
get '/redirect'
|
101
103
|
expected_location = 'http://google.com'
|