padrino-core 0.12.0 → 0.12.1

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