merb 0.5.3 → 0.9.2

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 (294) hide show
  1. data/LICENSE +0 -20
  2. data/README +0 -277
  3. data/Rakefile +80 -199
  4. data/TODO +0 -3
  5. metadata +19 -438
  6. data/SVN_REVISION +0 -1
  7. data/app_generators/merb/USAGE +0 -5
  8. data/app_generators/merb/merb_generator.rb +0 -108
  9. data/app_generators/merb/templates/Rakefile +0 -124
  10. data/app_generators/merb/templates/app/controllers/application.rb +0 -3
  11. data/app_generators/merb/templates/app/controllers/exceptions.rb +0 -13
  12. data/app_generators/merb/templates/app/helpers/global_helper.rb +0 -5
  13. data/app_generators/merb/templates/app/mailers/views/layout/application.html.erb +0 -1
  14. data/app_generators/merb/templates/app/mailers/views/layout/application.text.erb +0 -1
  15. data/app_generators/merb/templates/app/parts/views/layout/application.html.erb +0 -1
  16. data/app_generators/merb/templates/app/views/exceptions/internal_server_error.html.erb +0 -216
  17. data/app_generators/merb/templates/app/views/exceptions/not_acceptable.html.erb +0 -38
  18. data/app_generators/merb/templates/app/views/exceptions/not_found.html.erb +0 -40
  19. data/app_generators/merb/templates/app/views/layout/application.html.erb +0 -11
  20. data/app_generators/merb/templates/config/boot.rb +0 -11
  21. data/app_generators/merb/templates/config/dependencies.rb +0 -41
  22. data/app_generators/merb/templates/config/environments/development.rb +0 -1
  23. data/app_generators/merb/templates/config/environments/production.rb +0 -1
  24. data/app_generators/merb/templates/config/environments/test.rb +0 -1
  25. data/app_generators/merb/templates/config/merb.yml +0 -82
  26. data/app_generators/merb/templates/config/merb_init.rb +0 -17
  27. data/app_generators/merb/templates/config/plugins.yml +0 -1
  28. data/app_generators/merb/templates/config/router.rb +0 -35
  29. data/app_generators/merb/templates/config/upload.conf +0 -0
  30. data/app_generators/merb/templates/public/images/merb.jpg +0 -0
  31. data/app_generators/merb/templates/public/merb.fcgi +0 -6
  32. data/app_generators/merb/templates/public/stylesheets/master.css +0 -119
  33. data/app_generators/merb/templates/script/destroy +0 -32
  34. data/app_generators/merb/templates/script/generate +0 -32
  35. data/app_generators/merb/templates/script/stop_merb +0 -13
  36. data/app_generators/merb/templates/script/win_script.cmd +0 -1
  37. data/app_generators/merb/templates/spec/spec.opts +0 -6
  38. data/app_generators/merb/templates/spec/spec_helper.rb +0 -15
  39. data/app_generators/merb/templates/test/test_helper.rb +0 -14
  40. data/app_generators/merb_plugin/USAGE +0 -5
  41. data/app_generators/merb_plugin/merb_plugin_generator.rb +0 -68
  42. data/app_generators/merb_plugin/templates/LICENSE +0 -20
  43. data/app_generators/merb_plugin/templates/README +0 -4
  44. data/app_generators/merb_plugin/templates/Rakefile +0 -35
  45. data/app_generators/merb_plugin/templates/TODO +0 -5
  46. data/app_generators/merb_plugin/templates/merbtasks.rb +0 -6
  47. data/app_generators/merb_plugin/templates/sampleplugin.rb +0 -10
  48. data/app_generators/merb_plugin/templates/sampleplugin_spec.rb +0 -7
  49. data/app_generators/merb_plugin/templates/spec_helper.rb +0 -2
  50. data/bin/merb +0 -4
  51. data/lib/autotest/discover.rb +0 -3
  52. data/lib/autotest/merb_rspec.rb +0 -80
  53. data/lib/merb.rb +0 -188
  54. data/lib/merb/abstract_controller.rb +0 -399
  55. data/lib/merb/assets.rb +0 -160
  56. data/lib/merb/assets.rb.orig +0 -119
  57. data/lib/merb/boot_loader.rb +0 -286
  58. data/lib/merb/boot_loader.rb.orig +0 -235
  59. data/lib/merb/caching.rb +0 -5
  60. data/lib/merb/caching/action_cache.rb +0 -92
  61. data/lib/merb/caching/fragment_cache.rb +0 -39
  62. data/lib/merb/caching/store/file_cache.rb +0 -90
  63. data/lib/merb/caching/store/memory_cache.rb +0 -85
  64. data/lib/merb/config.rb +0 -290
  65. data/lib/merb/constants.rb +0 -50
  66. data/lib/merb/controller.rb +0 -220
  67. data/lib/merb/cookies.rb +0 -95
  68. data/lib/merb/core_ext.rb +0 -15
  69. data/lib/merb/core_ext/array.rb +0 -0
  70. data/lib/merb/core_ext/class.rb +0 -180
  71. data/lib/merb/core_ext/enumerable.rb +0 -49
  72. data/lib/merb/core_ext/get_args.rb +0 -76
  73. data/lib/merb/core_ext/hash.rb +0 -306
  74. data/lib/merb/core_ext/inflections.rb +0 -112
  75. data/lib/merb/core_ext/inflector.rb +0 -275
  76. data/lib/merb/core_ext/kernel.rb +0 -242
  77. data/lib/merb/core_ext/mash.rb +0 -88
  78. data/lib/merb/core_ext/module.rb +0 -67
  79. data/lib/merb/core_ext/numeric.rb +0 -72
  80. data/lib/merb/core_ext/object.rb +0 -183
  81. data/lib/merb/core_ext/string.rb +0 -53
  82. data/lib/merb/core_ext/symbol.rb +0 -6
  83. data/lib/merb/dispatcher.rb +0 -109
  84. data/lib/merb/drb_server.rb +0 -19
  85. data/lib/merb/erubis_ext.rb +0 -10
  86. data/lib/merb/exceptions.rb +0 -192
  87. data/lib/merb/generators/merb_app/merb_app.rb +0 -22
  88. data/lib/merb/generators/merb_generator_helpers.rb +0 -318
  89. data/lib/merb/generators/merb_plugin.rb +0 -22
  90. data/lib/merb/logger.rb +0 -78
  91. data/lib/merb/mail_controller.rb +0 -268
  92. data/lib/merb/mailer.rb +0 -87
  93. data/lib/merb/mixins/basic_authentication.rb +0 -35
  94. data/lib/merb/mixins/controller.rb +0 -160
  95. data/lib/merb/mixins/erubis_capture.rb +0 -68
  96. data/lib/merb/mixins/general_controller.rb +0 -253
  97. data/lib/merb/mixins/inline_partial.rb +0 -32
  98. data/lib/merb/mixins/render.rb +0 -465
  99. data/lib/merb/mixins/responder.rb +0 -449
  100. data/lib/merb/mixins/view_context.rb +0 -558
  101. data/lib/merb/mixins/web_controller.rb +0 -36
  102. data/lib/merb/mongrel_handler.rb +0 -168
  103. data/lib/merb/part_controller.rb +0 -29
  104. data/lib/merb/plugins.rb +0 -16
  105. data/lib/merb/rack_adapter.rb +0 -37
  106. data/lib/merb/request.rb +0 -465
  107. data/lib/merb/router.rb +0 -646
  108. data/lib/merb/server.rb +0 -169
  109. data/lib/merb/session.rb +0 -23
  110. data/lib/merb/session/cookie_store.rb +0 -118
  111. data/lib/merb/session/mem_cache_session.rb +0 -131
  112. data/lib/merb/session/memory_session.rb +0 -176
  113. data/lib/merb/template.rb +0 -37
  114. data/lib/merb/template/erubis.rb +0 -68
  115. data/lib/merb/template/haml.rb +0 -87
  116. data/lib/merb/template/markaby.rb +0 -59
  117. data/lib/merb/template/xml_builder.rb +0 -50
  118. data/lib/merb/test/fake_request.rb +0 -74
  119. data/lib/merb/test/helper.rb +0 -260
  120. data/lib/merb/test/hpricot.rb +0 -136
  121. data/lib/merb/test/multipart.rb +0 -66
  122. data/lib/merb/test/rspec.rb +0 -18
  123. data/lib/merb/test/rspec_matchers/controller_matchers.rb +0 -117
  124. data/lib/merb/test/rspec_matchers/markup_matchers.rb +0 -98
  125. data/lib/merb/upload_handler.rb +0 -80
  126. data/lib/merb/upload_progress.rb +0 -48
  127. data/lib/merb/version.rb +0 -49
  128. data/lib/merb/view_context.rb +0 -79
  129. data/lib/tasks.rb +0 -7
  130. data/lib/tasks/merb.rake +0 -54
  131. data/merb_default_generators/model/USAGE +0 -0
  132. data/merb_default_generators/model/model_generator.rb +0 -16
  133. data/merb_default_generators/model/templates/new_model_template.erb +0 -5
  134. data/merb_default_generators/resource_controller/USAGE +0 -0
  135. data/merb_default_generators/resource_controller/resource_controller_generator.rb +0 -26
  136. data/merb_default_generators/resource_controller/templates/controller.rb +0 -30
  137. data/merb_default_generators/resource_controller/templates/edit.html.erb +0 -1
  138. data/merb_default_generators/resource_controller/templates/helper.rb +0 -5
  139. data/merb_default_generators/resource_controller/templates/index.html.erb +0 -1
  140. data/merb_default_generators/resource_controller/templates/new.html.erb +0 -1
  141. data/merb_default_generators/resource_controller/templates/show.html.erb +0 -1
  142. data/merb_generators/controller/USAGE +0 -5
  143. data/merb_generators/controller/controller_generator.rb +0 -16
  144. data/merb_generators/controller/templates/controller.rb +0 -8
  145. data/merb_generators/controller/templates/helper.rb +0 -5
  146. data/merb_generators/controller/templates/index.html.erb +0 -3
  147. data/merb_generators/part_controller/USAGE +0 -5
  148. data/merb_generators/part_controller/part_controller_generator.rb +0 -27
  149. data/merb_generators/part_controller/templates/controller.rb +0 -8
  150. data/merb_generators/part_controller/templates/helper.rb +0 -5
  151. data/merb_generators/part_controller/templates/index.html.erb +0 -3
  152. data/merb_generators/resource/USAGE +0 -0
  153. data/merb_generators/resource/resource_generator.rb +0 -67
  154. data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +0 -67
  155. data/rspec_generators/merb_controller_test/templates/controller_spec.rb +0 -8
  156. data/rspec_generators/merb_controller_test/templates/edit_spec.rb +0 -12
  157. data/rspec_generators/merb_controller_test/templates/helper_spec.rb +0 -5
  158. data/rspec_generators/merb_controller_test/templates/index_spec.rb +0 -12
  159. data/rspec_generators/merb_controller_test/templates/new_spec.rb +0 -12
  160. data/rspec_generators/merb_controller_test/templates/show_spec.rb +0 -5
  161. data/rspec_generators/merb_model_test/merb_model_test_generator.rb +0 -26
  162. data/rspec_generators/merb_model_test/templates/model_spec_template.erb +0 -7
  163. data/script/destroy +0 -14
  164. data/script/generate +0 -14
  165. data/spec/fixtures/config/environments/environment_config_test.yml +0 -1
  166. data/spec/fixtures/config/merb.yml +0 -18
  167. data/spec/fixtures/controllers/dispatch_spec_controllers.rb +0 -235
  168. data/spec/fixtures/controllers/render_spec_controllers.rb +0 -184
  169. data/spec/fixtures/foo.rb +0 -3
  170. data/spec/fixtures/mailers/views/layout/application.html.erb +0 -3
  171. data/spec/fixtures/mailers/views/layout/application.text.erb +0 -3
  172. data/spec/fixtures/mailers/views/test_mail_controller/eighth.html.erb +0 -1
  173. data/spec/fixtures/mailers/views/test_mail_controller/eighth.text.erb +0 -1
  174. data/spec/fixtures/mailers/views/test_mail_controller/first.html.erb +0 -1
  175. data/spec/fixtures/mailers/views/test_mail_controller/first.text.erb +0 -1
  176. data/spec/fixtures/mailers/views/test_mail_controller/ninth.html.erb +0 -1
  177. data/spec/fixtures/mailers/views/test_mail_controller/ninth.text.erb +0 -1
  178. data/spec/fixtures/mailers/views/test_mail_controller/second.text.erb +0 -1
  179. data/spec/fixtures/mailers/views/test_mail_controller/third.html.erb +0 -1
  180. data/spec/fixtures/models/router_spec_models.rb +0 -30
  181. data/spec/fixtures/parts/views/layout/todo_part.html.erb +0 -3
  182. data/spec/fixtures/parts/views/layout/todo_part.xml.erb +0 -3
  183. data/spec/fixtures/parts/views/todo_part/formatted_output.html.erb +0 -1
  184. data/spec/fixtures/parts/views/todo_part/formatted_output.js.erb +0 -1
  185. data/spec/fixtures/parts/views/todo_part/formatted_output.xml.erb +0 -1
  186. data/spec/fixtures/parts/views/todo_part/list.html.erb +0 -3
  187. data/spec/fixtures/sample.txt +0 -1
  188. data/spec/fixtures/views/erubis.html.erb +0 -1
  189. data/spec/fixtures/views/examples/_erubis.html.erb +0 -1
  190. data/spec/fixtures/views/examples/_haml.html.haml +0 -1
  191. data/spec/fixtures/views/examples/_markaby.html.mab +0 -1
  192. data/spec/fixtures/views/examples/_throw_content.html.erb +0 -6
  193. data/spec/fixtures/views/examples/hello.xml.builder +0 -1
  194. data/spec/fixtures/views/examples/js.js.erb +0 -1
  195. data/spec/fixtures/views/examples/template_catch_content.html.erb +0 -15
  196. data/spec/fixtures/views/examples/template_catch_content_from_partial.html.erb +0 -6
  197. data/spec/fixtures/views/examples/template_throw_content.html.erb +0 -10
  198. data/spec/fixtures/views/examples/template_throw_content_without_block.html.erb +0 -3
  199. data/spec/fixtures/views/exceptions/admin_access_required.html.erb +0 -1
  200. data/spec/fixtures/views/extension_template_controller/_nested_js.js.erb +0 -1
  201. data/spec/fixtures/views/extension_template_controller/_nested_xml.xml.erb +0 -1
  202. data/spec/fixtures/views/extension_template_controller/_render_partial_multiple_times.html.erb +0 -1
  203. data/spec/fixtures/views/extension_template_controller/erubis_templates.html.erb +0 -1
  204. data/spec/fixtures/views/extension_template_controller/erubis_templates.js.erb +0 -1
  205. data/spec/fixtures/views/extension_template_controller/erubis_templates.rhtml +0 -1
  206. data/spec/fixtures/views/extension_template_controller/erubis_templates.xml.erb +0 -1
  207. data/spec/fixtures/views/extension_template_controller/haml_index.html.haml +0 -0
  208. data/spec/fixtures/views/extension_template_controller/haml_templates.html.haml +0 -1
  209. data/spec/fixtures/views/extension_template_controller/haml_templates.js.haml +0 -1
  210. data/spec/fixtures/views/extension_template_controller/haml_templates.xml.haml +0 -1
  211. data/spec/fixtures/views/extension_template_controller/index.html.erb +0 -0
  212. data/spec/fixtures/views/extension_template_controller/markaby_index.html.mab +0 -0
  213. data/spec/fixtures/views/extension_template_controller/markaby_templates.html.mab +0 -1
  214. data/spec/fixtures/views/extension_template_controller/markaby_templates.js.mab +0 -1
  215. data/spec/fixtures/views/extension_template_controller/markaby_templates.xml.mab +0 -1
  216. data/spec/fixtures/views/extension_template_controller/render_multiple_partials.html.erb +0 -4
  217. data/spec/fixtures/views/extension_template_controller/render_nested_js.js.erb +0 -1
  218. data/spec/fixtures/views/extension_template_controller/render_nested_xml.xml.erb +0 -1
  219. data/spec/fixtures/views/haml.html.haml +0 -1
  220. data/spec/fixtures/views/haml.xml.haml +0 -2
  221. data/spec/fixtures/views/layout/application.html.erb +0 -1
  222. data/spec/fixtures/views/layout/application.xml.erb +0 -1
  223. data/spec/fixtures/views/layout/nested/example.html.erb +0 -1
  224. data/spec/fixtures/views/markaby.html.mab +0 -1
  225. data/spec/fixtures/views/nested/example/test.html.erb +0 -1
  226. data/spec/fixtures/views/partials/_erubis.html.erb +0 -1
  227. data/spec/fixtures/views/partials/_erubis_collection.html.erb +0 -1
  228. data/spec/fixtures/views/partials/_erubis_collection_with_locals.html.erb +0 -1
  229. data/spec/fixtures/views/partials/_erubis_new.html.erb +0 -1
  230. data/spec/fixtures/views/partials/_haml.html.haml +0 -1
  231. data/spec/fixtures/views/partials/_haml_collection.html.haml +0 -1
  232. data/spec/fixtures/views/partials/_haml_collection_with_locals.html.haml +0 -1
  233. data/spec/fixtures/views/partials/_haml_new.html.haml +0 -1
  234. data/spec/fixtures/views/partials/_markaby.html.mab +0 -1
  235. data/spec/fixtures/views/partials/_markaby_collection.html.mab +0 -1
  236. data/spec/fixtures/views/partials/_markaby_collection_with_locals.html.mab +0 -1
  237. data/spec/fixtures/views/partials/_markaby_new.html.mab +0 -1
  238. data/spec/fixtures/views/render_object_controller/render_object_with_template.html.erb +0 -1
  239. data/spec/fixtures/views/render_object_controller/render_object_with_template.js.erb +0 -1
  240. data/spec/fixtures/views/render_object_controller/render_object_with_template.xml.erb +0 -1
  241. data/spec/fixtures/views/template_views/interface__buffer_erubis.html.erb +0 -4
  242. data/spec/fixtures/views/template_views/interface__buffer_haml.html.haml +0 -7
  243. data/spec/fixtures/views/template_views/interface__buffer_markaby.html.mab +0 -7
  244. data/spec/fixtures/views/template_views/interface_capture_erubis.html.erb +0 -15
  245. data/spec/fixtures/views/template_views/interface_capture_haml.html.haml +0 -15
  246. data/spec/fixtures/views/template_views/interface_capture_markaby.html.mab +0 -4
  247. data/spec/fixtures/views/template_views/interface_concat_erubis.html.erb +0 -12
  248. data/spec/fixtures/views/template_views/interface_concat_haml.html.haml +0 -11
  249. data/spec/fixtures/views/template_views/interface_concat_markaby.html.mab +0 -14
  250. data/spec/fixtures/views/test.dir/the_template.html.erb +0 -1
  251. data/spec/merb/abstract_controller_spec.rb +0 -38
  252. data/spec/merb/assets_spec.rb +0 -207
  253. data/spec/merb/caching_spec.rb +0 -102
  254. data/spec/merb/config_spec.rb +0 -29
  255. data/spec/merb/controller_filters_spec.rb +0 -253
  256. data/spec/merb/controller_spec.rb +0 -126
  257. data/spec/merb/cookie_store_spec.rb +0 -72
  258. data/spec/merb/cookies_spec.rb +0 -96
  259. data/spec/merb/core_ext/class_spec.rb +0 -97
  260. data/spec/merb/core_ext/enumerable_spec.rb +0 -27
  261. data/spec/merb/core_ext/hash_spec.rb +0 -251
  262. data/spec/merb/core_ext/inflector_spec.rb +0 -34
  263. data/spec/merb/core_ext/kernel_spec.rb +0 -25
  264. data/spec/merb/core_ext/numeric_spec.rb +0 -26
  265. data/spec/merb/core_ext/object_spec.rb +0 -47
  266. data/spec/merb/core_ext/string_spec.rb +0 -22
  267. data/spec/merb/core_ext/symbol_spec.rb +0 -7
  268. data/spec/merb/dependency_spec.rb +0 -22
  269. data/spec/merb/dispatch_spec.rb +0 -528
  270. data/spec/merb/fake_request_spec.rb +0 -80
  271. data/spec/merb/generator_spec.rb +0 -248
  272. data/spec/merb/handler_spec.rb +0 -169
  273. data/spec/merb/mail_controller_spec.rb +0 -177
  274. data/spec/merb/mailer_spec.rb +0 -87
  275. data/spec/merb/multipart_spec.rb +0 -50
  276. data/spec/merb/part_controller_spec.rb +0 -124
  277. data/spec/merb/plugins_spec.rb +0 -80
  278. data/spec/merb/render_spec.rb +0 -469
  279. data/spec/merb/request_spec.rb +0 -287
  280. data/spec/merb/responder_spec.rb +0 -562
  281. data/spec/merb/router_spec.rb +0 -900
  282. data/spec/merb/server_spec.rb +0 -19
  283. data/spec/merb/template_spec.rb +0 -41
  284. data/spec/merb/upload_handler_spec.rb +0 -108
  285. data/spec/merb/version_spec.rb +0 -33
  286. data/spec/merb/view_context_spec.rb +0 -366
  287. data/spec/spec_generator_helper.rb +0 -34
  288. data/spec/spec_helper.rb +0 -101
  289. data/spec/spec_helpers/url_shared_behaviour.rb +0 -112
  290. data/test_unit_generators/merb_controller_test/merb_controller_test_generator.rb +0 -53
  291. data/test_unit_generators/merb_controller_test/templates/functional_test.rb +0 -17
  292. data/test_unit_generators/merb_controller_test/templates/helper_test.rb +0 -9
  293. data/test_unit_generators/merb_model_test/merb_model_test_generator.rb +0 -29
  294. data/test_unit_generators/merb_model_test/templates/model_test_unit_template.erb +0 -9
@@ -1,469 +0,0 @@
1
- require 'stringio'
2
- require File.dirname(__FILE__) + '/../spec_helper'
3
- require File.dirname(__FILE__) + '/../fixtures/controllers/render_spec_controllers'
4
-
5
- describe "rendering engines except XMLBuilder", :shared => true do
6
- it "should render a template" do
7
- c = new_controller
8
- content = c.render :template => "#{@engine}", :layout => :none
9
- content.clean.should == "Hello!"
10
- end
11
-
12
- it "should render a partial" do
13
- c = new_controller
14
- content = c.partial "partials/#{@engine}"
15
- content.clean.should == "No Locals!"
16
- end
17
-
18
- it "should render a partial with locals" do
19
- c = new_controller
20
- content = c.partial "partials/#{@engine}", :yo => "Locals!"
21
- content.clean.should == "Locals!"
22
- end
23
-
24
- it "should render a partial with nil locals" do
25
- c = new_controller
26
- content = c.partial "partials/#{@engine}", :yo => nil
27
- content.clean.should == "No Locals!"
28
- end
29
-
30
- it "should render a partial using the :partial method" do
31
- c = new_controller
32
- content = c.partial("partials/#{@engine}")
33
- content.clean.should == "No Locals!"
34
- end
35
-
36
- it "should render a partial using the :partial method with locals" do
37
- c = new_controller
38
- content = c.partial("partials/#{@engine}", :yo => "Locals!")
39
- content.clean.should == "Locals!"
40
- end
41
-
42
- it "should render a partial iterating over a collection" do
43
- c = new_controller
44
- content = c.partial("partials/#{@engine}_collection",
45
- :with => (1..10).to_a)
46
- content.clean.should == (1..10).to_a.join("\n")
47
- end
48
-
49
- it "should render a partial with an object" do
50
- c = new_controller
51
- content = c.partial("partials/#{@engine}_collection", :with => 1)
52
- content.clean.should == '1'
53
- end
54
-
55
- it "should allow you to overwrite the local var using :as when rendering a collection" do
56
- c = new_controller
57
- content = c.partial("partials/#{@engine}_collection_with_locals", :with => (1..10).to_a, :as => :number)
58
- content.clean.should == (1..10).to_a.join("\n")
59
- end
60
-
61
- it "should allow you to overwrite the local var using :as when render an object" do
62
- c = new_controller
63
- content = c.partial("partials/#{@engine}_collection_with_locals", :with => 1, :as => :number)
64
- content.clean.should == '1'
65
- end
66
-
67
- it "should render a partial iterating over a collection with extra locals" do
68
- c = new_controller
69
- content = c.partial("partials/#{@engine}_collection_with_locals", :with => (1..10).to_a, :number => 'Locals!')
70
- content.clean.should == (1..10).to_a.map { |i| "Locals!" }.join("\n")
71
- end
72
-
73
- it "should render a partial using the .format.engine convention" do
74
- c = new_controller
75
- content = c.partial "partials/#{@engine}_new"
76
- content.clean.should == "No Locals!"
77
- end
78
-
79
- it "should render a template without a layout" do
80
- c = new_controller
81
- content = c.render_no_layout(:template => "#{@engine}")
82
- content.clean.should == "Hello!"
83
- end
84
-
85
- it "should raise an exception without a template" do
86
- c = new_controller(nil, Examples)
87
- lambda {
88
- c.render_no_layout(:template => nil)
89
- }.should raise_error(Merb::ControllerExceptions::TemplateNotFound)
90
- end
91
-
92
- it "should find a snake case partial" do
93
- c = new_controller(nil, Examples)
94
- content = c.partial("#{@engine}")
95
- content.clean.should == "Hello!"
96
- end
97
-
98
- it "should implement a _buffer method" do
99
- c = new_controller
100
- content = c.render :template => "template_views/interface__buffer_#{@engine}", :layout => :none
101
- content.should match( /respond_to\?\(\s*\:_buffer\s*\)\s+\=\s+TRUE/ )
102
- content.should match( /Text for the view buffer/ )
103
- end
104
-
105
- it "should implement a concat( text, binding ) method" do
106
- c = new_controller
107
- content = c.render :template => "template_views/interface_concat_#{@engine}", :layout => :none
108
- content.should match( /Concat Text/ )
109
- end
110
-
111
- it "should bind the concat to a block" do
112
- c = new_controller
113
- content = c.render :template => "template_views/interface_concat_#{@engine}", :layout => :none
114
- content.should match( /Start Tester Block\s*In Tester Block\s*Finish Tester Block/m)
115
- end
116
-
117
- it "should bind the concat to independent render buffers" do
118
- c = new_controller
119
- content = c.render :template => "template_views/interface_concat_#{@engine}", :layout => :none
120
- content.should match( /Start Tester Block\s*In Tester Block\s*Finish Tester Block/m)
121
- content = c.render :template => "template_views/interface_concat_#{@engine}", :layout => :none
122
- content.should match( /Start Tester Block\s*In Tester Block\s*Finish Tester Block/m)
123
- end
124
-
125
- it "should implement a capture( &block ) method" do
126
- c = new_controller
127
- content = c.render :template => "template_views/interface_capture_#{@engine}", :layout => :none
128
- content.should match( /Capture Text Without Args/m)
129
- end
130
-
131
- it "should render #{@engine} partial using .format.engine convention#{" (caching on)" if defined?(cache) && cache}" do
132
- c = new_controller
133
- content = c.partial "partials/#{@engine}_new"
134
- content.clean.should == "No Locals!"
135
- end
136
-
137
- # # These cannot be implemented at this stage with Markaby without instance_exec which will
138
- # # not be available until Ruby 1.9
139
- # it "should implement capture and yield arguments to the block for #{@engine}" do
140
- # c = new_controller
141
- # content = c.render :template => "template_views/interface_capture_#{@engine}", :layout => :none
142
- # content.should match( /capture text from yielded object/im)
143
- # end
144
- #
145
- # # This cannot be specced until Ruby 1.9 is available due to instance_exec
146
- # # unless markaby can be made to accept arguments for this method.
147
- # it "should capture content in a block for #{@engine}" do
148
- # c = new_controller
149
- # content = c.render :template => "template_views/interface_capture_#{@engine}", :layout => :none
150
- # content.should match( /BEFORE\s*capture text from yielded object\s*AFTER/im)
151
- # end
152
- end
153
-
154
- [true, false].each do |cache|
155
- Merb::Config[:cache_templates] = cache
156
-
157
- describe "Merb rendering in general#{" (caching enabled)" if cache}" do
158
- it "should render inline with Erubis" do
159
- c = new_controller
160
- content = c.render :inline => "<%= 'Inline' %>", :layout => :none
161
- content.clean.should == "Inline"
162
- end
163
-
164
- it "should render an XML string" do
165
- c = new_controller(nil, Examples)
166
- content = c.render :xml => "<hello>world</hello>"
167
- content.clean.should == "<hello>world</hello>"
168
- c.headers["Content-Type"].should == "application/xml"
169
- c.headers["Encoding"].should == "UTF-8"
170
- end
171
-
172
- it "should render a javascript string" do
173
- c = new_controller(nil, Examples)
174
- content = c.render(:js => "alert('Hello, world!');")
175
- content.clean.should == %{alert('Hello, world!');}
176
- end
177
-
178
- it "should raise an TemplateNotFound error if a template is called that does not exist" do
179
- c = new_controller(nil, Examples)
180
- lambda do
181
- c.render(:template => "does_not_exist", :format => :html)
182
- end.should raise_error(Merb::ControllerExceptions::TemplateNotFound)
183
- end
184
-
185
- it "should render a template from a directory with a . in it's path" do
186
- c = new_controller(nil, Examples)
187
- lambda do
188
- c.render(:template => "test.dir/the_template", :format => :html)
189
- end.should_not raise_error(Merb::ControllerExceptions::TemplateNotFound)
190
- end
191
-
192
- end
193
-
194
- describe "Merb rendering with the Erubis engine#{" (caching enabled)" if cache}" do
195
- before(:all) { @engine = "erubis" }
196
- it_should_behave_like "rendering engines except XMLBuilder"
197
-
198
- it "should render a nested controller's views" do
199
- c = new_controller(nil, Nested::Example)
200
- content = c.render(:action => "test")
201
- content.clean.should == "Hello!"
202
- end
203
-
204
- it "should report the selected template in controller._template" do
205
- c = new_controller
206
- content = c.render(:template => "erubis")
207
- c.template.should == "erubis.html.erb"
208
- end
209
-
210
- it "should raise LayoutNotFound if the layout is missing" do
211
- c = new_controller
212
- lambda {
213
- c.render(:template => "erubis", :layout => "this_is_not_a_layout")
214
- }.should raise_error(Merb::ControllerExceptions::LayoutNotFound)
215
- end
216
-
217
- it "should render the index action using index.html.erb" do
218
- c = new_spec_controller
219
- c.dispatch(:index)
220
- c.template.should == "index.html.erb"
221
- end
222
-
223
- it "should render an erubis .html.erb template" do
224
- c = new_spec_controller(:format => 'html')
225
- c.dispatch(:erubis_templates)
226
- c.template.should == "erubis_templates.html.erb"
227
- end
228
-
229
- it "should render an .html.erb template in front of a erubis_templates.rhtml" do
230
- c = new_spec_controller(:format => 'html')
231
- c.dispatch(:erubis_templates)
232
- c.template.should == "erubis_templates.html.erb"
233
- end
234
-
235
- it "should render an erubis .js.erb template" do
236
- c = new_spec_controller(:format => 'js')
237
- c.dispatch(:erubis_templates)
238
- c.template.should == "erubis_templates.js.erb"
239
- end
240
-
241
- it "should render an erubis .xml.erb template" do
242
- c = new_spec_controller(:format => 'xml')
243
- c.dispatch(:erubis_templates)
244
- c.template.should == "erubis_templates.xml.erb"
245
- end
246
-
247
- it "should render js in nested partials when the format is javascript" do
248
- c = new_spec_controller
249
- c.dispatch(:render_nested_js)
250
- c.body.should match(/nested_js_partial/m)
251
- end
252
-
253
- it "should render xml in nested partials when the format is xml" do
254
- c = new_spec_controller
255
- c.dispatch(:render_nested_xml)
256
- c.body.should match(/nested_xml_partial/m)
257
- end
258
-
259
- it "should render multiple partials with locals" do
260
- c = new_spec_controller(:controller => "ExtensionTemplateController")
261
- c.dispatch(:render_multiple_partials)
262
- (1..10).each do |i|
263
- c.body.should match(/#{i}/)
264
- end
265
- end
266
-
267
- end
268
-
269
- describe "Merb rendering with the Markaby engine#{" (caching enabled)" if cache}" do
270
- before(:all) { @engine = "markaby" }
271
- it_should_behave_like "rendering engines except XMLBuilder"
272
-
273
- it "should render markaby_index using markaby_index.html.mab" do
274
- c = new_spec_controller
275
- c.dispatch(:markaby_index)
276
- c.template.should == "markaby_index.html.mab"
277
- end
278
-
279
- it "should render a markaby .html.mab template" do
280
- c = new_spec_controller(:format => 'html')
281
- c.dispatch(:markaby_templates)
282
- c.template.should == "markaby_templates.html.mab"
283
- end
284
-
285
- it "should render a markaby .js.mab template" do
286
- c = new_spec_controller(:format => 'js')
287
- c.dispatch(:markaby_templates)
288
- c.template.should == "markaby_templates.js.mab"
289
- end
290
-
291
- it "should render a markaby .xml.mab template" do
292
- c = new_spec_controller(:format => 'xml')
293
- c.dispatch(:markaby_templates)
294
- c.template.should == "markaby_templates.xml.mab"
295
- end
296
- end
297
-
298
- # XMLBuilder and Haml templates aren't supported under JRuby yet
299
- unless RUBY_PLATFORM =~ /java/
300
- describe "Merb rendering with the Haml engine#{" (caching enabled)" if cache}" do
301
- before(:all) { @engine = "haml" }
302
- it_should_behave_like "rendering engines except XMLBuilder"
303
-
304
- it "should render haml_index using haml_index.html.haml" do
305
- c = new_spec_controller
306
- c.dispatch(:haml_index)
307
- c.template.should == "haml_index.html.haml"
308
- end
309
-
310
- it "should render an haml .html.haml template" do
311
- c = new_spec_controller(:format => 'html')
312
- c.dispatch(:haml_templates)
313
- c.template.should == "haml_templates.html.haml"
314
- end
315
-
316
- it "should render an haml .js.haml template" do
317
- c = new_spec_controller(:format => 'js')
318
- c.dispatch(:haml_templates)
319
- c.template.should == "haml_templates.js.haml"
320
- end
321
-
322
- it "should render an haml .xml.haml template" do
323
- c = new_spec_controller(:format => 'xml')
324
- c.dispatch(:haml_templates)
325
- c.template.should == "haml_templates.xml.haml"
326
- end
327
-
328
- end
329
-
330
- describe "Merb rendering with the XMLBuilder engine#{" (caching enabled)" if cache}" do
331
- before(:all) { @engine = "builder" }
332
-
333
- it "should render an XML template from a symbol" do
334
- c = new_controller(nil, Examples)
335
- content = c.render :xml => :hello
336
- content.clean.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hello>world</hello>"
337
- c.headers["Content-Type"].should == "application/xml"
338
- end
339
-
340
- it "should render an XML template from an action" do
341
- c = new_controller(nil, Examples)
342
- content = c.render :xml => true, :action => "hello"
343
- content.clean.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hello>world</hello>"
344
- c.headers["Content-Type"].should == "application/xml"
345
- end
346
-
347
- end
348
- end
349
-
350
- end
351
-
352
- describe "Merb rendering with an object calls to_json or to_xml on the object" do
353
- it "render @foo should call @foo.to_json when json is requested" do
354
- c = new_spec_controller(:format => 'json', :controller => 'RenderObjectController')
355
- c.dispatch(:render_object)
356
- c.body.should == "{'foo':'bar'}"
357
- end
358
-
359
- it "render @foo should call @foo.to_xml when json is requested" do
360
- c = new_spec_controller(:format => 'xml', :controller => 'RenderObjectController')
361
- c.dispatch(:render_object)
362
- c.body.should == "<foo>bar</foo>"
363
- end
364
-
365
- it "should render the template for the action when called with an object and the template exists" do
366
- c = new_spec_controller(:format => :html, :controller => 'RenderObjectController')
367
- c.dispatch(:render_object_with_template)
368
- c.body.should match(/object with template html format/)
369
- end
370
-
371
- it "should render the template for the action when called with an object and the template exists" do
372
- c = new_spec_controller(:format => :xml, :controller => 'RenderObjectController')
373
- c.dispatch(:render_object_with_template)
374
- c.body.should match(/object with template xml format/)
375
- end
376
-
377
- it "should render the template for the action when called with an object and the template exists" do
378
- c = new_spec_controller(:format => :js, :controller => 'RenderObjectController')
379
- c.dispatch(:render_object_with_template)
380
- c.body.should match(/object with template js format/)
381
- end
382
-
383
- end
384
-
385
- describe "Merb rendering with an object calls to_json or to_xml on the object (using specified arguments)" do
386
-
387
- it "render @foo should call @foo.to_json when json is requested (using default options)" do
388
- c = new_spec_controller(:format => 'json', :controller => 'RenderObjectWithArgumentsController')
389
- c.provided_format_arguments_for(:json).should == ["foo", "bar"]
390
- c.dispatch(:render_standard)
391
- c.body.should == "['foo','bar']"
392
- end
393
-
394
- it "render @foo should call @foo.to_json when json is requested (using action options)" do
395
- c = new_spec_controller(:format => 'json', :controller => 'RenderObjectWithArgumentsController')
396
- c.dispatch(:render_specific)
397
- c.body.should == "['foo','bar','baz']"
398
- end
399
-
400
- it "render @foo should call @foo.to_xml when xml is requested (using default options)" do
401
- c = new_spec_controller(:format => 'xml', :controller => 'RenderObjectWithArgumentsController')
402
- c.provided_format_arguments_for(:xml).should == [{:foo=>"bar"}]
403
- c.dispatch(:render_standard)
404
- c.body.should == "<foo>bar</foo>"
405
- end
406
-
407
- it "render @foo should call @foo.to_xml when xml is requested (using action options)" do
408
- c = new_spec_controller(:format => 'xml', :controller => 'RenderObjectWithArgumentsController')
409
- c.dispatch(:render_specific)
410
- c.body.should == "<biz>baz</biz><foo>bar</foo>"
411
- end
412
-
413
- end
414
-
415
- describe "Merb rendering with a hash object calls to_json or to_xml on the object" do
416
-
417
- it "render :obj => @foo should call @foo.to_json when json is requested" do
418
- c = new_spec_controller(:format => 'json', :controller => 'RenderHashObjectController')
419
- c.dispatch(:render_object)
420
- JSON.load(c.body).should == {'baz' => "quuz", "foo" => "bar"}
421
- end
422
-
423
- it "render @foo should call @foo.to_xml when xml is requested" do
424
- c = new_spec_controller(:format => 'xml', :controller => 'RenderHashObjectController')
425
- c.dispatch(:render_object)
426
- c.body.should match(/<\?xml version="1.0" encoding="UTF-8"\?>\n<hash>/m)
427
- c.body.should match(/(<baz>quuz<\/baz>\n\s+<foo>bar<\/foo>\n<\/hash>)|(<foo>bar<\/foo>\n\s+<baz>quuz<\/baz>\n<\/hash>)/m)
428
- end
429
-
430
- end
431
-
432
- describe "Merb rendering with an object and using a block/lambda for provides" do
433
-
434
- it "render @foo should use the default block when xml is requested" do
435
- c = new_spec_controller(:format => 'xml', :controller => 'RenderObjectWithBlockController')
436
- c.provided_format_arguments_for(:xml).should be_kind_of(Proc)
437
- c.dispatch(:render_standard)
438
- c.body.should == "<foo>RenderObjectWithBlockController</foo>"
439
- end
440
-
441
- it "render @foo should use the default block when json is requested" do
442
- c = new_spec_controller(:format => 'json', :controller => 'RenderObjectWithBlockController')
443
- c.provided_format_arguments_for(:json).should be_kind_of(Proc)
444
- c.dispatch(:render_standard)
445
- c.body.should == "['foo']"
446
- end
447
-
448
- it "render @foo should use the specific proc when xml is requested" do
449
- c = new_spec_controller(:format => 'xml', :controller => 'RenderObjectWithBlockController')
450
- c.dispatch(:render_specific)
451
- c.body.should == "<foo>RENDEROBJECTWITHBLOCKCONTROLLER</foo>"
452
- end
453
-
454
- it "render @foo should use the specific proc when json is requested" do
455
- c = new_spec_controller(:format => 'json', :controller => 'RenderObjectWithBlockController')
456
- c.dispatch(:render_specific)
457
- c.body.should == "['RenderObjectWithBlockController','foo','bar','baz']"
458
- end
459
-
460
- end
461
-
462
- def new_spec_controller(options={})
463
- params = {:controller => 'ExtensionTemplateController'}
464
- params.update(:format => options.delete(:format)) if options[:format]
465
- params.update(:controller => options[:controller]) if options[:controller]
466
- @request = Merb::Test::FakeRequest.new(options)
467
- @request.params.merge!(params)
468
- Object.const_get(params[:controller].to_sym).build(@request, @request.body)
469
- end