padrino-core 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/padrino-core.rb +4 -4
  3. data/lib/padrino-core/application.rb +6 -195
  4. data/lib/padrino-core/application/application_setup.rb +199 -0
  5. data/lib/padrino-core/application/routing.rb +66 -25
  6. data/lib/padrino-core/cli/base.rb +8 -5
  7. data/lib/padrino-core/cli/rake.rb +12 -9
  8. data/lib/padrino-core/loader.rb +1 -1
  9. data/lib/padrino-core/logger.rb +25 -0
  10. data/lib/padrino-core/mounter.rb +8 -3
  11. data/lib/padrino-core/reloader.rb +2 -2
  12. data/lib/padrino-core/server.rb +50 -17
  13. data/lib/padrino-core/version.rb +1 -1
  14. data/padrino-core.gemspec +2 -10
  15. data/test/fixtures/apps/demo_app.rb +7 -0
  16. data/test/fixtures/apps/demo_demo.rb +7 -0
  17. data/test/helper.rb +6 -37
  18. data/test/test_application.rb +12 -13
  19. data/test/test_core.rb +12 -13
  20. data/test/test_csrf_protection.rb +49 -23
  21. data/test/test_dependencies.rb +7 -7
  22. data/test/test_filters.rb +41 -17
  23. data/test/test_flash.rb +24 -24
  24. data/test/test_locale.rb +1 -1
  25. data/test/test_logger.rb +39 -27
  26. data/test/test_mounter.rb +34 -20
  27. data/test/test_reloader_complex.rb +5 -6
  28. data/test/test_reloader_simple.rb +23 -20
  29. data/test/test_reloader_system.rb +10 -7
  30. data/test/test_restful_routing.rb +1 -1
  31. data/test/test_router.rb +7 -7
  32. data/test/test_routing.rb +177 -141
  33. metadata +14 -53
  34. data/lib/padrino-core/application/rendering.rb +0 -325
  35. data/lib/padrino-core/application/rendering/extensions/erubis.rb +0 -68
  36. data/lib/padrino-core/application/rendering/extensions/haml.rb +0 -29
  37. data/lib/padrino-core/application/rendering/extensions/slim.rb +0 -21
  38. data/lib/padrino-core/locale/cs.yml +0 -33
  39. data/lib/padrino-core/locale/da.yml +0 -33
  40. data/lib/padrino-core/locale/de.yml +0 -33
  41. data/lib/padrino-core/locale/en.yml +0 -33
  42. data/lib/padrino-core/locale/es.yml +0 -33
  43. data/lib/padrino-core/locale/fr.yml +0 -33
  44. data/lib/padrino-core/locale/hu.yml +0 -33
  45. data/lib/padrino-core/locale/it.yml +0 -39
  46. data/lib/padrino-core/locale/ja.yml +0 -33
  47. data/lib/padrino-core/locale/lv.yml +0 -33
  48. data/lib/padrino-core/locale/nl.yml +0 -33
  49. data/lib/padrino-core/locale/no.yml +0 -33
  50. data/lib/padrino-core/locale/pl.yml +0 -33
  51. data/lib/padrino-core/locale/pt_br.yml +0 -39
  52. data/lib/padrino-core/locale/ro.yml +0 -33
  53. data/lib/padrino-core/locale/ru.yml +0 -34
  54. data/lib/padrino-core/locale/sv.yml +0 -33
  55. data/lib/padrino-core/locale/tr.yml +0 -33
  56. data/lib/padrino-core/locale/uk.yml +0 -33
  57. data/lib/padrino-core/locale/zh_cn.yml +0 -33
  58. data/lib/padrino-core/locale/zh_tw.yml +0 -33
  59. data/lib/padrino-core/support_lite.rb +0 -259
  60. data/test/fixtures/apps/.components +0 -6
  61. data/test/fixtures/apps/.gitignore +0 -7
  62. data/test/fixtures/apps/render.rb +0 -13
  63. data/test/fixtures/apps/views/blog/post.erb +0 -1
  64. data/test/fixtures/layouts/layout.erb +0 -1
  65. data/test/mini_shoulda.rb +0 -45
  66. data/test/test_rendering.rb +0 -606
  67. data/test/test_rendering_extensions.rb +0 -14
  68. data/test/test_support_lite.rb +0 -56
@@ -1,6 +0,0 @@
1
- ---
2
- :test: bacon
3
- :mock: mocha
4
- :orm: datamapper
5
- :renderer: erb
6
- :script: jquery
@@ -1,7 +0,0 @@
1
- .DS_Store
2
- log/**/*
3
- tmp/**/*
4
- vendor/gems/gems
5
- vendor/gems/specifications
6
- vendor/gems/doc
7
- vendor/gems/environment.rb
@@ -1,13 +0,0 @@
1
- PADRINO_ROOT = File.dirname(__FILE__) unless defined? PADRINO_ROOT
2
-
3
- class RenderDemo < Padrino::Application
4
- set :reload, true
5
- end
6
-
7
- RenderDemo.controllers :blog do
8
- get '/' do
9
- render 'post'
10
- end
11
- end
12
-
13
- Padrino.load!
@@ -1 +0,0 @@
1
- okay
@@ -1 +0,0 @@
1
- <%= yield %> absolute layout
data/test/mini_shoulda.rb DELETED
@@ -1,45 +0,0 @@
1
- gem 'minitest'
2
- require 'minitest/autorun'
3
- require 'minitest/spec'
4
- require 'mocha/setup'
5
-
6
- begin
7
- require 'ruby-debug'
8
- rescue LoadError; end
9
-
10
- class MiniTest::Spec
11
- class << self
12
- alias :setup :before unless defined?(Rails)
13
- alias :teardown :after unless defined?(Rails)
14
- alias :should :it
15
- alias :context :describe
16
- def should_eventually(desc)
17
- it("should eventually #{desc}") { skip("Should eventually #{desc}") }
18
- end
19
- end
20
- alias :assert_no_match :refute_match
21
- alias :assert_not_nil :refute_nil
22
- alias :assert_not_equal :refute_equal
23
- end
24
-
25
- class ColoredIO
26
- def initialize(io)
27
- @io = io
28
- end
29
-
30
- def print(o)
31
- case o
32
- when "." then @io.send(:print, o.colorize(:green))
33
- when "E" then @io.send(:print, o.colorize(:red))
34
- when "F" then @io.send(:print, o.colorize(:yellow))
35
- when "S" then @io.send(:print, o.colorize(:magenta))
36
- else @io.send(:print, o)
37
- end
38
- end
39
-
40
- def puts(*o)
41
- super
42
- end
43
- end
44
-
45
- MiniTest::Unit.output = ColoredIO.new(MiniTest::Unit.output)
@@ -1,606 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/helper')
2
- require 'i18n'
3
- require 'slim'
4
-
5
- describe "Rendering" do
6
- def setup
7
- Padrino::Application.send(:register, Padrino::Rendering)
8
- Padrino::Rendering::DEFAULT_RENDERING_OPTIONS[:strict_format] = false
9
- end
10
-
11
- def teardown
12
- remove_views
13
- end
14
-
15
- context 'for application layout functionality' do
16
-
17
- should 'get no layout' do
18
- mock_app do
19
- get("/"){ "no layout" }
20
- end
21
-
22
- get "/"
23
- assert_equal "no layout", body
24
- end
25
-
26
- should 'be compatible with sinatra layout' do
27
- mock_app do
28
- layout do
29
- "this is a <%= yield %>"
30
- end
31
-
32
- get("/"){ render :erb, "sinatra layout", :layout => true }
33
- end
34
-
35
- get "/"
36
- assert_equal "this is a sinatra layout", body
37
- end
38
-
39
- should 'use rails way layout' do
40
- with_layout :application, "this is a <%= yield %>" do
41
- mock_app do
42
- get("/"){ render :erb, "rails way layout" }
43
- end
44
-
45
- get "/"
46
- assert_equal "this is a rails way layout", body
47
- end
48
- end
49
-
50
- should 'use rails way for a custom layout' do
51
- with_layout "layouts/custom", "this is a <%= yield %>" do
52
- mock_app do
53
- layout :custom
54
- get("/"){ render :erb, "rails way custom layout" }
55
- end
56
-
57
- get "/"
58
- assert_equal "this is a rails way custom layout", body
59
- end
60
- end
61
-
62
- should 'not use layout' do
63
- with_layout :application, "this is an <%= yield %>" do
64
- with_view :index, "index" do
65
- mock_app do
66
- get("/with/layout"){ render :index }
67
- get("/without/layout"){ render :index, :layout => false }
68
- end
69
- get "/with/layout"
70
- assert_equal "this is an index", body
71
- get "/without/layout"
72
- assert_equal "index", body
73
- end
74
- end
75
- end
76
-
77
- should 'not use layout with js format' do
78
- create_layout :application, "this is an <%= yield %>"
79
- create_view :foo, "erb file"
80
- create_view :foo, "js file", :format => :js
81
- mock_app do
82
- get('/layout_test', :provides => [:html, :js]){ render :foo }
83
- end
84
- get "/layout_test"
85
- assert_equal "this is an erb file", body
86
- get "/layout_test.js"
87
- assert_equal "js file", body
88
- end
89
-
90
- should 'use correct layout for each format' do
91
- create_layout :application, "this is an <%= yield %>"
92
- create_layout :application, "document start <%= yield %> end", :format => :xml
93
- create_view :foo, "erb file"
94
- create_view :foo, "xml file", :format => :xml
95
- mock_app do
96
- get('/layout_test', :provides => [:html, :xml]){ render :foo }
97
- end
98
- get "/layout_test"
99
- assert_equal "this is an erb file", body
100
- get "/layout_test.xml"
101
- assert_equal "document start xml file end", body
102
- end
103
-
104
- should 'by default use html file when no other is given' do
105
- create_layout :baz, "html file", :format => :html
106
-
107
- mock_app do
108
- get('/content_type_test', :provides => [:html, :xml]) { render :baz }
109
- end
110
-
111
- get "/content_type_test"
112
- assert_equal "html file", body
113
- get "/content_type_test.html"
114
- assert_equal "html file", body
115
- get "/content_type_test.xml"
116
- assert_equal "html file", body
117
- end
118
-
119
- should 'not use html file when DEFAULT_RENDERING_OPTIONS[:strict_format] == true' do
120
- create_layout :foo, "html file", :format => :html
121
-
122
- mock_app do
123
- get('/default_rendering_test', :provides => [:html, :xml]) { render :foo }
124
- end
125
-
126
- @save = Padrino::Rendering::DEFAULT_RENDERING_OPTIONS
127
- Padrino::Rendering::DEFAULT_RENDERING_OPTIONS[:strict_format] = true
128
-
129
- get "/default_rendering_test"
130
- assert_equal "html file", body
131
- assert_raises Padrino::Rendering::TemplateNotFound do
132
- get "/default_rendering_test.xml"
133
- end
134
-
135
- Padrino::Rendering::DEFAULT_RENDERING_OPTIONS.merge!(@save)
136
- end
137
-
138
- should 'use correct layout with each controller' do
139
- create_layout :foo, "foo layout at <%= yield %>"
140
- create_layout :bar, "bar layout at <%= yield %>"
141
- create_layout :baz, "baz layout at <%= yield %>"
142
- create_layout :application, "default layout at <%= yield %>"
143
- mock_app do
144
- get("/"){ render :erb, "application" }
145
- controller :foo do
146
- layout :foo
147
- get("/"){ render :erb, "foo" }
148
- end
149
- controller :bar do
150
- layout :bar
151
- get("/"){ render :erb, "bar" }
152
- end
153
- controller :baz do
154
- layout :baz
155
- get("/"){ render :erb, "baz", :layout => true }
156
- end
157
- controller :none do
158
- get("/") { render :erb, "none" }
159
- get("/with_foo_layout") { render :erb, "none with layout", :layout => :foo }
160
- end
161
- end
162
- get "/foo"
163
- assert_equal "foo layout at foo", body
164
- get "/bar"
165
- assert_equal "bar layout at bar", body
166
- get "/baz"
167
- assert_equal "baz layout at baz", body
168
- get "/none"
169
- assert_equal "default layout at none", body
170
- get "/none/with_foo_layout"
171
- assert_equal "foo layout at none with layout", body
172
- get "/"
173
- assert_equal "default layout at application", body
174
- end
175
- end
176
-
177
- should 'solve layout in layouts paths' do
178
- create_layout :foo, "foo layout <%= yield %>"
179
- create_layout :"layouts/bar", "bar layout <%= yield %>"
180
- mock_app do
181
- get("/") { render :erb, "none" }
182
- get("/foo") { render :erb, "foo", :layout => :foo }
183
- get("/bar") { render :erb, "bar", :layout => :bar }
184
- end
185
- get "/"
186
- assert_equal "none", body
187
- get "/foo"
188
- assert_equal "foo layout foo", body
189
- get "/bar"
190
- assert_equal "bar layout bar", body
191
- end
192
-
193
- should 'render correctly if layout was not found or not exist' do
194
- create_layout :application, "application layout for <%= yield %>"
195
- create_view :foo, "index", :format => :html
196
- create_view :foo, "xml.rss", :format => :rss
197
- mock_app do
198
- get("/foo", :provides => [:html, :rss]) { render('foo') }
199
- get("/baz", :provides => :js) { render(:erb, 'baz') }
200
- get("/bar") { render :haml, "haml" }
201
- end
202
- get "/foo"
203
- assert_equal "application layout for index", body
204
- get "/foo.rss"
205
- assert_equal "<rss/>", body.chomp
206
- get "/baz.js"
207
- assert_equal "baz", body
208
- get "/bar"
209
- assert_equal "haml", body.chomp
210
- end
211
-
212
- should 'allow to render template with layout option that using other template engine.' do
213
- create_layout :"layouts/foo", "application layout for <%= yield %>", :format => :erb
214
- create_view :slim, "| slim", :format => :slim
215
- create_view :haml, "haml", :format => :haml
216
- create_view :erb, "erb", :format => :erb
217
- mock_app do
218
- get("/slim") { render("slim.slim", :layout => "foo.erb") }
219
- get("/haml") { render("haml.haml", :layout => "foo.erb") }
220
- get("/erb") { render("erb.erb", :layout => "foo.erb") }
221
- end
222
- get "/slim"
223
- assert_equal "application layout for slim", body.chomp
224
- get "/haml"
225
- assert_equal "application layout for haml", body.chomp
226
- get "/erb"
227
- assert_equal "application layout for erb", body.chomp
228
- end
229
-
230
- should 'allow to use extension with layout method.' do
231
- create_layout :"layouts/bar", "application layout for <%= yield %>", :format => :erb
232
- create_view :slim, "| slim", :format => :slim
233
- create_view :haml, "haml", :format => :haml
234
- create_view :erb, "erb", :format => :erb
235
- mock_app do
236
- layout "bar.erb"
237
- get("/slim") { render("slim.slim") }
238
- get("/haml") { render("haml.haml") }
239
- get("/erb") { render("erb.erb") }
240
- end
241
- get "/slim"
242
- assert_equal "application layout for slim", body.chomp
243
- get "/haml"
244
- assert_equal "application layout for haml", body.chomp
245
- get "/erb"
246
- assert_equal "application layout for erb", body.chomp
247
- end
248
-
249
- context 'for application render functionality' do
250
-
251
- should "work properly with logging and missing layout" do
252
- create_view :index, "<%= foo %>"
253
- mock_app do
254
- enable :logging
255
- get("/") { render "index", { :layout => nil }, { :foo => "bar" } }
256
- end
257
- get "/"
258
- assert_equal "bar", body
259
- end
260
-
261
- should "work properly with logging and layout" do
262
- create_layout :application, "layout <%= yield %>"
263
- create_view :index, "<%= foo %>"
264
- mock_app do
265
- enable :logging
266
- get("/") { render "index", { :layout => true }, { :foo => "bar" } }
267
- end
268
- get "/"
269
- assert_equal "layout bar", body
270
- end
271
-
272
- should 'be compatible with sinatra render' do
273
- mock_app do
274
- get("/"){ render :erb, "<%= 1+2 %>" }
275
- end
276
- get "/"
277
- assert_equal "3", body
278
- end
279
-
280
- should "support passing locals into render" do
281
- create_layout :application, "layout <%= yield %>"
282
- create_view :index, "<%= foo %>"
283
- mock_app do
284
- get("/") { render "index", { :layout => true }, { :foo => "bar" } }
285
- end
286
- get "/"
287
- assert_equal "layout bar", body
288
- end
289
-
290
- should "support passing locals into sinatra render" do
291
- create_layout :application, "layout <%= yield %>"
292
- create_view :index, "<%= foo %>"
293
- mock_app do
294
- get("/") { render :erb, :index, { :layout => true }, { :foo => "bar" } }
295
- end
296
- get "/"
297
- assert_equal "layout bar", body
298
- end
299
-
300
- should "support passing locals into special nil engine render" do
301
- create_layout :application, "layout <%= yield %>"
302
- create_view :index, "<%= foo %>"
303
- mock_app do
304
- get("/") { render nil, :index, { :layout => true }, { :foo => "bar" } }
305
- end
306
- get "/"
307
- assert_equal "layout bar", body
308
- end
309
-
310
- should 'be compatible with sinatra views' do
311
- with_view :index, "<%= 1+2 %>" do
312
- mock_app do
313
- get("/foo") { render :erb, :index }
314
- get("/bar") { erb :index }
315
- get("/dir") { "3" }
316
- get("/inj") { erb "<%= 2+1 %>" }
317
- get("/rnj") { render :erb, "<%= 2+1 %>" }
318
- end
319
- get "/foo"
320
- assert_equal "3", body
321
- get "/bar"
322
- assert_equal "3", body
323
- get "/dir"
324
- assert_equal "3", body
325
- get "/inj"
326
- assert_equal "3", body
327
- get "/rnj"
328
- assert_equal "3", body
329
- end
330
- end
331
-
332
- should 'resolve template engine' do
333
- with_view :index, "<%= 1+2 %>" do
334
- mock_app do
335
- get("/foo") { render :index }
336
- get("/bar") { render "/index" }
337
- end
338
- get "/foo"
339
- assert_equal "3", body
340
- get "/bar"
341
- assert_equal "3", body
342
- end
343
- end
344
-
345
- should 'resolve template content type' do
346
- create_view :foo, "Im Js", :format => :js
347
- create_view :foo, "Im Erb"
348
- mock_app do
349
- get("/foo", :provides => :js) { render :foo }
350
- get("/bar.js") { render :foo }
351
- end
352
- get "/foo.js"
353
- assert_equal "Im Js", body
354
- # TODO: implement this!
355
- # get "/bar.js"
356
- # assert_equal "Im Js", body
357
- end
358
-
359
- should 'resolve with explicit template format' do
360
- create_view :foo, "Im Js", :format => :js
361
- create_view :foo, "Im Haml", :format => :haml
362
- create_view :foo, "Im Xml", :format => :xml
363
- mock_app do
364
- get("/foo_normal", :provides => :js) { render 'foo' }
365
- get("/foo_haml", :provides => :js) { render 'foo.haml' }
366
- get("/foo_xml", :provides => :js) { render 'foo.xml' }
367
- end
368
- get "/foo_normal.js"
369
- assert_equal "Im Js", body
370
- get "/foo_haml.js"
371
- assert_equal "Im Haml\n", body
372
- get "/foo_xml.js"
373
- assert_equal "Im Xml", body
374
- end
375
-
376
- should 'resolve without explict template format' do
377
- create_view :foo, "Im Html"
378
- create_view :foo, "xml.rss", :format => :rss
379
- mock_app do
380
- get(:index, :map => "/", :provides => [:html, :rss]){ render 'foo' }
381
- end
382
- get "/", {}, { 'HTTP_ACCEPT' => 'text/html;q=0.9' }
383
- assert_equal "Im Html", body
384
- get ".rss"
385
- assert_equal "<rss/>\n", body
386
- end
387
-
388
- should "ignore files ending in tilde and not render them" do
389
- create_view :foo, "Im Wrong", :format => 'haml~'
390
- create_view :foo, "Im Haml", :format => :haml
391
- create_view :bar, "Im Haml backup", :format => 'haml~'
392
- mock_app do
393
- get('/foo') { render 'foo' }
394
- get('/bar') { render 'bar' }
395
- end
396
- get '/foo'
397
- assert_equal "Im Haml\n", body
398
- assert_raises(Padrino::Rendering::TemplateNotFound) { get '/bar' }
399
- end
400
-
401
- should 'resolve template locale' do
402
- create_view :foo, "Im English", :locale => :en
403
- create_view :foo, "Im Italian", :locale => :it
404
- mock_app do
405
- get("/foo") { render :foo }
406
- end
407
- I18n.locale = :en
408
- get "/foo"
409
- assert_equal "Im English", body
410
- I18n.locale = :it
411
- get "/foo"
412
- assert_equal "Im Italian", body
413
- end
414
-
415
- should 'resolve template content_type and locale' do
416
- create_view :foo, "Im Js", :format => :js
417
- create_view :foo, "Im Erb"
418
- create_view :foo, "Im English Erb", :locale => :en
419
- create_view :foo, "Im Italian Erb", :locale => :it
420
- create_view :foo, "Im English Js", :format => :js, :locale => :en
421
- create_view :foo, "Im Italian Js", :format => :js, :locale => :it
422
- mock_app do
423
- get("/foo", :provides => [:html, :js]) { render :foo }
424
- end
425
-
426
- I18n.enforce_available_locales = false
427
- I18n.locale = :none
428
- get "/foo.js"
429
- assert_equal "Im Js", body
430
- get "/foo"
431
- assert_equal "Im Erb", body
432
- I18n.enforce_available_locales = true
433
-
434
- I18n.locale = :en
435
- get "/foo"
436
- assert_equal "Im English Erb", body
437
- I18n.locale = :it
438
- get "/foo"
439
- assert_equal "Im Italian Erb", body
440
- I18n.locale = :en
441
- get "/foo.js"
442
- assert_equal "Im English Js", body
443
- I18n.locale = :it
444
- get "/foo.js"
445
- assert_equal "Im Italian Js", body
446
- I18n.locale = :en
447
- get "/foo.pk"
448
- assert_equal 404, status
449
- end
450
-
451
- should 'resolve templates and layouts located in absolute paths' do
452
- mock_app do
453
- get("/foo") { render 'apps/views/blog/post', :layout => 'layout', :views => File.dirname(__FILE__)+'/fixtures' }
454
- end
455
- get '/foo'
456
- assert_match /okay absolute layout/, body
457
- end
458
-
459
- should 'resolve template content_type and locale with layout' do
460
- create_layout :foo, "Hello <%= yield %> in a Js layout", :format => :js
461
- create_layout :foo, "Hello <%= yield %> in a Js-En layout", :format => :js, :locale => :en
462
- create_layout :foo, "Hello <%= yield %> in a Js-It layout", :format => :js, :locale => :it
463
- create_layout :foo, "Hello <%= yield %> in a Erb-En layout", :locale => :en
464
- create_layout :foo, "Hello <%= yield %> in a Erb-It layout", :locale => :it
465
- create_layout :foo, "Hello <%= yield %> in a Erb layout"
466
- create_view :bar, "Im Js", :format => :js
467
- create_view :bar, "Im Erb"
468
- create_view :bar, "Im English Erb", :locale => :en
469
- create_view :bar, "Im Italian Erb", :locale => :it
470
- create_view :bar, "Im English Js", :format => :js, :locale => :en
471
- create_view :bar, "Im Italian Js", :format => :js, :locale => :it
472
- create_view :bar, "Im a json", :format => :json
473
- mock_app do
474
- layout :foo
475
- get("/bar", :provides => [:html, :js, :json]) { render :bar }
476
- end
477
-
478
- I18n.enforce_available_locales = false
479
- I18n.locale = :none
480
- get "/bar.js"
481
- assert_equal "Hello Im Js in a Js layout", body
482
- get "/bar"
483
- assert_equal "Hello Im Erb in a Erb layout", body
484
- I18n.enforce_available_locales = true
485
-
486
- I18n.locale = :en
487
- get "/bar"
488
- assert_equal "Hello Im English Erb in a Erb-En layout", body
489
- I18n.locale = :it
490
- get "/bar"
491
- assert_equal "Hello Im Italian Erb in a Erb-It layout", body
492
- I18n.locale = :en
493
- get "/bar.js"
494
- assert_equal "Hello Im English Js in a Js-En layout", body
495
- I18n.locale = :it
496
- get "/bar.js"
497
- assert_equal "Hello Im Italian Js in a Js-It layout", body
498
- I18n.locale = :en
499
- get "/bar.json"
500
- assert_equal "Im a json", body
501
- get "/bar.pk"
502
- assert_equal 404, status
503
-
504
- end
505
-
506
- should 'resolve template location relative to controller name' do
507
- require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/render')
508
- @app = RenderDemo
509
- get '/blog'
510
- assert_equal 'okay', body
511
- end
512
-
513
- should 'renders erb with blocks' do
514
- mock_app do
515
- def container
516
- @_out_buf << "THIS."
517
- yield
518
- @_out_buf << "SPARTA!"
519
- end
520
- def is; "IS."; end
521
- get '/' do
522
- render :erb, '<% container do %> <%= is %> <% end %>'
523
- end
524
- end
525
- get '/'
526
- assert ok?
527
- assert_equal 'THIS. IS. SPARTA!', body
528
- end
529
-
530
- should 'render erb to a SafeBuffer' do
531
- mock_app do
532
- layout do
533
- "this is a <%= yield %>"
534
- end
535
- get '/' do
536
- render :erb, '<p><%= %q{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>} %></p>', :layout => false
537
- end
538
- get '/with_layout' do
539
- render :erb, '<span>span</span>', :layout => true
540
- end
541
- end
542
- get '/'
543
- assert ok?
544
- assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body
545
-
546
- get '/with_layout'
547
- assert ok?
548
- assert_equal 'this is a <span>span</span>', body
549
- end
550
-
551
- should 'render haml to a SafeBuffer' do
552
- mock_app do
553
- layout do
554
- "%p= yield"
555
- end
556
- get '/' do
557
- render :haml, '%p= %s{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>}', :layout => false
558
- end
559
- get '/with_layout' do
560
- render :haml, "%div\n foo", :layout => true
561
- end
562
- end
563
- get '/'
564
- assert ok?
565
- assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body.strip
566
-
567
- get 'with_layout'
568
- assert ok?
569
- assert_equal '<p><div>foo</div></p>', body.gsub(/\s+/, "")
570
- end
571
-
572
- should 'render slim to a SafeBuffer' do
573
- mock_app do
574
- layout do
575
- "p= yield"
576
- end
577
- get '/' do
578
- render :slim, 'p = %q{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>}', :layout => false
579
- end
580
- get "/with_layout" do
581
- render :slim, 'div foo', :layout => true
582
- end
583
- end
584
- get '/'
585
- assert ok?
586
- assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body.strip
587
-
588
- get '/with_layout'
589
- assert ok?
590
- assert_equal '<p><div>foo</div></p>', body.strip
591
- end
592
-
593
- should "render correct erb when use sinatra as middleware" do
594
- class Bar < Sinatra::Base
595
- get "/" do
596
- render :erb, "<&'>"
597
- end
598
- end
599
- mock_app do
600
- use Bar
601
- end
602
- get "/"
603
- assert_equal "<&'>", body
604
- end
605
- end
606
- end