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
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deas
3
3
  version: !ruby/object:Gem::Version
4
- hash: 107
4
+ hash: 103
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 29
8
+ - 30
9
9
  - 0
10
- version: 0.29.0
10
+ version: 0.30.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2015-01-08 00:00:00 Z
19
+ date: 2015-02-04 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -100,20 +100,6 @@ dependencies:
100
100
  name: assert-rack-test
101
101
  version_requirements: *id005
102
102
  prerelease: false
103
- - !ruby/object:Gem::Dependency
104
- requirement: &id006 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 3
110
- segments:
111
- - 0
112
- version: "0"
113
- type: :development
114
- name: haml
115
- version_requirements: *id006
116
- prerelease: false
117
103
  description: Handler-based web framework powered by Sinatra
118
104
  email:
119
105
  - kelly@kellyredding.com
@@ -148,7 +134,6 @@ files:
148
134
  - lib/deas/show_exceptions.rb
149
135
  - lib/deas/sinatra_app.rb
150
136
  - lib/deas/sinatra_runner.rb
151
- - lib/deas/template.rb
152
137
  - lib/deas/template_engine.rb
153
138
  - lib/deas/template_source.rb
154
139
  - lib/deas/test_helpers.rb
@@ -168,20 +153,6 @@ files:
168
153
  - test/support/test_layout2.test
169
154
  - test/support/test_template.test
170
155
  - test/support/view_handlers.rb
171
- - test/support/views/_info.erb
172
- - test/support/views/haml_layout1.haml
173
- - test/support/views/haml_with_layout.haml
174
- - test/support/views/layout1.erb
175
- - test/support/views/layout2.erb
176
- - test/support/views/layout3.erb
177
- - test/support/views/show.erb
178
- - test/support/views/show.html.erb
179
- - test/support/views/show.json.erb
180
- - test/support/views/show_json.erb
181
- - test/support/views/some.html.file.other
182
- - test/support/views/some_file.engine
183
- - test/support/views/some_no_engine_extension
184
- - test/support/views/with_layout.erb
185
156
  - test/system/rack_tests.rb
186
157
  - test/unit/cgi_tests.rb
187
158
  - test/unit/deas_runner_tests.rb
@@ -200,7 +171,6 @@ files:
200
171
  - test/unit/sinatra_runner_tests.rb
201
172
  - test/unit/template_engine_tests.rb
202
173
  - test/unit/template_source_tests.rb
203
- - test/unit/template_tests.rb
204
174
  - test/unit/test_runner_tests.rb
205
175
  - test/unit/url_tests.rb
206
176
  - test/unit/view_handler_tests.rb
@@ -250,20 +220,6 @@ test_files:
250
220
  - test/support/test_layout2.test
251
221
  - test/support/test_template.test
252
222
  - test/support/view_handlers.rb
253
- - test/support/views/_info.erb
254
- - test/support/views/haml_layout1.haml
255
- - test/support/views/haml_with_layout.haml
256
- - test/support/views/layout1.erb
257
- - test/support/views/layout2.erb
258
- - test/support/views/layout3.erb
259
- - test/support/views/show.erb
260
- - test/support/views/show.html.erb
261
- - test/support/views/show.json.erb
262
- - test/support/views/show_json.erb
263
- - test/support/views/some.html.file.other
264
- - test/support/views/some_file.engine
265
- - test/support/views/some_no_engine_extension
266
- - test/support/views/with_layout.erb
267
223
  - test/system/rack_tests.rb
268
224
  - test/unit/cgi_tests.rb
269
225
  - test/unit/deas_runner_tests.rb
@@ -282,7 +238,6 @@ test_files:
282
238
  - test/unit/sinatra_runner_tests.rb
283
239
  - test/unit/template_engine_tests.rb
284
240
  - test/unit/template_source_tests.rb
285
- - test/unit/template_tests.rb
286
241
  - test/unit/test_runner_tests.rb
287
242
  - test/unit/url_tests.rb
288
243
  - test/unit/view_handler_tests.rb
data/lib/deas/template.rb DELETED
@@ -1,86 +0,0 @@
1
- require 'rack'
2
-
3
- module Deas
4
-
5
- class Template
6
-
7
- attr_reader :name, :options
8
-
9
- def initialize(sinatra_call, name, options = nil)
10
- @sinatra_call, @name, @options = sinatra_call, name.to_sym, (options || {})
11
- @options[:scope] = @sinatra_call.settings.deas_template_scope.new(@sinatra_call)
12
-
13
- (@options.delete(:layout) || @options.delete(:layouts) || []).tap do |l|
14
- @layouts = l.compact.map(&:to_sym)
15
- end
16
- end
17
-
18
- def engine(template_name)
19
- return 'erb' if @sinatra_call.settings.views.nil?
20
-
21
- views_path = Pathname.new(@options[:views] || @sinatra_call.settings.views)
22
- template = Dir.glob("#{views_path.join(template_name.to_s)}.*").first.to_s
23
- File.extname(template)[1..-1] || 'erb'
24
- end
25
-
26
- # builds render-blocks like:
27
- #
28
- # erb :main_layout do
29
- # erb :second_layout do
30
- # erb :user_index
31
- # end
32
- # end
33
-
34
- def render(&block)
35
- template_names = [ @layouts, @name ].flatten.reverse
36
- top_render_proc = template_names.inject(block) do |render_proc, name|
37
- proc{ @sinatra_call.send(engine(name), name, @options.dup, &render_proc) }
38
- end
39
- top_render_proc.call
40
- end
41
-
42
- class Scope
43
-
44
- attr_reader :sinatra_call
45
-
46
- def initialize(sinatra_call)
47
- @sinatra_call = sinatra_call
48
- end
49
-
50
- def render(name, options = nil, &block)
51
- Template.new(@sinatra_call, name, options || {}).render(&block)
52
- end
53
-
54
- def partial(name, locals = nil, &block)
55
- Partial.new(@sinatra_call, name, locals || {}).render(&block)
56
- end
57
-
58
- def escape_html(html)
59
- Rack::Utils.escape_html(html)
60
- end
61
- alias :h :escape_html
62
-
63
- def escape_url(path)
64
- Rack::Utils.escape_path(path)
65
- end
66
- alias :u :escape_url
67
-
68
- def ==(other_scope)
69
- self.sinatra_call == other_scope.sinatra_call
70
- self.class.included_modules == other_scope.class.included_modules
71
- end
72
-
73
- end
74
-
75
- class Partial < Template
76
-
77
- def initialize(sinatra_call, name, locals = nil)
78
- options = { :locals => (locals || {}) }
79
- super sinatra_call, name, options
80
- end
81
-
82
- end
83
-
84
- end
85
-
86
- end
@@ -1 +0,0 @@
1
- Stuff: <%= info %>
@@ -1,2 +0,0 @@
1
- Layout 1
2
- =yield
@@ -1 +0,0 @@
1
- %span= view.class.inspect
@@ -1,2 +0,0 @@
1
- Layout 1
2
- <%= yield %>
@@ -1,2 +0,0 @@
1
- Layout 2
2
- <%= yield %>
@@ -1,2 +0,0 @@
1
- Layout 3
2
- <%= yield %>
@@ -1,2 +0,0 @@
1
- show page: <%= view.message %>
2
- <%= partial "_info", :info => 'Show Info' %>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1 +0,0 @@
1
- With Layouts View: <%= view.class.inspect %>
@@ -1,150 +0,0 @@
1
- require 'assert'
2
- require 'deas/template'
3
-
4
- require 'test/support/fake_sinatra_call'
5
-
6
- class Deas::Template
7
-
8
- class UnitTests < Assert::Context
9
- desc "Deas::Template"
10
- setup do
11
- @fake_sinatra_call = FakeSinatraCall.new
12
- @template = Deas::Template.new(@fake_sinatra_call, 'users/index')
13
- end
14
- subject{ @template }
15
-
16
- should have_instance_methods :name, :options, :render, :engine
17
-
18
- should "symbolize it's name" do
19
- assert_equal :"users/index", subject.name
20
- end
21
-
22
- should "set it's scope option" do
23
- assert_instance_of Deas::Template::Scope, subject.options[:scope]
24
- end
25
-
26
- should "know a named template's render engine" do
27
- fake_sinatra_call = FakeSinatraCall.new(:views => TEST_SUPPORT_ROOT.join('views'))
28
-
29
- views_exist = Deas::Template.new(fake_sinatra_call, 'whatever')
30
- assert_equal 'erb', views_exist.engine('layout1')
31
- assert_equal 'haml', views_exist.engine('haml_layout1')
32
- assert_equal 'other', views_exist.engine('some.html.file')
33
- assert_equal 'engine', views_exist.engine('some_file')
34
- assert_equal 'erb', views_exist.engine('some_no_engine_extension')
35
- assert_equal 'erb', views_exist.engine('does_not_exist')
36
-
37
- views_no_exist = Deas::Template.new(fake_sinatra_call, 'whatever', {
38
- :views => '/does/not/exist'
39
- })
40
- assert_equal 'erb', views_no_exist.engine('layout1')
41
- assert_equal 'erb', views_no_exist.engine('haml_layout1')
42
- assert_equal 'erb', views_no_exist.engine('some.html.file')
43
- assert_equal 'erb', views_no_exist.engine('some_file')
44
- assert_equal 'erb', views_no_exist.engine('some_no_engine_extension')
45
- assert_equal 'erb', views_no_exist.engine('does_not_exist')
46
-
47
- end
48
-
49
- should "call the sinatra_call's `erb` method with #render" do
50
- return_value = subject.render
51
-
52
- assert_equal subject.name, return_value[0]
53
- assert_equal subject.options, return_value[1]
54
- end
55
-
56
- end
57
-
58
- class WithLayoutsTests < UnitTests
59
- desc "with layouts"
60
- setup do
61
- @template = Deas::Template.new(@fake_sinatra_call, 'users/index', {
62
- :layout => [ 'layouts/web', 'layouts/search' ]
63
- })
64
- end
65
-
66
- should "call the engine's `erb` method for each layout" do
67
- web_lay_render_args = subject.render
68
- search_lay_render_args = web_lay_render_args.block_call_result
69
- users_index_render_args = search_lay_render_args.block_call_result
70
-
71
- assert_equal :"layouts/web", web_lay_render_args.template_name
72
- assert_equal :"layouts/search", search_lay_render_args.template_name
73
- assert_equal :"users/index", users_index_render_args.template_name
74
- end
75
-
76
- end
77
-
78
- class ScopeTests < UnitTests
79
- desc "Deas::Template::RenderScope"
80
- setup do
81
- @scope = Deas::Template::Scope.new(@fake_sinatra_call)
82
- end
83
- subject{ @scope }
84
-
85
- should have_reader :sinatra_call
86
- should have_imeths :render, :partial, :escape_html, :h, :escape_url, :u
87
-
88
- should "call the sinatra_call's erb method with #render" do
89
- render_args = subject.render('my_template', {
90
- :views => '/path/to/templates',
91
- :locals => { :something => true }
92
- }, &Proc.new{ '#render called this proc' })
93
-
94
- assert_equal :my_template, render_args.template_name
95
- assert_instance_of Deas::Template::Scope, render_args.opts[:scope]
96
-
97
- exp_locals = { :something => true }
98
- assert_equal exp_locals, render_args.opts[:locals]
99
-
100
- assert_equal '#render called this proc', render_args.block_call_result
101
- end
102
-
103
- should "call the sinatra_call's erb method with #partial" do
104
- render_args = subject.partial('_part', {
105
- :something => true
106
- }, &Proc.new{ '#partial called this proc' })
107
-
108
- assert_equal :_part, render_args.template_name
109
- assert_instance_of Deas::Template::Scope, render_args.opts[:scope]
110
-
111
- exp_locals = { :something => true }
112
- assert_equal exp_locals, render_args.opts[:locals]
113
-
114
- assert_equal '#partial called this proc', render_args.block_call_result
115
- end
116
-
117
- should "escape html with #h or #escape_html" do
118
- exp_val = "&lt;strong&gt;&lt;&#x2F;strong&gt;"
119
- assert_equal exp_val, subject.escape_html("<strong></strong>")
120
- assert_equal exp_val, subject.h("<strong></strong>")
121
- end
122
-
123
- should "escape urls with #u or #escape_url" do
124
- exp_val = "%2Fpath%2Fto%2Fsomewhere"
125
- assert_equal exp_val, subject.escape_url("/path/to/somewhere")
126
- assert_equal exp_val, subject.u("/path/to/somewhere")
127
- end
128
-
129
- end
130
-
131
- class PartialTests < UnitTests
132
- desc "Partial"
133
- setup do
134
- @partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/_listing', {
135
- :user => 'Joe Test'
136
- })
137
- end
138
- subject{ @partial }
139
-
140
- should "be a kind of Deas::Template" do
141
- assert_kind_of Deas::Template, subject
142
- end
143
-
144
- should "set it's locals option" do
145
- assert_equal({ :user => 'Joe Test' }, subject.options[:locals])
146
- end
147
-
148
- end
149
-
150
- end