deas 0.29.0 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/Gemfile +0 -2
  2. data/deas.gemspec +0 -1
  3. data/lib/deas/deas_runner.rb +16 -0
  4. data/lib/deas/runner.rb +10 -8
  5. data/lib/deas/server.rb +0 -7
  6. data/lib/deas/sinatra_app.rb +0 -1
  7. data/lib/deas/sinatra_runner.rb +2 -23
  8. data/lib/deas/template_source.rb +20 -11
  9. data/lib/deas/test_runner.rb +14 -4
  10. data/lib/deas/version.rb +1 -1
  11. data/lib/deas/view_handler.rb +5 -3
  12. data/test/support/fake_sinatra_call.rb +0 -11
  13. data/test/support/routes.rb +4 -59
  14. data/test/support/template.erb +1 -1
  15. data/test/support/template.json +1 -1
  16. data/test/support/view_handlers.rb +21 -2
  17. data/test/system/rack_tests.rb +13 -43
  18. data/test/unit/deas_runner_tests.rb +87 -0
  19. data/test/unit/runner_tests.rb +4 -1
  20. data/test/unit/server_configuration_tests.rb +1 -10
  21. data/test/unit/sinatra_runner_tests.rb +0 -78
  22. data/test/unit/template_source_tests.rb +20 -16
  23. data/test/unit/test_runner_tests.rb +54 -14
  24. data/test/unit/view_handler_tests.rb +21 -6
  25. metadata +4 -49
  26. data/lib/deas/template.rb +0 -86
  27. data/test/support/views/_info.erb +0 -1
  28. data/test/support/views/haml_layout1.haml +0 -2
  29. data/test/support/views/haml_with_layout.haml +0 -1
  30. data/test/support/views/layout1.erb +0 -2
  31. data/test/support/views/layout2.erb +0 -2
  32. data/test/support/views/layout3.erb +0 -2
  33. data/test/support/views/show.erb +0 -2
  34. data/test/support/views/show.html.erb +0 -0
  35. data/test/support/views/show.json.erb +0 -0
  36. data/test/support/views/show_json.erb +0 -0
  37. data/test/support/views/some.html.file.other +0 -0
  38. data/test/support/views/some_file.engine +0 -0
  39. data/test/support/views/some_no_engine_extension +0 -0
  40. data/test/support/views/with_layout.erb +0 -1
  41. 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
@@ -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, :send_file
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, :template_scope
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' => subject.path,
54
- 'logger' => @logger,
55
- 'deas_template_source' => subject
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' => subject.path,
62
- 'logger' => @logger,
63
- 'deas_template_source' => subject,
64
- 'an' => 'opt'
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' => 'something',
70
- 'logger' => 'another',
71
- 'deas_template_source' => 'tempsource'
69
+ 'source_path' => 'something',
70
+ 'logger' => 'another',
71
+ 'default_template_source' => 'tempsource'
72
72
  })
73
73
  exp_opts = {
74
- 'source_path' => 'something',
75
- 'logger' => 'another',
76
- 'deas_template_source' => 'tempsource'
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?('test_template')
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?('test_template')
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
- value = subject.render 'some/template'
137
- assert_kind_of RenderArgs, value
138
- [:template_name, :options, :block].each do |meth|
139
- assert_respond_to meth, value
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 'some/template', value.template_name
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
- value = subject.partial 'some/partial', :some => 'locals'
146
- assert_kind_of PartialArgs, value
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, value
171
+ assert_respond_to meth, args
149
172
  end
150
- assert_equal 'some/partial', value.template_name
151
- assert_equal({:some => 'locals'}, value.locals)
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
- value = subject.send_file 'some/file/path'
156
- assert_kind_of SendFileArgs, value
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, value
198
+ assert_respond_to meth, args
159
199
  end
160
- assert_equal 'some/file/path', value.file_path
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", render_args.template_name
77
- assert_equal({ :some => :option }, render_args.options)
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", partial_args.template_name
83
- assert_equal({:some => 'locals'}, partial_args.locals)
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", send_file_args.file_path
89
- assert_equal({ :some => :option }, send_file_args.options)
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