deas 0.29.0 → 0.30.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/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
|