deas 0.29.0 → 0.30.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -2
- data/deas.gemspec +0 -1
- data/lib/deas/deas_runner.rb +16 -0
- data/lib/deas/runner.rb +10 -8
- data/lib/deas/server.rb +0 -7
- data/lib/deas/sinatra_app.rb +0 -1
- data/lib/deas/sinatra_runner.rb +2 -23
- data/lib/deas/template_source.rb +20 -11
- data/lib/deas/test_runner.rb +14 -4
- data/lib/deas/version.rb +1 -1
- data/lib/deas/view_handler.rb +5 -3
- data/test/support/fake_sinatra_call.rb +0 -11
- data/test/support/routes.rb +4 -59
- data/test/support/template.erb +1 -1
- data/test/support/template.json +1 -1
- data/test/support/view_handlers.rb +21 -2
- data/test/system/rack_tests.rb +13 -43
- data/test/unit/deas_runner_tests.rb +87 -0
- data/test/unit/runner_tests.rb +4 -1
- data/test/unit/server_configuration_tests.rb +1 -10
- data/test/unit/sinatra_runner_tests.rb +0 -78
- data/test/unit/template_source_tests.rb +20 -16
- data/test/unit/test_runner_tests.rb +54 -14
- data/test/unit/view_handler_tests.rb +21 -6
- metadata +4 -49
- data/lib/deas/template.rb +0 -86
- data/test/support/views/_info.erb +0 -1
- data/test/support/views/haml_layout1.haml +0 -2
- data/test/support/views/haml_with_layout.haml +0 -1
- data/test/support/views/layout1.erb +0 -2
- data/test/support/views/layout2.erb +0 -2
- data/test/support/views/layout3.erb +0 -2
- data/test/support/views/show.erb +0 -2
- data/test/support/views/show.html.erb +0 -0
- data/test/support/views/show.json.erb +0 -0
- data/test/support/views/show_json.erb +0 -0
- data/test/support/views/some.html.file.other +0 -0
- data/test/support/views/some_file.engine +0 -0
- data/test/support/views/some_no_engine_extension +0 -0
- data/test/support/views/with_layout.erb +0 -1
- data/test/unit/template_tests.rb +0 -150
@@ -2,6 +2,7 @@ require 'assert'
|
|
2
2
|
require 'deas/deas_runner'
|
3
3
|
|
4
4
|
require 'deas/runner'
|
5
|
+
require 'deas/template_source'
|
5
6
|
require 'test/support/normalized_params_spy'
|
6
7
|
require 'test/support/view_handlers'
|
7
8
|
|
@@ -94,4 +95,90 @@ class Deas::DeasRunner
|
|
94
95
|
|
95
96
|
end
|
96
97
|
|
98
|
+
class RenderSetupTests < InitTests
|
99
|
+
setup do
|
100
|
+
@template_name = Factory.path
|
101
|
+
@locals = { Factory.string => Factory.string }
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
class RenderTests < RenderSetupTests
|
107
|
+
desc "render method"
|
108
|
+
setup do
|
109
|
+
@render_args = nil
|
110
|
+
Assert.stub(@runner.template_source, :render){ |*args| @render_args = args }
|
111
|
+
end
|
112
|
+
|
113
|
+
should "call to its template source render method" do
|
114
|
+
subject.render(@template_name, @locals)
|
115
|
+
exp = [@template_name, subject.handler, @locals]
|
116
|
+
assert_equal exp, @render_args
|
117
|
+
|
118
|
+
subject.render(@template_name)
|
119
|
+
exp = [@template_name, subject.handler, {}]
|
120
|
+
assert_equal exp, @render_args
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
class SourceRenderTests < RenderSetupTests
|
126
|
+
desc "source render method"
|
127
|
+
setup do
|
128
|
+
@source_render_args = nil
|
129
|
+
@source = Deas::TemplateSource.new(Factory.path)
|
130
|
+
Assert.stub(@source, :render){ |*args| @source_render_args = args }
|
131
|
+
end
|
132
|
+
|
133
|
+
should "call to the given source's render method" do
|
134
|
+
subject.source_render(@source, @template_name, @locals)
|
135
|
+
exp = [@template_name, subject.handler, @locals]
|
136
|
+
assert_equal exp, @source_render_args
|
137
|
+
|
138
|
+
subject.source_render(@source, @template_name)
|
139
|
+
exp = [@template_name, subject.handler, {}]
|
140
|
+
assert_equal exp, @source_render_args
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
class PartialTests < RenderSetupTests
|
146
|
+
desc "partial method"
|
147
|
+
setup do
|
148
|
+
@partial_args = nil
|
149
|
+
Assert.stub(@runner.template_source, :partial){ |*args| @partial_args = args }
|
150
|
+
end
|
151
|
+
|
152
|
+
should "call to its template source partial method" do
|
153
|
+
subject.partial(@template_name, @locals)
|
154
|
+
exp = [@template_name, @locals]
|
155
|
+
assert_equal exp, @partial_args
|
156
|
+
|
157
|
+
subject.partial(@template_name)
|
158
|
+
exp = [@template_name, {}]
|
159
|
+
assert_equal exp, @partial_args
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
class SourcePartialTests < RenderSetupTests
|
165
|
+
desc "source partial method"
|
166
|
+
setup do
|
167
|
+
@source_partial_args = nil
|
168
|
+
@source = Deas::TemplateSource.new(Factory.path)
|
169
|
+
Assert.stub(@source, :partial){ |*args| @source_partial_args = args }
|
170
|
+
end
|
171
|
+
|
172
|
+
should "call to the given source's partial method" do
|
173
|
+
subject.source_partial(@source, @template_name, @locals)
|
174
|
+
exp = [@template_name, @locals]
|
175
|
+
assert_equal exp, @source_partial_args
|
176
|
+
|
177
|
+
subject.source_partial(@source, @template_name)
|
178
|
+
exp = [@template_name, {}]
|
179
|
+
assert_equal exp, @source_partial_args
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
183
|
+
|
97
184
|
end
|
data/test/unit/runner_tests.rb
CHANGED
@@ -27,7 +27,8 @@ class Deas::Runner
|
|
27
27
|
should have_readers :request, :response, :session
|
28
28
|
should have_readers :params, :logger, :router, :template_source
|
29
29
|
should have_imeths :halt, :redirect, :content_type, :status, :headers
|
30
|
-
should have_imeths :render, :partial, :
|
30
|
+
should have_imeths :render, :source_render, :partial, :source_partial
|
31
|
+
should have_imeths :send_file
|
31
32
|
|
32
33
|
should "know its handler and handler class" do
|
33
34
|
assert_equal EmptyViewHandler, subject.handler_class
|
@@ -51,7 +52,9 @@ class Deas::Runner
|
|
51
52
|
assert_raises(NotImplementedError){ subject.status }
|
52
53
|
assert_raises(NotImplementedError){ subject.headers }
|
53
54
|
assert_raises(NotImplementedError){ subject.render }
|
55
|
+
assert_raises(NotImplementedError){ subject.source_render }
|
54
56
|
assert_raises(NotImplementedError){ subject.partial }
|
57
|
+
assert_raises(NotImplementedError){ subject.source_partial }
|
55
58
|
assert_raises(NotImplementedError){ subject.send_file }
|
56
59
|
end
|
57
60
|
|
@@ -4,7 +4,6 @@ require 'deas/server'
|
|
4
4
|
require 'deas/exceptions'
|
5
5
|
require 'deas/logger'
|
6
6
|
require 'deas/router'
|
7
|
-
require 'deas/template'
|
8
7
|
require 'deas/template_source'
|
9
8
|
require 'test/support/view_handlers'
|
10
9
|
|
@@ -30,7 +29,7 @@ class Deas::Server::Configuration
|
|
30
29
|
|
31
30
|
should have_accessors :settings, :error_procs, :init_procs, :template_helpers
|
32
31
|
should have_accessors :middlewares, :router
|
33
|
-
should have_imeths :valid?, :validate!, :urls, :routes
|
32
|
+
should have_imeths :valid?, :validate!, :urls, :routes
|
34
33
|
|
35
34
|
should "default the env to 'development'" do
|
36
35
|
assert_equal 'development', subject.env
|
@@ -67,14 +66,6 @@ class Deas::Server::Configuration
|
|
67
66
|
assert_kind_of Deas::Router, subject.router
|
68
67
|
end
|
69
68
|
|
70
|
-
should "build a template scope including its template helpers" do
|
71
|
-
config = Deas::Server::Configuration.new
|
72
|
-
config.template_helpers << (helper_module = Module.new)
|
73
|
-
|
74
|
-
assert_includes Deas::Template::Scope, config.template_scope.ancestors
|
75
|
-
assert_includes helper_module, config.template_scope.included_modules
|
76
|
-
end
|
77
|
-
|
78
69
|
should "not be valid until validate! has been run" do
|
79
70
|
assert_not subject.valid?
|
80
71
|
|
@@ -2,7 +2,6 @@ require 'assert'
|
|
2
2
|
require 'deas/sinatra_runner'
|
3
3
|
|
4
4
|
require 'deas/deas_runner'
|
5
|
-
require 'deas/template'
|
6
5
|
require 'test/support/fake_sinatra_call'
|
7
6
|
require 'test/support/view_handlers'
|
8
7
|
|
@@ -65,43 +64,6 @@ class Deas::SinatraRunner
|
|
65
64
|
assert_equal [exp_headers], subject.headers(exp_headers)
|
66
65
|
end
|
67
66
|
|
68
|
-
should "render the template with :view/:logger locals and the handler layouts" do
|
69
|
-
exp_handler = DeasRunnerViewHandler.new(subject)
|
70
|
-
exp_layouts = DeasRunnerViewHandler.layouts
|
71
|
-
exp_result = Deas::Template.new(@fake_sinatra_call, 'index', {
|
72
|
-
:locals => {
|
73
|
-
:view => exp_handler,
|
74
|
-
:logger => @runner.logger
|
75
|
-
},
|
76
|
-
:layout => exp_layouts
|
77
|
-
}).render
|
78
|
-
assert_equal exp_result, subject.render('index')
|
79
|
-
|
80
|
-
exp_result = Deas::Template.new(@fake_sinatra_call, 'index', {
|
81
|
-
:locals => {
|
82
|
-
:view => 'a-view',
|
83
|
-
:some => 'thing',
|
84
|
-
:logger => @runner.logger
|
85
|
-
},
|
86
|
-
:layout => false
|
87
|
-
}).render
|
88
|
-
assert_equal exp_result, subject.render('index', {
|
89
|
-
:layout => false,
|
90
|
-
:locals => {
|
91
|
-
:view => 'a-view',
|
92
|
-
:some => 'thing'
|
93
|
-
}
|
94
|
-
})
|
95
|
-
end
|
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
|
-
|
105
67
|
should "call the sinatra_call's send_file to set the send files" do
|
106
68
|
block_called = false
|
107
69
|
args = subject.send_file('a/file', {:some => 'opts'}, &proc{ block_called = true })
|
@@ -112,44 +74,4 @@ class Deas::SinatraRunner
|
|
112
74
|
|
113
75
|
end
|
114
76
|
|
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
|
-
|
155
77
|
end
|
@@ -26,7 +26,7 @@ class Deas::TemplateSource
|
|
26
26
|
subject{ @source }
|
27
27
|
|
28
28
|
should have_readers :path, :engines
|
29
|
-
should have_imeths :engine, :engine_for?
|
29
|
+
should have_imeths :engine, :engine_for?, :engine_for_template?
|
30
30
|
should have_imeths :render, :partial
|
31
31
|
|
32
32
|
should "know its path" do
|
@@ -50,30 +50,30 @@ class Deas::TemplateSource
|
|
50
50
|
should "register with default options" do
|
51
51
|
subject.engine 'test', @test_engine
|
52
52
|
exp_opts = {
|
53
|
-
'source_path'
|
54
|
-
'logger'
|
55
|
-
'
|
53
|
+
'source_path' => subject.path,
|
54
|
+
'logger' => @logger,
|
55
|
+
'default_template_source' => subject
|
56
56
|
}
|
57
57
|
assert_equal exp_opts, subject.engines['test'].opts
|
58
58
|
|
59
59
|
subject.engine 'test', @test_engine, 'an' => 'opt'
|
60
60
|
exp_opts = {
|
61
|
-
'source_path'
|
62
|
-
'logger'
|
63
|
-
'
|
64
|
-
'an'
|
61
|
+
'source_path' => subject.path,
|
62
|
+
'logger' => @logger,
|
63
|
+
'default_template_source' => subject,
|
64
|
+
'an' => 'opt'
|
65
65
|
}
|
66
66
|
assert_equal exp_opts, subject.engines['test'].opts
|
67
67
|
|
68
68
|
subject.engine('test', @test_engine, {
|
69
|
-
'source_path'
|
70
|
-
'logger'
|
71
|
-
'
|
69
|
+
'source_path' => 'something',
|
70
|
+
'logger' => 'another',
|
71
|
+
'default_template_source' => 'tempsource'
|
72
72
|
})
|
73
73
|
exp_opts = {
|
74
|
-
'source_path'
|
75
|
-
'logger'
|
76
|
-
'
|
74
|
+
'source_path' => 'something',
|
75
|
+
'logger' => 'another',
|
76
|
+
'default_template_source' => 'tempsource'
|
77
77
|
}
|
78
78
|
assert_equal exp_opts, subject.engines['test'].opts
|
79
79
|
|
@@ -91,10 +91,14 @@ class Deas::TemplateSource
|
|
91
91
|
end
|
92
92
|
|
93
93
|
should "know if it has an engine registered for a given template name" do
|
94
|
-
assert_false subject.engine_for?(
|
94
|
+
assert_false subject.engine_for?(Factory.string)
|
95
|
+
assert_false subject.engine_for?('test')
|
96
|
+
assert_false subject.engine_for_template?(Factory.string)
|
97
|
+
assert_false subject.engine_for_template?('test_template')
|
95
98
|
|
96
99
|
subject.engine 'test', @test_engine
|
97
|
-
assert_true subject.engine_for?('
|
100
|
+
assert_true subject.engine_for?('test')
|
101
|
+
assert_true subject.engine_for_template?('test_template')
|
98
102
|
end
|
99
103
|
|
100
104
|
end
|
@@ -3,6 +3,7 @@ require 'deas/test_runner'
|
|
3
3
|
|
4
4
|
require 'rack/test'
|
5
5
|
require 'deas/runner'
|
6
|
+
require 'deas/template_source'
|
6
7
|
require 'test/support/normalized_params_spy'
|
7
8
|
require 'test/support/view_handlers'
|
8
9
|
|
@@ -133,31 +134,70 @@ class Deas::TestRunner
|
|
133
134
|
end
|
134
135
|
|
135
136
|
should "build render args if render is called" do
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
137
|
+
template_name = Factory.path
|
138
|
+
locals = { Factory.string => Factory.string }
|
139
|
+
args = subject.render template_name, locals
|
140
|
+
|
141
|
+
assert_kind_of RenderArgs, args
|
142
|
+
[:template_name, :locals].each do |meth|
|
143
|
+
assert_respond_to meth, args
|
144
|
+
end
|
145
|
+
assert_equal template_name, args.template_name
|
146
|
+
assert_equal locals, args.locals
|
147
|
+
end
|
148
|
+
|
149
|
+
should "build source render args if source source render is called" do
|
150
|
+
source = Deas::TemplateSource.new(Factory.path)
|
151
|
+
template_name = Factory.path
|
152
|
+
locals = { Factory.string => Factory.string }
|
153
|
+
args = subject.source_render source, template_name, locals
|
154
|
+
|
155
|
+
assert_kind_of SourceRenderArgs, args
|
156
|
+
[:source, :template_name, :locals].each do |meth|
|
157
|
+
assert_respond_to meth, args
|
140
158
|
end
|
141
|
-
assert_equal
|
159
|
+
assert_equal source, args.source
|
160
|
+
assert_equal template_name, args.template_name
|
161
|
+
assert_equal locals, args.locals
|
142
162
|
end
|
143
163
|
|
144
164
|
should "build partial args if partial is called" do
|
145
|
-
|
146
|
-
|
165
|
+
template_name = Factory.path
|
166
|
+
locals = { Factory.string => Factory.string }
|
167
|
+
args = subject.partial template_name, locals
|
168
|
+
|
169
|
+
assert_kind_of PartialArgs, args
|
147
170
|
[:template_name, :locals].each do |meth|
|
148
|
-
assert_respond_to meth,
|
171
|
+
assert_respond_to meth, args
|
149
172
|
end
|
150
|
-
assert_equal
|
151
|
-
assert_equal
|
173
|
+
assert_equal template_name, args.template_name
|
174
|
+
assert_equal locals, args.locals
|
175
|
+
end
|
176
|
+
|
177
|
+
should "build source partial args if source partial is called" do
|
178
|
+
source = Deas::TemplateSource.new(Factory.path)
|
179
|
+
template_name = Factory.path
|
180
|
+
locals = { Factory.string => Factory.string }
|
181
|
+
args = subject.source_partial source, template_name, locals
|
182
|
+
|
183
|
+
assert_kind_of SourcePartialArgs, args
|
184
|
+
[:source, :template_name, :locals].each do |meth|
|
185
|
+
assert_respond_to meth, args
|
186
|
+
end
|
187
|
+
assert_equal source, args.source
|
188
|
+
assert_equal template_name, args.template_name
|
189
|
+
assert_equal locals, args.locals
|
152
190
|
end
|
153
191
|
|
154
192
|
should "build send file args if send file is called" do
|
155
|
-
|
156
|
-
|
193
|
+
path = Factory.path
|
194
|
+
args = subject.send_file path
|
195
|
+
|
196
|
+
assert_kind_of SendFileArgs, args
|
157
197
|
[:file_path, :options, :block].each do |meth|
|
158
|
-
assert_respond_to meth,
|
198
|
+
assert_respond_to meth, args
|
159
199
|
end
|
160
|
-
assert_equal
|
200
|
+
assert_equal path, args.file_path
|
161
201
|
end
|
162
202
|
|
163
203
|
end
|
@@ -2,6 +2,7 @@ require 'assert'
|
|
2
2
|
require 'deas/view_handler'
|
3
3
|
|
4
4
|
require 'deas/test_helpers'
|
5
|
+
require 'deas/template_source'
|
5
6
|
require 'test/support/view_handlers'
|
6
7
|
|
7
8
|
module Deas::ViewHandler
|
@@ -73,20 +74,34 @@ module Deas::ViewHandler
|
|
73
74
|
|
74
75
|
should "render templates" do
|
75
76
|
render_args = test_runner(RenderViewHandler).run
|
76
|
-
assert_equal "my_template",
|
77
|
-
assert_equal({
|
77
|
+
assert_equal "my_template", render_args.template_name
|
78
|
+
assert_equal({:some => 'local'}, render_args.locals)
|
79
|
+
end
|
80
|
+
|
81
|
+
should "render templates on a given source" do
|
82
|
+
render_args = test_runner(SourceRenderViewHandler).run
|
83
|
+
assert_kind_of Deas::TemplateSource, render_args.source
|
84
|
+
assert_equal "my_template", render_args.template_name
|
85
|
+
assert_equal({:some => 'local'}, render_args.locals)
|
78
86
|
end
|
79
87
|
|
80
88
|
should "render partial templates" do
|
81
89
|
partial_args = test_runner(PartialViewHandler).run
|
82
|
-
assert_equal "my_partial",
|
83
|
-
assert_equal({:some => '
|
90
|
+
assert_equal "my_partial", partial_args.template_name
|
91
|
+
assert_equal({:some => 'local'}, partial_args.locals)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "render partial templates on a given source" do
|
95
|
+
partial_args = test_runner(SourcePartialViewHandler).run
|
96
|
+
assert_kind_of Deas::TemplateSource, partial_args.source
|
97
|
+
assert_equal "my_partial", partial_args.template_name
|
98
|
+
assert_equal({:some => 'local'}, partial_args.locals)
|
84
99
|
end
|
85
100
|
|
86
101
|
should "send files" do
|
87
102
|
send_file_args = test_runner(SendFileViewHandler).run
|
88
|
-
assert_equal "my_file.txt",
|
89
|
-
assert_equal({
|
103
|
+
assert_equal "my_file.txt", send_file_args.file_path
|
104
|
+
assert_equal({:some => :option}, send_file_args.options)
|
90
105
|
end
|
91
106
|
|
92
107
|
end
|