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.
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