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/test/unit/logging_tests.rb
CHANGED
data/test/unit/route_tests.rb
CHANGED
@@ -59,13 +59,14 @@ class Deas::Route
|
|
59
59
|
assert_equal subject.handler_class, @runner_spy.handler_class
|
60
60
|
|
61
61
|
exp_args = {
|
62
|
-
:sinatra_call
|
63
|
-
:request
|
64
|
-
:response
|
65
|
-
:
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
62
|
+
:sinatra_call => @fake_sinatra_call,
|
63
|
+
:request => @fake_sinatra_call.request,
|
64
|
+
:response => @fake_sinatra_call.response,
|
65
|
+
:session => @fake_sinatra_call.session,
|
66
|
+
:params => @fake_sinatra_call.params,
|
67
|
+
:logger => @fake_sinatra_call.settings.logger,
|
68
|
+
:router => @fake_sinatra_call.settings.router,
|
69
|
+
:template_source => @fake_sinatra_call.settings.template_source
|
69
70
|
}
|
70
71
|
assert_equal exp_args, @runner_spy.args
|
71
72
|
|
@@ -107,13 +108,14 @@ class Deas::Route
|
|
107
108
|
def build(handler_class, args)
|
108
109
|
@handler_class, @args = handler_class, args
|
109
110
|
|
110
|
-
@sinatra_call
|
111
|
-
@request
|
112
|
-
@response
|
113
|
-
@
|
114
|
-
@
|
115
|
-
@
|
116
|
-
@
|
111
|
+
@sinatra_call = args[:sinatra_call]
|
112
|
+
@request = args[:request]
|
113
|
+
@response = args[:response]
|
114
|
+
@session = args[:session]
|
115
|
+
@params = args[:params]
|
116
|
+
@logger = args[:logger]
|
117
|
+
@router = args[:router]
|
118
|
+
@template_source = args[:template_source]
|
117
119
|
end
|
118
120
|
|
119
121
|
def run
|
data/test/unit/runner_tests.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'deas/runner'
|
3
3
|
|
4
|
+
require 'deas/logger'
|
4
5
|
require 'deas/router'
|
5
6
|
require 'test/support/view_handlers'
|
6
7
|
|
@@ -23,10 +24,10 @@ class Deas::Runner
|
|
23
24
|
subject{ @runner }
|
24
25
|
|
25
26
|
should have_readers :handler_class, :handler
|
26
|
-
should have_readers :request, :response, :
|
27
|
-
should have_readers :logger, :router, :
|
27
|
+
should have_readers :request, :response, :session
|
28
|
+
should have_readers :params, :logger, :router, :template_source
|
28
29
|
should have_imeths :halt, :redirect, :content_type, :status, :headers
|
29
|
-
should have_imeths :render, :send_file
|
30
|
+
should have_imeths :render, :partial, :send_file
|
30
31
|
|
31
32
|
should "know its handler and handler class" do
|
32
33
|
assert_equal EmptyViewHandler, subject.handler_class
|
@@ -36,10 +37,11 @@ class Deas::Runner
|
|
36
37
|
should "default its settings" do
|
37
38
|
assert_nil subject.request
|
38
39
|
assert_nil subject.response
|
40
|
+
assert_nil subject.session
|
39
41
|
assert_kind_of ::Hash, subject.params
|
40
42
|
assert_kind_of Deas::NullLogger, subject.logger
|
41
43
|
assert_kind_of Deas::Router, subject.router
|
42
|
-
|
44
|
+
assert_kind_of Deas::NullTemplateSource, subject.template_source
|
43
45
|
end
|
44
46
|
|
45
47
|
should "default its params" do
|
@@ -54,6 +56,7 @@ class Deas::Runner
|
|
54
56
|
assert_raises(NotImplementedError){ subject.status }
|
55
57
|
assert_raises(NotImplementedError){ subject.headers }
|
56
58
|
assert_raises(NotImplementedError){ subject.render }
|
59
|
+
assert_raises(NotImplementedError){ subject.partial }
|
57
60
|
assert_raises(NotImplementedError){ subject.send_file }
|
58
61
|
end
|
59
62
|
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'deas/server'
|
3
3
|
|
4
|
-
require 'test/support/view_handlers'
|
5
4
|
require 'deas/exceptions'
|
6
|
-
require 'deas/
|
5
|
+
require 'deas/logger'
|
7
6
|
require 'deas/router'
|
7
|
+
require 'deas/template'
|
8
|
+
require 'deas/template_source'
|
9
|
+
require 'test/support/view_handlers'
|
8
10
|
|
9
11
|
class Deas::Server::Configuration
|
10
12
|
|
@@ -24,7 +26,7 @@ class Deas::Server::Configuration
|
|
24
26
|
|
25
27
|
# server handling options
|
26
28
|
|
27
|
-
should have_imeths :verbose_logging, :logger
|
29
|
+
should have_imeths :verbose_logging, :logger, :template_source
|
28
30
|
|
29
31
|
should have_accessors :settings, :error_procs, :init_procs, :template_helpers
|
30
32
|
should have_accessors :middlewares, :router
|
@@ -49,8 +51,9 @@ class Deas::Server::Configuration
|
|
49
51
|
end
|
50
52
|
|
51
53
|
should "default the handling options" do
|
52
|
-
assert_instance_of Deas::NullLogger, subject.logger
|
53
54
|
assert_equal true, subject.verbose_logging
|
55
|
+
assert_instance_of Deas::NullLogger, subject.logger
|
56
|
+
assert_instance_of Deas::NullTemplateSource, subject.template_source
|
54
57
|
end
|
55
58
|
|
56
59
|
should "default its stored configuration" do
|
data/test/unit/server_tests.rb
CHANGED
@@ -3,6 +3,7 @@ require 'deas/server'
|
|
3
3
|
|
4
4
|
require 'logger'
|
5
5
|
require 'deas/router'
|
6
|
+
require 'deas/template_source'
|
6
7
|
|
7
8
|
module Deas::Server
|
8
9
|
|
@@ -22,7 +23,7 @@ module Deas::Server
|
|
22
23
|
|
23
24
|
# DSL for server handling settings
|
24
25
|
should have_imeths :init, :error, :template_helpers, :template_helper?
|
25
|
-
should have_imeths :use, :set, :verbose_logging, :logger
|
26
|
+
should have_imeths :use, :set, :verbose_logging, :logger, :template_source
|
26
27
|
should have_imeths :get, :post, :put, :patch, :delete
|
27
28
|
should have_imeths :redirect, :route, :url, :url_for
|
28
29
|
|
@@ -87,6 +88,10 @@ module Deas::Server
|
|
87
88
|
subject.logger stdout_logger
|
88
89
|
assert_equal stdout_logger, config.logger
|
89
90
|
|
91
|
+
a_source = Deas::TemplateSource.new(Factory.path)
|
92
|
+
subject.template_source a_source
|
93
|
+
assert_equal a_source, config.template_source
|
94
|
+
|
90
95
|
subject.default_charset 'latin1'
|
91
96
|
assert_equal 'latin1', config.default_charset
|
92
97
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'assert'
|
2
|
+
require 'deas/sinatra_app'
|
3
|
+
|
2
4
|
require 'sinatra/base'
|
3
|
-
require '
|
5
|
+
require 'deas/logger'
|
4
6
|
require 'deas/route_proxy'
|
5
7
|
require 'deas/route'
|
6
8
|
require 'deas/router'
|
7
9
|
require 'deas/server'
|
8
|
-
require '
|
10
|
+
require 'test/support/view_handlers'
|
9
11
|
|
10
12
|
module Deas::SinatraApp
|
11
13
|
|
@@ -42,17 +44,18 @@ module Deas::SinatraApp
|
|
42
44
|
|
43
45
|
should "have it's configuration set based on the server configuration" do
|
44
46
|
subject.settings.tap do |settings|
|
45
|
-
assert_equal 'staging',
|
46
|
-
assert_equal 'path/to/somewhere',
|
47
|
-
assert_equal 'path/to/somewhere/public',
|
48
|
-
assert_equal 'path/to/somewhere/views',
|
49
|
-
assert_equal true,
|
50
|
-
assert_equal false,
|
51
|
-
assert_equal false,
|
52
|
-
assert_equal true,
|
53
|
-
assert_equal true,
|
54
|
-
assert_instance_of Deas::NullLogger,
|
55
|
-
assert_instance_of Deas::Router,
|
47
|
+
assert_equal 'staging', settings.environment
|
48
|
+
assert_equal 'path/to/somewhere', settings.root.to_s
|
49
|
+
assert_equal 'path/to/somewhere/public', settings.public_folder.to_s
|
50
|
+
assert_equal 'path/to/somewhere/views', settings.views.to_s
|
51
|
+
assert_equal true, settings.dump_errors
|
52
|
+
assert_equal false, settings.method_override
|
53
|
+
assert_equal false, settings.sessions
|
54
|
+
assert_equal true, settings.static
|
55
|
+
assert_equal true, settings.reload_templates
|
56
|
+
assert_instance_of Deas::NullLogger, settings.logger
|
57
|
+
assert_instance_of Deas::Router, settings.router
|
58
|
+
assert_instance_of Deas::NullTemplateSource, settings.template_source
|
56
59
|
|
57
60
|
# settings that are set but can't be changed
|
58
61
|
assert_equal false, settings.logging
|
@@ -94,6 +94,14 @@ class Deas::SinatraRunner
|
|
94
94
|
})
|
95
95
|
end
|
96
96
|
|
97
|
+
should "render partials with locals" do
|
98
|
+
exp_result = Deas::Template::Partial.new(@fake_sinatra_call, 'info', {
|
99
|
+
:some => 'locals'
|
100
|
+
}).render
|
101
|
+
|
102
|
+
assert_equal exp_result, subject.partial('info', :some => 'locals')
|
103
|
+
end
|
104
|
+
|
97
105
|
should "call the sinatra_call's send_file to set the send files" do
|
98
106
|
block_called = false
|
99
107
|
args = subject.send_file('a/file', {:some => 'opts'}, &proc{ block_called = true })
|
@@ -104,4 +112,44 @@ class Deas::SinatraRunner
|
|
104
112
|
|
105
113
|
end
|
106
114
|
|
115
|
+
class InitWithEngineTests < UnitTests
|
116
|
+
desc "when init with a template source and matching engine"
|
117
|
+
setup do
|
118
|
+
@fake_sinatra_call = FakeSinatraCall.new
|
119
|
+
@runner = @runner_class.new(DeasRunnerViewHandler, {
|
120
|
+
:sinatra_call => @fake_sinatra_call,
|
121
|
+
:template_source => FakeTemplateSource.new
|
122
|
+
})
|
123
|
+
end
|
124
|
+
subject{ @runner }
|
125
|
+
|
126
|
+
should "render templates using the source" do
|
127
|
+
exp_handler = DeasRunnerViewHandler.new(subject)
|
128
|
+
exp_locals = {
|
129
|
+
:view => exp_handler,
|
130
|
+
:logger => @runner.logger,
|
131
|
+
:some => 'locals'
|
132
|
+
}
|
133
|
+
exp = ['render', 'info', @runner.handler, exp_locals]
|
134
|
+
assert_equal exp, subject.render('info', :locals => {
|
135
|
+
:some => 'locals'
|
136
|
+
})
|
137
|
+
end
|
138
|
+
|
139
|
+
should "render partials using the source" do
|
140
|
+
exp = ['partial', 'info', { :some => 'locals' }]
|
141
|
+
assert_equal exp, subject.partial('info', { :some => 'locals' })
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
class FakeTemplateSource
|
147
|
+
def engine_for?(template_name)
|
148
|
+
true
|
149
|
+
end
|
150
|
+
|
151
|
+
def render(*args); ['render', *args]; end
|
152
|
+
def partial(*args); ['partial', *args]; end
|
153
|
+
end
|
154
|
+
|
107
155
|
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'deas/template_engine'
|
3
|
+
|
4
|
+
require 'pathname'
|
5
|
+
require 'deas/logger'
|
6
|
+
require 'test/support/factory'
|
7
|
+
|
8
|
+
class Deas::TemplateEngine
|
9
|
+
|
10
|
+
class UnitTests < Assert::Context
|
11
|
+
desc "Deas::TemplateEngine"
|
12
|
+
setup do
|
13
|
+
@source_path = Factory.path
|
14
|
+
@template_name = Factory.path
|
15
|
+
@view_handler = 'a-view-handler'
|
16
|
+
@locals = {}
|
17
|
+
@content = Proc.new{}
|
18
|
+
@engine = Deas::TemplateEngine.new('some' => 'opts')
|
19
|
+
end
|
20
|
+
subject{ @engine }
|
21
|
+
|
22
|
+
should have_readers :source_path, :logger, :opts
|
23
|
+
should have_imeths :render, :partial, :capture_partial
|
24
|
+
|
25
|
+
should "default its source path" do
|
26
|
+
assert_equal Pathname.new(nil.to_s), subject.source_path
|
27
|
+
end
|
28
|
+
|
29
|
+
should "allow custom source paths" do
|
30
|
+
engine = Deas::TemplateEngine.new('source_path' => @source_path)
|
31
|
+
assert_equal Pathname.new(@source_path.to_s), engine.source_path
|
32
|
+
end
|
33
|
+
|
34
|
+
should "default its logger" do
|
35
|
+
assert_instance_of Deas::NullLogger, subject.logger
|
36
|
+
end
|
37
|
+
|
38
|
+
should "allow custom source loggers" do
|
39
|
+
logger = 'a-logger'
|
40
|
+
engine = Deas::TemplateEngine.new('logger' => logger)
|
41
|
+
assert_equal logger, engine.logger
|
42
|
+
end
|
43
|
+
|
44
|
+
should "default the opts if none given" do
|
45
|
+
exp_opts = {}
|
46
|
+
assert_equal exp_opts, Deas::TemplateEngine.new.opts
|
47
|
+
end
|
48
|
+
|
49
|
+
should "allow custom opts" do
|
50
|
+
exp_opts = {'some' => 'opts'}
|
51
|
+
assert_equal exp_opts, subject.opts
|
52
|
+
end
|
53
|
+
|
54
|
+
should "raise NotImplementedError on `render`" do
|
55
|
+
assert_raises NotImplementedError do
|
56
|
+
subject.render(@template_name, @view_handler, @locals)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
should "raise NotImplementedError on `partial`" do
|
61
|
+
assert_raises NotImplementedError do
|
62
|
+
subject.partial(@template_name, @locals)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
should "raise NotImplementedError on `capture_partial`" do
|
67
|
+
assert_raises NotImplementedError do
|
68
|
+
subject.capture_partial(@template_name, @locals, &@content)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
class NullTemplateEngineTests < Assert::Context
|
75
|
+
desc "Deas::NullTemplateEngine"
|
76
|
+
setup do
|
77
|
+
@v = 'a-view-handler'
|
78
|
+
@l = {}
|
79
|
+
@c = Proc.new{}
|
80
|
+
@engine = Deas::NullTemplateEngine.new('source_path' => ROOT.to_s)
|
81
|
+
end
|
82
|
+
subject{ @engine }
|
83
|
+
|
84
|
+
should "be a TemplateEngine" do
|
85
|
+
assert_kind_of Deas::TemplateEngine, subject
|
86
|
+
end
|
87
|
+
|
88
|
+
should "read and return the given path in its source path on `render`" do
|
89
|
+
exists_file = 'test/support/template.json'
|
90
|
+
exp = File.read(subject.source_path.join(exists_file).to_s)
|
91
|
+
assert_equal exp, subject.render(exists_file, @v, @l)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "call `render` to implement its `partial` method" do
|
95
|
+
exists_file = 'test/support/template.json'
|
96
|
+
exp = subject.render(exists_file, nil, @l)
|
97
|
+
assert_equal exp, subject.partial(exists_file, @l)
|
98
|
+
end
|
99
|
+
|
100
|
+
should "call `render` to implement its `capture_partial` method" do
|
101
|
+
exists_file = 'test/support/template.json'
|
102
|
+
exp = subject.render(exists_file, nil, @l)
|
103
|
+
assert_equal exp, subject.capture_partial(exists_file, @l, &@c)
|
104
|
+
end
|
105
|
+
|
106
|
+
should "complain if given a path that does not exist in its source path" do
|
107
|
+
no_exists_file = '/does/not/exists'
|
108
|
+
assert_raises ArgumentError do
|
109
|
+
subject.render(no_exists_file, @v, @l)
|
110
|
+
end
|
111
|
+
assert_raises ArgumentError do
|
112
|
+
subject.partial(no_exists_file, @l)
|
113
|
+
end
|
114
|
+
assert_raises ArgumentError do
|
115
|
+
subject.capture_partial(no_exists_file, @l, &@c)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
@@ -0,0 +1,221 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'deas/template_source'
|
3
|
+
|
4
|
+
require 'deas/template_engine'
|
5
|
+
|
6
|
+
class Deas::TemplateSource
|
7
|
+
|
8
|
+
class UnitTests < Assert::Context
|
9
|
+
desc "Deas::TemplateSource"
|
10
|
+
subject{ Deas::TemplateSource }
|
11
|
+
|
12
|
+
should "disallow certain engine extensions" do
|
13
|
+
exp = [ 'rb' ]
|
14
|
+
assert_equal exp, subject::DISALLOWED_ENGINE_EXTS
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
class InitTests < Assert::Context
|
20
|
+
setup do
|
21
|
+
@source_path = ROOT.join('test/support').to_s
|
22
|
+
@logger = 'a-logger'
|
23
|
+
@source = Deas::TemplateSource.new(@source_path, @logger)
|
24
|
+
end
|
25
|
+
subject{ @source }
|
26
|
+
|
27
|
+
should have_readers :path, :engines
|
28
|
+
should have_imeths :engine, :engine_for?
|
29
|
+
should have_imeths :render, :partial, :capture_partial
|
30
|
+
|
31
|
+
should "know its path" do
|
32
|
+
assert_equal @source_path.to_s, subject.path
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
class EngineRegistrationTests < InitTests
|
38
|
+
desc "when registering an engine"
|
39
|
+
setup do
|
40
|
+
@test_engine = TestEngine
|
41
|
+
end
|
42
|
+
|
43
|
+
should "allow registering new engines" do
|
44
|
+
assert_kind_of Deas::NullTemplateEngine, subject.engines['test']
|
45
|
+
subject.engine 'test', @test_engine
|
46
|
+
assert_kind_of @test_engine, subject.engines['test']
|
47
|
+
end
|
48
|
+
|
49
|
+
should "register with default options" do
|
50
|
+
subject.engine 'test', @test_engine
|
51
|
+
exp_opts = {
|
52
|
+
'source_path' => subject.path,
|
53
|
+
'logger' => @logger
|
54
|
+
}
|
55
|
+
assert_equal exp_opts, subject.engines['test'].opts
|
56
|
+
|
57
|
+
subject.engine 'test', @test_engine, 'an' => 'opt'
|
58
|
+
exp_opts = {
|
59
|
+
'source_path' => subject.path,
|
60
|
+
'logger' => @logger,
|
61
|
+
'an' => 'opt'
|
62
|
+
}
|
63
|
+
assert_equal exp_opts, subject.engines['test'].opts
|
64
|
+
|
65
|
+
subject.engine('test', @test_engine, {
|
66
|
+
'source_path' => 'something',
|
67
|
+
'logger' => 'another'
|
68
|
+
})
|
69
|
+
exp_opts = {
|
70
|
+
'source_path' => 'something',
|
71
|
+
'logger' => 'another'
|
72
|
+
}
|
73
|
+
assert_equal exp_opts, subject.engines['test'].opts
|
74
|
+
|
75
|
+
source = Deas::TemplateSource.new(@source_path)
|
76
|
+
source.engine('test', @test_engine)
|
77
|
+
assert_instance_of Deas::NullLogger, source.engines['test'].opts['logger']
|
78
|
+
end
|
79
|
+
|
80
|
+
should "complain if registering a disallowed temp" do
|
81
|
+
assert_kind_of Deas::NullTemplateEngine, subject.engines['rb']
|
82
|
+
assert_raises DisallowedEngineExtError do
|
83
|
+
subject.engine 'rb', @test_engine
|
84
|
+
end
|
85
|
+
assert_kind_of Deas::NullTemplateEngine, subject.engines['rb']
|
86
|
+
end
|
87
|
+
|
88
|
+
should "know if it has an engine registered for a given template name" do
|
89
|
+
assert_false subject.engine_for?('test_template')
|
90
|
+
|
91
|
+
subject.engine 'test', @test_engine
|
92
|
+
assert_true subject.engine_for?('test_template')
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
class RenderOrPartialTests < InitTests
|
98
|
+
setup do
|
99
|
+
@source.engine('test', TestEngine)
|
100
|
+
@source.engine('json', JsonEngine)
|
101
|
+
|
102
|
+
@v = TestServiceHandler
|
103
|
+
@l = {}
|
104
|
+
@c = Proc.new{}
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
class RenderTests < RenderOrPartialTests
|
110
|
+
desc "when rendering a template"
|
111
|
+
|
112
|
+
should "call `render` on the configured engine" do
|
113
|
+
result = subject.render('test_template', @v, @l)
|
114
|
+
assert_equal 'render-test-engine', result
|
115
|
+
end
|
116
|
+
|
117
|
+
should "only try rendering template files its has engines for" do
|
118
|
+
# there should be 2 files called "template" in `test/support` with diff
|
119
|
+
# extensions
|
120
|
+
result = subject.render('template', @v, @l)
|
121
|
+
assert_equal 'render-json-engine', result
|
122
|
+
end
|
123
|
+
|
124
|
+
should "use the null template engine when an engine can't be found" do
|
125
|
+
assert_raises(ArgumentError) do
|
126
|
+
subject.render(Factory.string, @v, @l)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
class PartialTests < RenderTests
|
133
|
+
desc "when partial rendering a template"
|
134
|
+
|
135
|
+
should "call `partial` on the configured engine" do
|
136
|
+
result = subject.partial('test_template', @l)
|
137
|
+
assert_equal 'partial-test-engine', result
|
138
|
+
end
|
139
|
+
|
140
|
+
should "only try rendering template files its has engines for" do
|
141
|
+
# there should be 2 files called "template" in `test/support` with diff
|
142
|
+
# extensions
|
143
|
+
result = subject.partial('template', @l)
|
144
|
+
assert_equal 'partial-json-engine', result
|
145
|
+
end
|
146
|
+
|
147
|
+
should "use the null template engine when an engine can't be found" do
|
148
|
+
assert_raises(ArgumentError) do
|
149
|
+
subject.partial(Factory.string, @l)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
class CapturePartialTests < RenderOrPartialTests
|
156
|
+
desc "when capture partial rendering a template"
|
157
|
+
|
158
|
+
should "call `capture_partial` on the configured engine" do
|
159
|
+
result = subject.capture_partial('test_template', @l, &@c)
|
160
|
+
assert_equal 'capture-partial-test-engine', result
|
161
|
+
end
|
162
|
+
|
163
|
+
should "only try rendering template files its has engines for" do
|
164
|
+
# there should be 2 files called "template" in `test/support` with diff
|
165
|
+
# extensions
|
166
|
+
result = subject.capture_partial('template', @l, &@c)
|
167
|
+
assert_equal 'capture-partial-json-engine', result
|
168
|
+
end
|
169
|
+
|
170
|
+
should "use the null template engine when an engine can't be found" do
|
171
|
+
assert_raises(ArgumentError) do
|
172
|
+
subject.capture_partial(Factory.string, @l, &@c)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
177
|
+
|
178
|
+
class NullTemplateSourceTests < Assert::Context
|
179
|
+
desc "Deas::NullTemplateSource"
|
180
|
+
setup do
|
181
|
+
@source = Deas::NullTemplateSource.new
|
182
|
+
end
|
183
|
+
subject{ @source }
|
184
|
+
|
185
|
+
should "be a template source" do
|
186
|
+
assert_kind_of Deas::TemplateSource, subject
|
187
|
+
end
|
188
|
+
|
189
|
+
should "have an empty path string" do
|
190
|
+
assert_equal '', subject.path
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
class TestEngine < Deas::TemplateEngine
|
196
|
+
def render(template_name, view_handler, locals)
|
197
|
+
'render-test-engine'
|
198
|
+
end
|
199
|
+
def partial(template_name, locals)
|
200
|
+
'partial-test-engine'
|
201
|
+
end
|
202
|
+
def capture_partial(template_name, locals, &content)
|
203
|
+
'capture-partial-test-engine'
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
class JsonEngine < Deas::TemplateEngine
|
208
|
+
def render(template_name, view_handler, locals)
|
209
|
+
'render-json-engine'
|
210
|
+
end
|
211
|
+
def partial(template_name, locals)
|
212
|
+
'partial-json-engine'
|
213
|
+
end
|
214
|
+
def capture_partial(template_name, locals, &content)
|
215
|
+
'capture-partial-json-engine'
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
TestServiceHandler = Class.new
|
220
|
+
|
221
|
+
end
|
data/test/unit/template_tests.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'assert'
|
2
|
-
require 'test/support/fake_sinatra_call'
|
3
2
|
require 'deas/template'
|
4
3
|
|
4
|
+
require 'test/support/fake_sinatra_call'
|
5
|
+
|
5
6
|
class Deas::Template
|
6
7
|
|
7
8
|
class UnitTests < Assert::Context
|
@@ -100,7 +101,7 @@ class Deas::Template
|
|
100
101
|
end
|
101
102
|
|
102
103
|
should "call the sinatra_call's erb method with #partial" do
|
103
|
-
render_args = subject.partial('
|
104
|
+
render_args = subject.partial('_part', {
|
104
105
|
:something => true
|
105
106
|
}, &Proc.new{ '#partial called this proc' })
|
106
107
|
|
@@ -130,7 +131,7 @@ class Deas::Template
|
|
130
131
|
class PartialTests < UnitTests
|
131
132
|
desc "Partial"
|
132
133
|
setup do
|
133
|
-
@partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/
|
134
|
+
@partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/_listing', {
|
134
135
|
:user => 'Joe Test'
|
135
136
|
})
|
136
137
|
end
|
@@ -140,15 +141,6 @@ class Deas::Template
|
|
140
141
|
assert_kind_of Deas::Template, subject
|
141
142
|
end
|
142
143
|
|
143
|
-
should "add an underscore to it's template's basename" do
|
144
|
-
assert_equal :"users/index/_listing", subject.name
|
145
|
-
end
|
146
|
-
|
147
|
-
should "not add an underscore to it's template's basename if one already exists" do
|
148
|
-
partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/_listing')
|
149
|
-
assert_equal :"users/index/_listing", partial.name
|
150
|
-
end
|
151
|
-
|
152
144
|
should "set it's locals option" do
|
153
145
|
assert_equal({ :user => 'Joe Test' }, subject.options[:locals])
|
154
146
|
end
|