actionpack 2.3.18 → 3.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (513) hide show
  1. data/CHANGELOG +15 -64
  2. data/README +39 -48
  3. data/lib/abstract_controller.rb +22 -0
  4. data/lib/abstract_controller/base.rb +191 -0
  5. data/lib/abstract_controller/callbacks.rb +113 -0
  6. data/lib/abstract_controller/collector.rb +30 -0
  7. data/lib/abstract_controller/compatibility.rb +18 -0
  8. data/lib/abstract_controller/helpers.rb +163 -0
  9. data/lib/abstract_controller/layouts.rb +413 -0
  10. data/lib/abstract_controller/localized_cache.rb +49 -0
  11. data/lib/abstract_controller/logger.rb +13 -0
  12. data/lib/abstract_controller/rendering.rb +238 -0
  13. data/lib/{action_controller → abstract_controller}/translation.rb +1 -1
  14. data/lib/action_controller.rb +68 -102
  15. data/lib/action_controller/base.rb +77 -1409
  16. data/lib/action_controller/caching.rb +58 -45
  17. data/lib/action_controller/caching/actions.rb +100 -114
  18. data/lib/action_controller/caching/fragments.rb +17 -19
  19. data/lib/action_controller/caching/pages.rb +12 -6
  20. data/lib/action_controller/caching/sweeping.rb +42 -0
  21. data/lib/action_controller/deprecated.rb +5 -0
  22. data/lib/action_controller/deprecated/dispatcher.rb +28 -0
  23. data/lib/action_controller/deprecated/integration_test.rb +2 -0
  24. data/lib/action_controller/deprecated/performance_test.rb +1 -0
  25. data/lib/action_controller/metal.rb +125 -0
  26. data/lib/action_controller/metal/compatibility.rb +141 -0
  27. data/lib/action_controller/metal/conditional_get.rb +86 -0
  28. data/lib/action_controller/metal/configuration.rb +28 -0
  29. data/lib/action_controller/metal/cookies.rb +17 -0
  30. data/lib/action_controller/metal/exceptions.rb +46 -0
  31. data/lib/action_controller/metal/flash.rb +28 -0
  32. data/lib/action_controller/metal/head.rb +33 -0
  33. data/lib/action_controller/metal/helpers.rb +116 -0
  34. data/lib/action_controller/metal/hide_actions.rb +50 -0
  35. data/lib/action_controller/{http_authentication.rb → metal/http_authentication.rb} +18 -15
  36. data/lib/action_controller/metal/instrumentation.rb +99 -0
  37. data/lib/action_controller/metal/mime_responds.rb +300 -0
  38. data/lib/action_controller/metal/rack_delegation.rb +35 -0
  39. data/lib/action_controller/metal/redirecting.rb +90 -0
  40. data/lib/action_controller/metal/renderers.rb +95 -0
  41. data/lib/action_controller/metal/rendering.rb +69 -0
  42. data/lib/action_controller/metal/request_forgery_protection.rb +115 -0
  43. data/lib/action_controller/metal/rescue.rb +13 -0
  44. data/lib/action_controller/metal/responder.rb +220 -0
  45. data/lib/action_controller/{session_management.rb → metal/session_management.rb} +5 -14
  46. data/lib/action_controller/{streaming.rb → metal/streaming.rb} +13 -12
  47. data/lib/action_controller/metal/testing.rb +42 -0
  48. data/lib/action_controller/metal/url_for.rb +157 -0
  49. data/lib/action_controller/{verification.rb → metal/verification.rb} +41 -41
  50. data/lib/action_controller/middleware.rb +38 -0
  51. data/lib/action_controller/polymorphic_routes.rb +20 -26
  52. data/lib/action_controller/railtie.rb +30 -0
  53. data/lib/action_controller/railties/subscriber.rb +63 -0
  54. data/lib/action_controller/record_identifier.rb +3 -16
  55. data/lib/action_controller/test_case.rb +156 -18
  56. data/lib/action_controller/url_rewriter.rb +47 -200
  57. data/lib/action_controller/vendor/html-scanner.rb +16 -12
  58. data/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
  59. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +12 -9
  60. data/lib/action_dispatch.rb +88 -0
  61. data/lib/action_dispatch/http/cache.rb +123 -0
  62. data/lib/action_dispatch/http/filter_parameters.rb +98 -0
  63. data/lib/{action_controller → action_dispatch/http}/headers.rb +8 -8
  64. data/lib/action_dispatch/http/mime_negotiation.rb +101 -0
  65. data/lib/{action_controller → action_dispatch/http}/mime_type.rb +30 -11
  66. data/lib/{action_controller → action_dispatch/http}/mime_types.rb +5 -3
  67. data/lib/action_dispatch/http/parameters.rb +49 -0
  68. data/lib/action_dispatch/http/request.rb +223 -0
  69. data/lib/action_dispatch/http/response.rb +209 -0
  70. data/lib/action_dispatch/http/upload.rb +48 -0
  71. data/lib/action_dispatch/http/url.rb +129 -0
  72. data/lib/action_dispatch/middleware/callbacks.rb +50 -0
  73. data/lib/action_dispatch/middleware/cascade.rb +29 -0
  74. data/lib/action_dispatch/middleware/cookies.rb +216 -0
  75. data/lib/{action_controller → action_dispatch/middleware}/flash.rb +51 -90
  76. data/lib/action_dispatch/middleware/head.rb +18 -0
  77. data/lib/action_dispatch/middleware/params_parser.rb +78 -0
  78. data/lib/action_dispatch/middleware/rescue.rb +26 -0
  79. data/lib/action_dispatch/middleware/session/abstract_store.rb +209 -0
  80. data/lib/{action_controller → action_dispatch/middleware}/session/cookie_store.rb +56 -60
  81. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +47 -0
  82. data/lib/action_dispatch/middleware/show_exceptions.rb +173 -0
  83. data/lib/{action_controller/middleware_stack.rb → action_dispatch/middleware/stack.rb} +23 -13
  84. data/lib/action_dispatch/middleware/static.rb +44 -0
  85. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_request_and_response.erb +10 -3
  86. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_trace.erb +4 -4
  87. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +10 -0
  88. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/layout.erb +2 -2
  89. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/missing_template.erb +0 -0
  90. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/routing_error.erb +0 -0
  91. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/template_error.erb +3 -3
  92. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/unknown_action.erb +0 -0
  93. data/lib/action_dispatch/railtie.rb +15 -0
  94. data/lib/action_dispatch/routing.rb +217 -0
  95. data/lib/action_dispatch/routing/deprecated_mapper.rb +877 -0
  96. data/lib/action_dispatch/routing/mapper.rb +649 -0
  97. data/lib/action_dispatch/routing/route.rb +55 -0
  98. data/lib/action_dispatch/routing/route_set.rb +445 -0
  99. data/lib/action_dispatch/testing/assertions.rb +21 -0
  100. data/lib/action_dispatch/testing/assertions/dom.rb +37 -0
  101. data/lib/{action_controller/assertions/model_assertions.rb → action_dispatch/testing/assertions/model.rb} +2 -4
  102. data/lib/action_dispatch/testing/assertions/response.rb +154 -0
  103. data/lib/{action_controller/assertions/routing_assertions.rb → action_dispatch/testing/assertions/routing.rb} +72 -34
  104. data/lib/{action_controller/assertions/selector_assertions.rb → action_dispatch/testing/assertions/selector.rb} +14 -11
  105. data/lib/{action_controller/assertions/tag_assertions.rb → action_dispatch/testing/assertions/tag.rb} +25 -14
  106. data/lib/{action_controller → action_dispatch/testing}/integration.rb +173 -406
  107. data/lib/action_dispatch/testing/performance_test.rb +17 -0
  108. data/lib/action_dispatch/testing/test_process.rb +42 -0
  109. data/lib/action_dispatch/testing/test_request.rb +83 -0
  110. data/lib/action_dispatch/testing/test_response.rb +136 -0
  111. data/lib/action_pack/version.rb +3 -3
  112. data/lib/action_view.rb +29 -26
  113. data/lib/action_view/base.rb +101 -148
  114. data/lib/action_view/context.rb +44 -0
  115. data/lib/action_view/helpers.rb +6 -4
  116. data/lib/action_view/helpers/{active_record_helper.rb → active_model_helper.rb} +63 -63
  117. data/lib/action_view/helpers/asset_tag_helper.rb +166 -31
  118. data/lib/action_view/helpers/cache_helper.rb +1 -1
  119. data/lib/action_view/helpers/capture_helper.rb +40 -8
  120. data/lib/action_view/helpers/csrf_helper.rb +2 -4
  121. data/lib/action_view/helpers/date_helper.rb +14 -15
  122. data/lib/action_view/helpers/form_helper.rb +121 -24
  123. data/lib/action_view/helpers/form_options_helper.rb +26 -25
  124. data/lib/action_view/helpers/form_tag_helper.rb +42 -33
  125. data/lib/action_view/helpers/javascript_helper.rb +1 -109
  126. data/lib/action_view/helpers/number_helper.rb +4 -1
  127. data/lib/action_view/helpers/prototype_helper.rb +75 -499
  128. data/lib/action_view/helpers/raw_output_helper.rb +1 -1
  129. data/lib/action_view/helpers/record_tag_helper.rb +3 -3
  130. data/lib/action_view/helpers/sanitize_helper.rb +3 -2
  131. data/lib/action_view/helpers/scriptaculous_helper.rb +89 -53
  132. data/lib/action_view/helpers/tag_helper.rb +12 -13
  133. data/lib/action_view/helpers/text_helper.rb +33 -38
  134. data/lib/action_view/helpers/translation_helper.rb +11 -35
  135. data/lib/action_view/helpers/url_helper.rb +140 -134
  136. data/lib/action_view/locale/en.yml +34 -28
  137. data/lib/action_view/paths.rb +27 -24
  138. data/lib/action_view/railtie.rb +17 -0
  139. data/lib/action_view/railties/subscriber.rb +24 -0
  140. data/lib/action_view/{partials.rb → render/partials.rb} +161 -51
  141. data/lib/action_view/render/rendering.rb +117 -0
  142. data/lib/action_view/template.rb +88 -217
  143. data/lib/action_view/template/error.rb +105 -0
  144. data/lib/action_view/template/handler.rb +41 -0
  145. data/lib/action_view/template/handlers.rb +54 -0
  146. data/lib/action_view/{template_handlers → template/handlers}/builder.rb +6 -6
  147. data/lib/action_view/template/handlers/erb.rb +58 -0
  148. data/lib/action_view/{template_handlers → template/handlers}/rjs.rb +8 -3
  149. data/lib/action_view/template/resolver.rb +164 -0
  150. data/lib/action_view/template/text.rb +40 -0
  151. data/lib/action_view/test_case.rb +18 -18
  152. metadata +165 -420
  153. data/RUNNING_UNIT_TESTS +0 -24
  154. data/Rakefile +0 -158
  155. data/install.rb +0 -30
  156. data/lib/action_controller/assertions/dom_assertions.rb +0 -55
  157. data/lib/action_controller/assertions/response_assertions.rb +0 -169
  158. data/lib/action_controller/benchmarking.rb +0 -107
  159. data/lib/action_controller/caching/sweeper.rb +0 -45
  160. data/lib/action_controller/cgi_ext.rb +0 -15
  161. data/lib/action_controller/cgi_ext/cookie.rb +0 -112
  162. data/lib/action_controller/cgi_ext/query_extension.rb +0 -22
  163. data/lib/action_controller/cgi_ext/stdinput.rb +0 -24
  164. data/lib/action_controller/cgi_process.rb +0 -77
  165. data/lib/action_controller/cookies.rb +0 -197
  166. data/lib/action_controller/dispatcher.rb +0 -133
  167. data/lib/action_controller/failsafe.rb +0 -87
  168. data/lib/action_controller/filters.rb +0 -680
  169. data/lib/action_controller/helpers.rb +0 -225
  170. data/lib/action_controller/layout.rb +0 -286
  171. data/lib/action_controller/middlewares.rb +0 -14
  172. data/lib/action_controller/mime_responds.rb +0 -193
  173. data/lib/action_controller/params_parser.rb +0 -77
  174. data/lib/action_controller/performance_test.rb +0 -15
  175. data/lib/action_controller/rack_lint_patch.rb +0 -36
  176. data/lib/action_controller/reloader.rb +0 -54
  177. data/lib/action_controller/request.rb +0 -518
  178. data/lib/action_controller/request_forgery_protection.rb +0 -116
  179. data/lib/action_controller/rescue.rb +0 -183
  180. data/lib/action_controller/resources.rb +0 -682
  181. data/lib/action_controller/response.rb +0 -237
  182. data/lib/action_controller/routing.rb +0 -388
  183. data/lib/action_controller/routing/builder.rb +0 -197
  184. data/lib/action_controller/routing/optimisations.rb +0 -130
  185. data/lib/action_controller/routing/recognition_optimisation.rb +0 -167
  186. data/lib/action_controller/routing/route.rb +0 -265
  187. data/lib/action_controller/routing/route_set.rb +0 -503
  188. data/lib/action_controller/routing/routing_ext.rb +0 -49
  189. data/lib/action_controller/routing/segments.rb +0 -343
  190. data/lib/action_controller/session/abstract_store.rb +0 -276
  191. data/lib/action_controller/session/mem_cache_store.rb +0 -60
  192. data/lib/action_controller/status_codes.rb +0 -88
  193. data/lib/action_controller/string_coercion.rb +0 -29
  194. data/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
  195. data/lib/action_controller/test_process.rb +0 -580
  196. data/lib/action_controller/uploaded_file.rb +0 -44
  197. data/lib/action_view/helpers/benchmark_helper.rb +0 -54
  198. data/lib/action_view/inline_template.rb +0 -19
  199. data/lib/action_view/reloadable_template.rb +0 -117
  200. data/lib/action_view/renderable.rb +0 -109
  201. data/lib/action_view/renderable_partial.rb +0 -53
  202. data/lib/action_view/template_error.rb +0 -99
  203. data/lib/action_view/template_handler.rb +0 -34
  204. data/lib/action_view/template_handlers.rb +0 -48
  205. data/lib/action_view/template_handlers/erb.rb +0 -25
  206. data/lib/actionpack.rb +0 -2
  207. data/test/abstract_unit.rb +0 -78
  208. data/test/active_record_unit.rb +0 -104
  209. data/test/activerecord/active_record_store_test.rb +0 -221
  210. data/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
  211. data/test/adv_attr_test.rb +0 -20
  212. data/test/controller/action_pack_assertions_test.rb +0 -545
  213. data/test/controller/addresses_render_test.rb +0 -37
  214. data/test/controller/assert_select_test.rb +0 -735
  215. data/test/controller/base_test.rb +0 -217
  216. data/test/controller/benchmark_test.rb +0 -32
  217. data/test/controller/caching_test.rb +0 -743
  218. data/test/controller/capture_test.rb +0 -66
  219. data/test/controller/content_type_test.rb +0 -178
  220. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  221. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  222. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  223. data/test/controller/cookie_test.rb +0 -208
  224. data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
  225. data/test/controller/dispatcher_test.rb +0 -144
  226. data/test/controller/dom_assertions_test.rb +0 -53
  227. data/test/controller/failsafe_test.rb +0 -60
  228. data/test/controller/fake_controllers.rb +0 -33
  229. data/test/controller/fake_models.rb +0 -19
  230. data/test/controller/filter_params_test.rb +0 -52
  231. data/test/controller/filters_test.rb +0 -885
  232. data/test/controller/flash_test.rb +0 -174
  233. data/test/controller/header_test.rb +0 -14
  234. data/test/controller/helper_test.rb +0 -224
  235. data/test/controller/html-scanner/cdata_node_test.rb +0 -15
  236. data/test/controller/html-scanner/document_test.rb +0 -148
  237. data/test/controller/html-scanner/node_test.rb +0 -89
  238. data/test/controller/html-scanner/sanitizer_test.rb +0 -300
  239. data/test/controller/html-scanner/tag_node_test.rb +0 -238
  240. data/test/controller/html-scanner/text_node_test.rb +0 -50
  241. data/test/controller/html-scanner/tokenizer_test.rb +0 -131
  242. data/test/controller/http_basic_authentication_test.rb +0 -113
  243. data/test/controller/http_digest_authentication_test.rb +0 -254
  244. data/test/controller/integration_test.rb +0 -526
  245. data/test/controller/layout_test.rb +0 -215
  246. data/test/controller/localized_templates_test.rb +0 -24
  247. data/test/controller/logging_test.rb +0 -46
  248. data/test/controller/middleware_stack_test.rb +0 -90
  249. data/test/controller/mime_responds_test.rb +0 -536
  250. data/test/controller/mime_type_test.rb +0 -93
  251. data/test/controller/output_escaping_test.rb +0 -19
  252. data/test/controller/polymorphic_routes_test.rb +0 -297
  253. data/test/controller/rack_test.rb +0 -308
  254. data/test/controller/record_identifier_test.rb +0 -139
  255. data/test/controller/redirect_test.rb +0 -285
  256. data/test/controller/reloader_test.rb +0 -125
  257. data/test/controller/render_test.rb +0 -1783
  258. data/test/controller/request/json_params_parsing_test.rb +0 -65
  259. data/test/controller/request/multipart_params_parsing_test.rb +0 -177
  260. data/test/controller/request/query_string_parsing_test.rb +0 -129
  261. data/test/controller/request/test_request_test.rb +0 -35
  262. data/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
  263. data/test/controller/request/xml_params_parsing_test.rb +0 -103
  264. data/test/controller/request_forgery_protection_test.rb +0 -233
  265. data/test/controller/request_test.rb +0 -398
  266. data/test/controller/rescue_test.rb +0 -541
  267. data/test/controller/resources_test.rb +0 -1393
  268. data/test/controller/routing_test.rb +0 -2592
  269. data/test/controller/selector_test.rb +0 -628
  270. data/test/controller/send_file_test.rb +0 -171
  271. data/test/controller/session/abstract_store_test.rb +0 -64
  272. data/test/controller/session/cookie_store_test.rb +0 -354
  273. data/test/controller/session/mem_cache_store_test.rb +0 -187
  274. data/test/controller/session/test_session_test.rb +0 -58
  275. data/test/controller/test_test.rb +0 -700
  276. data/test/controller/translation_test.rb +0 -26
  277. data/test/controller/url_rewriter_test.rb +0 -395
  278. data/test/controller/verification_test.rb +0 -270
  279. data/test/controller/view_paths_test.rb +0 -141
  280. data/test/controller/webservice_test.rb +0 -273
  281. data/test/fixtures/_top_level_partial.html.erb +0 -1
  282. data/test/fixtures/_top_level_partial_only.erb +0 -1
  283. data/test/fixtures/addresses/list.erb +0 -1
  284. data/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
  285. data/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
  286. data/test/fixtures/companies.yml +0 -24
  287. data/test/fixtures/company.rb +0 -10
  288. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
  289. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
  290. data/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
  291. data/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
  292. data/test/fixtures/customers/_customer.html.erb +0 -1
  293. data/test/fixtures/db_definitions/sqlite.sql +0 -49
  294. data/test/fixtures/developer.rb +0 -9
  295. data/test/fixtures/developers.yml +0 -21
  296. data/test/fixtures/developers/_developer.erb +0 -1
  297. data/test/fixtures/developers_projects.yml +0 -13
  298. data/test/fixtures/failsafe/500.html +0 -1
  299. data/test/fixtures/fun/games/_game.erb +0 -1
  300. data/test/fixtures/fun/games/hello_world.erb +0 -1
  301. data/test/fixtures/fun/serious/games/_game.erb +0 -1
  302. data/test/fixtures/functional_caching/_partial.erb +0 -3
  303. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
  304. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
  305. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
  306. data/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
  307. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
  308. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
  309. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
  310. data/test/fixtures/good_customers/_good_customer.html.erb +0 -1
  311. data/test/fixtures/helpers/abc_helper.rb +0 -5
  312. data/test/fixtures/helpers/fun/games_helper.rb +0 -3
  313. data/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
  314. data/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
  315. data/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
  316. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  317. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
  318. data/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
  319. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
  320. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
  321. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
  322. data/test/fixtures/layout_tests/views/hello.rhtml +0 -1
  323. data/test/fixtures/layouts/_column.html.erb +0 -2
  324. data/test/fixtures/layouts/block_with_layout.erb +0 -3
  325. data/test/fixtures/layouts/builder.builder +0 -3
  326. data/test/fixtures/layouts/default_html.html.erb +0 -1
  327. data/test/fixtures/layouts/partial_with_layout.erb +0 -3
  328. data/test/fixtures/layouts/standard.erb +0 -1
  329. data/test/fixtures/layouts/talk_from_action.erb +0 -2
  330. data/test/fixtures/layouts/xhr.html.erb +0 -2
  331. data/test/fixtures/layouts/yield.erb +0 -2
  332. data/test/fixtures/localized/hello_world.de.html +0 -1
  333. data/test/fixtures/localized/hello_world.en.html +0 -1
  334. data/test/fixtures/mascot.rb +0 -3
  335. data/test/fixtures/mascots.yml +0 -4
  336. data/test/fixtures/mascots/_mascot.html.erb +0 -1
  337. data/test/fixtures/multipart/binary_file +0 -0
  338. data/test/fixtures/multipart/boundary_problem_file +0 -10
  339. data/test/fixtures/multipart/bracketed_param +0 -5
  340. data/test/fixtures/multipart/empty +0 -10
  341. data/test/fixtures/multipart/hello.txt +0 -1
  342. data/test/fixtures/multipart/large_text_file +0 -10
  343. data/test/fixtures/multipart/mixed_files +0 -0
  344. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  345. data/test/fixtures/multipart/none +0 -9
  346. data/test/fixtures/multipart/single_parameter +0 -5
  347. data/test/fixtures/multipart/text_file +0 -10
  348. data/test/fixtures/override/test/hello_world.erb +0 -1
  349. data/test/fixtures/override2/layouts/test/sub.erb +0 -1
  350. data/test/fixtures/post_test/layouts/post.html.erb +0 -1
  351. data/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
  352. data/test/fixtures/post_test/post/index.html.erb +0 -1
  353. data/test/fixtures/post_test/post/index.iphone.erb +0 -1
  354. data/test/fixtures/post_test/super_post/index.html.erb +0 -1
  355. data/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
  356. data/test/fixtures/project.rb +0 -3
  357. data/test/fixtures/projects.yml +0 -7
  358. data/test/fixtures/projects/_project.erb +0 -1
  359. data/test/fixtures/public/404.html +0 -1
  360. data/test/fixtures/public/500.da.html +0 -1
  361. data/test/fixtures/public/500.html +0 -1
  362. data/test/fixtures/public/absolute/test.css +0 -23
  363. data/test/fixtures/public/absolute/test.js +0 -63
  364. data/test/fixtures/public/images/rails.png +0 -0
  365. data/test/fixtures/public/javascripts/application.js +0 -1
  366. data/test/fixtures/public/javascripts/bank.js +0 -1
  367. data/test/fixtures/public/javascripts/controls.js +0 -1
  368. data/test/fixtures/public/javascripts/dragdrop.js +0 -1
  369. data/test/fixtures/public/javascripts/effects.js +0 -1
  370. data/test/fixtures/public/javascripts/prototype.js +0 -1
  371. data/test/fixtures/public/javascripts/robber.js +0 -1
  372. data/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
  373. data/test/fixtures/public/javascripts/version.1.0.js +0 -1
  374. data/test/fixtures/public/stylesheets/bank.css +0 -1
  375. data/test/fixtures/public/stylesheets/robber.css +0 -1
  376. data/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
  377. data/test/fixtures/public/stylesheets/version.1.0.css +0 -1
  378. data/test/fixtures/quiz/questions/_question.html.erb +0 -1
  379. data/test/fixtures/replies.yml +0 -15
  380. data/test/fixtures/replies/_reply.erb +0 -1
  381. data/test/fixtures/reply.rb +0 -7
  382. data/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
  383. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
  384. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
  385. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
  386. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
  387. data/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
  388. data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
  389. data/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
  390. data/test/fixtures/respond_to/using_defaults.html.erb +0 -1
  391. data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
  392. data/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
  393. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
  394. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
  395. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
  396. data/test/fixtures/scope/test/modgreet.erb +0 -1
  397. data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
  398. data/test/fixtures/shared.html.erb +0 -1
  399. data/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
  400. data/test/fixtures/test/_counter.html.erb +0 -1
  401. data/test/fixtures/test/_customer.erb +0 -1
  402. data/test/fixtures/test/_customer_counter.erb +0 -1
  403. data/test/fixtures/test/_customer_counter_with_as.erb +0 -1
  404. data/test/fixtures/test/_customer_greeting.erb +0 -1
  405. data/test/fixtures/test/_customer_with_var.erb +0 -1
  406. data/test/fixtures/test/_form.erb +0 -1
  407. data/test/fixtures/test/_from_helper.erb +0 -1
  408. data/test/fixtures/test/_hash_greeting.erb +0 -1
  409. data/test/fixtures/test/_hash_object.erb +0 -2
  410. data/test/fixtures/test/_hello.builder +0 -1
  411. data/test/fixtures/test/_labelling_form.erb +0 -1
  412. data/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
  413. data/test/fixtures/test/_layout_for_partial.html.erb +0 -3
  414. data/test/fixtures/test/_local_inspector.html.erb +0 -1
  415. data/test/fixtures/test/_one.html.erb +0 -1
  416. data/test/fixtures/test/_partial.erb +0 -1
  417. data/test/fixtures/test/_partial.html.erb +0 -1
  418. data/test/fixtures/test/_partial.js.erb +0 -1
  419. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
  420. data/test/fixtures/test/_partial_only.erb +0 -1
  421. data/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
  422. data/test/fixtures/test/_person.erb +0 -2
  423. data/test/fixtures/test/_raise.html.erb +0 -1
  424. data/test/fixtures/test/_two.html.erb +0 -1
  425. data/test/fixtures/test/_utf8_partial.html.erb +0 -1
  426. data/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
  427. data/test/fixtures/test/action_talk_to_layout.erb +0 -2
  428. data/test/fixtures/test/array_translation.erb +0 -1
  429. data/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
  430. data/test/fixtures/test/capturing.erb +0 -4
  431. data/test/fixtures/test/content_for.erb +0 -2
  432. data/test/fixtures/test/content_for_concatenated.erb +0 -3
  433. data/test/fixtures/test/content_for_with_parameter.erb +0 -2
  434. data/test/fixtures/test/delete_with_js.rjs +0 -2
  435. data/test/fixtures/test/dont_pick_me +0 -1
  436. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
  437. data/test/fixtures/test/enum_rjs_test.rjs +0 -6
  438. data/test/fixtures/test/formatted_html_erb.html.erb +0 -1
  439. data/test/fixtures/test/formatted_xml_erb.builder +0 -1
  440. data/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
  441. data/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
  442. data/test/fixtures/test/greeting.erb +0 -1
  443. data/test/fixtures/test/greeting.js.rjs +0 -1
  444. data/test/fixtures/test/hello.builder +0 -4
  445. data/test/fixtures/test/hello_world.da.html.erb +0 -1
  446. data/test/fixtures/test/hello_world.erb +0 -1
  447. data/test/fixtures/test/hello_world.erb~ +0 -1
  448. data/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
  449. data/test/fixtures/test/hello_world_container.builder +0 -3
  450. data/test/fixtures/test/hello_world_from_rxml.builder +0 -4
  451. data/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
  452. data/test/fixtures/test/hello_xml_world.builder +0 -11
  453. data/test/fixtures/test/hyphen-ated.erb +0 -1
  454. data/test/fixtures/test/implicit_content_type.atom.builder +0 -2
  455. data/test/fixtures/test/list.erb +0 -1
  456. data/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
  457. data/test/fixtures/test/malformed/malformed.erb~ +0 -1
  458. data/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
  459. data/test/fixtures/test/nested_layout.erb +0 -3
  460. data/test/fixtures/test/non_erb_block_content_for.builder +0 -4
  461. data/test/fixtures/test/potential_conflicts.erb +0 -4
  462. data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
  463. data/test/fixtures/test/render_file_from_template.html.erb +0 -1
  464. data/test/fixtures/test/render_file_with_ivar.erb +0 -1
  465. data/test/fixtures/test/render_file_with_locals.erb +0 -1
  466. data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
  467. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
  468. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
  469. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
  470. data/test/fixtures/test/render_to_string_test.erb +0 -1
  471. data/test/fixtures/test/scoped_array_translation.erb +0 -1
  472. data/test/fixtures/test/sub_template_raise.html.erb +0 -1
  473. data/test/fixtures/test/template.erb +0 -1
  474. data/test/fixtures/test/translation.erb +0 -1
  475. data/test/fixtures/test/update_element_with_capture.erb +0 -9
  476. data/test/fixtures/test/using_layout_around_block.html.erb +0 -1
  477. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
  478. data/test/fixtures/test/utf8.html.erb +0 -4
  479. data/test/fixtures/test/utf8_magic.html.erb +0 -5
  480. data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
  481. data/test/fixtures/topic.rb +0 -3
  482. data/test/fixtures/topics.yml +0 -22
  483. data/test/fixtures/topics/_topic.html.erb +0 -1
  484. data/test/template/active_record_helper_i18n_test.rb +0 -51
  485. data/test/template/active_record_helper_test.rb +0 -302
  486. data/test/template/asset_tag_helper_test.rb +0 -770
  487. data/test/template/atom_feed_helper_test.rb +0 -315
  488. data/test/template/benchmark_helper_test.rb +0 -86
  489. data/test/template/compiled_templates_test.rb +0 -204
  490. data/test/template/date_helper_i18n_test.rb +0 -121
  491. data/test/template/date_helper_test.rb +0 -2603
  492. data/test/template/erb_util_test.rb +0 -36
  493. data/test/template/form_helper_test.rb +0 -1447
  494. data/test/template/form_options_helper_i18n_test.rb +0 -27
  495. data/test/template/form_options_helper_test.rb +0 -811
  496. data/test/template/form_tag_helper_test.rb +0 -356
  497. data/test/template/javascript_helper_test.rb +0 -106
  498. data/test/template/number_helper_i18n_test.rb +0 -69
  499. data/test/template/number_helper_test.rb +0 -132
  500. data/test/template/prototype_helper_test.rb +0 -639
  501. data/test/template/raw_output_helper_test.rb +0 -21
  502. data/test/template/record_tag_helper_test.rb +0 -58
  503. data/test/template/render_test.rb +0 -329
  504. data/test/template/sanitize_helper_test.rb +0 -57
  505. data/test/template/scriptaculous_helper_test.rb +0 -90
  506. data/test/template/tag_helper_test.rb +0 -98
  507. data/test/template/template_test.rb +0 -32
  508. data/test/template/test_test.rb +0 -54
  509. data/test/template/text_helper_test.rb +0 -601
  510. data/test/template/translation_helper_test.rb +0 -95
  511. data/test/template/url_helper_test.rb +0 -641
  512. data/test/testing_sandbox.rb +0 -15
  513. data/test/view/test_case_test.rb +0 -176
@@ -1,215 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- # The view_paths array must be set on Base and not LayoutTest so that LayoutTest's inherited
4
- # method has access to the view_paths array when looking for a layout to automatically assign.
5
- old_load_paths = ActionController::Base.view_paths
6
-
7
- ActionView::Template::register_template_handler :mab,
8
- lambda { |template| template.source.inspect }
9
-
10
- ActionController::Base.view_paths = [ File.dirname(__FILE__) + '/../fixtures/layout_tests/' ]
11
-
12
- class LayoutTest < ActionController::Base
13
- def self.controller_path; 'views' end
14
- self.view_paths = ActionController::Base.view_paths.dup
15
- end
16
-
17
- # Restore view_paths to previous value
18
- ActionController::Base.view_paths = old_load_paths
19
-
20
- class ProductController < LayoutTest
21
- end
22
-
23
- class ItemController < LayoutTest
24
- end
25
-
26
- class ThirdPartyTemplateLibraryController < LayoutTest
27
- end
28
-
29
- module ControllerNameSpace
30
- end
31
-
32
- class ControllerNameSpace::NestedController < LayoutTest
33
- end
34
-
35
- class MultipleExtensions < LayoutTest
36
- end
37
-
38
- class LayoutAutoDiscoveryTest < ActionController::TestCase
39
- def setup
40
- @request.host = "www.nextangle.com"
41
- end
42
-
43
- def test_application_layout_is_default_when_no_controller_match
44
- @controller = ProductController.new
45
- get :hello
46
- assert_equal 'layout_test.rhtml hello.rhtml', @response.body
47
- end
48
-
49
- def test_controller_name_layout_name_match
50
- @controller = ItemController.new
51
- get :hello
52
- assert_equal 'item.rhtml hello.rhtml', @response.body
53
- end
54
-
55
- def test_third_party_template_library_auto_discovers_layout
56
- @controller = ThirdPartyTemplateLibraryController.new
57
- get :hello
58
- assert_equal 'layouts/third_party_template_library.mab', @controller.active_layout.to_s
59
- assert_equal 'layouts/third_party_template_library', @response.layout
60
- assert_response :success
61
- assert_equal 'Mab', @response.body
62
- end
63
-
64
- def test_namespaced_controllers_auto_detect_layouts
65
- @controller = ControllerNameSpace::NestedController.new
66
- get :hello
67
- assert_equal 'layouts/controller_name_space/nested', @controller.active_layout.to_s
68
- assert_equal 'controller_name_space/nested.rhtml hello.rhtml', @response.body
69
- end
70
-
71
- def test_namespaced_controllers_auto_detect_layouts
72
- @controller = MultipleExtensions.new
73
- get :hello
74
- assert_equal 'layouts/multiple_extensions.html.erb', @controller.active_layout.to_s
75
- assert_equal 'multiple_extensions.html.erb hello.rhtml', @response.body.strip
76
- end
77
- end
78
-
79
- class DefaultLayoutController < LayoutTest
80
- end
81
-
82
- class AbsolutePathLayoutController < LayoutTest
83
- layout File.expand_path(File.expand_path(__FILE__) + '/../../fixtures/layout_tests/layouts/layout_test.rhtml')
84
- end
85
-
86
- class AbsolutePathWithoutLayoutsController < LayoutTest
87
- # Absolute layout path without 'layouts' in it.
88
- layout File.expand_path(File.expand_path(__FILE__) + '/../../fixtures/layout_tests/abs_path_layout.rhtml')
89
- end
90
-
91
- class HasOwnLayoutController < LayoutTest
92
- layout 'item'
93
- end
94
-
95
- class PrependsViewPathController < LayoutTest
96
- def hello
97
- prepend_view_path File.dirname(__FILE__) + '/../fixtures/layout_tests/alt/'
98
- render :layout => 'alt'
99
- end
100
- end
101
-
102
- class SetsLayoutInRenderController < LayoutTest
103
- def hello
104
- render :layout => 'third_party_template_library'
105
- end
106
- end
107
-
108
- class RendersNoLayoutController < LayoutTest
109
- def hello
110
- render :layout => false
111
- end
112
- end
113
-
114
- class LayoutSetInResponseTest < ActionController::TestCase
115
- def test_layout_set_when_using_default_layout
116
- @controller = DefaultLayoutController.new
117
- get :hello
118
- assert_equal 'layouts/layout_test', @response.layout
119
- end
120
-
121
- def test_layout_set_when_set_in_controller
122
- @controller = HasOwnLayoutController.new
123
- get :hello
124
- assert_equal 'layouts/item', @response.layout
125
- end
126
-
127
- def test_layout_set_when_using_render
128
- @controller = SetsLayoutInRenderController.new
129
- get :hello
130
- assert_equal 'layouts/third_party_template_library', @response.layout
131
- end
132
-
133
- def test_layout_is_not_set_when_none_rendered
134
- @controller = RendersNoLayoutController.new
135
- get :hello
136
- assert_nil @response.layout
137
- end
138
-
139
- def test_exempt_from_layout_honored_by_render_template
140
- ActionController::Base.exempt_from_layout :rhtml
141
- @controller = RenderWithTemplateOptionController.new
142
-
143
- get :hello
144
- assert_equal "alt/hello.rhtml", @response.body.strip
145
-
146
- ensure
147
- ActionController::Base.exempt_from_layout.delete(/\.rhtml$/)
148
- end
149
-
150
- def test_layout_is_picked_from_the_controller_instances_view_path
151
- @controller = PrependsViewPathController.new
152
- get :hello
153
- assert_equal 'layouts/alt', @response.layout
154
- end
155
-
156
- def test_absolute_pathed_layout
157
- @controller = AbsolutePathLayoutController.new
158
- get :hello
159
- assert_equal "layout_test.rhtml hello.rhtml", @response.body.strip
160
- end
161
-
162
- def test_absolute_pathed_layout_without_layouts_in_path
163
- @controller = AbsolutePathWithoutLayoutsController.new
164
- get :hello
165
- assert_equal "abs_path_layout.rhtml hello.rhtml", @response.body.strip
166
- end
167
- end
168
-
169
- class RenderWithTemplateOptionController < LayoutTest
170
- def hello
171
- render :template => 'alt/hello'
172
- end
173
- end
174
-
175
- class SetsNonExistentLayoutFile < LayoutTest
176
- layout "nofile.rhtml"
177
- end
178
-
179
- class LayoutExceptionRaised < ActionController::TestCase
180
- def test_exception_raised_when_layout_file_not_found
181
- @controller = SetsNonExistentLayoutFile.new
182
- get :hello
183
- assert_kind_of ActionView::MissingTemplate, @response.template.instance_eval { @exception }
184
- end
185
- end
186
-
187
- class LayoutStatusIsRendered < LayoutTest
188
- def hello
189
- render :status => 401
190
- end
191
- end
192
-
193
- class LayoutStatusIsRenderedTest < ActionController::TestCase
194
- def test_layout_status_is_rendered
195
- @controller = LayoutStatusIsRendered.new
196
- get :hello
197
- assert_response 401
198
- end
199
- end
200
-
201
- unless RUBY_PLATFORM =~ /(:?mswin|mingw|bccwin)/
202
- class LayoutSymlinkedTest < LayoutTest
203
- layout "symlinked/symlinked_layout"
204
- end
205
-
206
- class LayoutSymlinkedIsRenderedTest < ActionController::TestCase
207
- def test_symlinked_layout_is_rendered
208
- @controller = LayoutSymlinkedTest.new
209
- get :hello
210
- assert_response 200
211
- assert_equal "layouts/symlinked/symlinked_layout", @response.layout
212
- end
213
- end
214
- end
215
-
@@ -1,24 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class LocalizedController < ActionController::Base
4
- def hello_world
5
- end
6
- end
7
-
8
- class LocalizedTemplatesTest < ActionController::TestCase
9
- tests LocalizedController
10
-
11
- teardown { I18n.locale = :en }
12
-
13
- def test_localized_template_is_used
14
- I18n.locale = :de
15
- get :hello_world
16
- assert_equal "Gutten Tag", @response.body
17
- end
18
-
19
- def test_default_locale_template_is_used_when_locale_is_missing
20
- I18n.locale = :dk
21
- get :hello_world
22
- assert_equal "Hello World", @response.body
23
- end
24
- end
@@ -1,46 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class LoggingController < ActionController::Base
4
- def show
5
- render :nothing => true
6
- end
7
- end
8
-
9
- class LoggingTest < ActionController::TestCase
10
- tests LoggingController
11
-
12
- class MockLogger
13
- attr_reader :logged
14
-
15
- def method_missing(method, *args)
16
- @logged ||= []
17
- @logged << args.first
18
- end
19
- end
20
-
21
- setup :set_logger
22
-
23
- def test_logging_without_parameters
24
- get :show
25
- assert_equal 2, logs.size
26
- assert_nil logs.detect {|l| l =~ /Parameters/ }
27
- end
28
-
29
- def test_logging_with_parameters
30
- get :show, :id => 10
31
- assert_equal 3, logs.size
32
-
33
- params = logs.detect {|l| l =~ /Parameters/ }
34
- assert_equal 'Parameters: {"id"=>"10"}', params
35
- end
36
-
37
- private
38
-
39
- def set_logger
40
- @controller.logger = MockLogger.new
41
- end
42
-
43
- def logs
44
- @logs ||= @controller.logger.logged.compact.map {|l| l.strip}
45
- end
46
- end
@@ -1,90 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class MiddlewareStackTest < ActiveSupport::TestCase
4
- class FooMiddleware; end
5
- class BarMiddleware; end
6
- class BazMiddleware; end
7
-
8
- def setup
9
- @stack = ActionController::MiddlewareStack.new
10
- @stack.use FooMiddleware
11
- @stack.use BarMiddleware
12
- end
13
-
14
- test "use should push middleware as class onto the stack" do
15
- assert_difference "@stack.size" do
16
- @stack.use BazMiddleware
17
- end
18
- assert_equal BazMiddleware, @stack.last.klass
19
- end
20
-
21
- test "use should push middleware as a string onto the stack" do
22
- assert_difference "@stack.size" do
23
- @stack.use "MiddlewareStackTest::BazMiddleware"
24
- end
25
- assert_equal BazMiddleware, @stack.last.klass
26
- end
27
-
28
- test "use should push middleware as a symbol onto the stack" do
29
- assert_difference "@stack.size" do
30
- @stack.use :"MiddlewareStackTest::BazMiddleware"
31
- end
32
- assert_equal BazMiddleware, @stack.last.klass
33
- end
34
-
35
- test "use should push middleware class with arguments onto the stack" do
36
- assert_difference "@stack.size" do
37
- @stack.use BazMiddleware, true, :foo => "bar"
38
- end
39
- assert_equal BazMiddleware, @stack.last.klass
40
- assert_equal([true, {:foo => "bar"}], @stack.last.args)
41
- end
42
-
43
- test "insert inserts middleware at the integer index" do
44
- @stack.insert(1, BazMiddleware)
45
- assert_equal BazMiddleware, @stack[1].klass
46
- end
47
-
48
- test "insert_after inserts middleware after the integer index" do
49
- @stack.insert_after(1, BazMiddleware)
50
- assert_equal BazMiddleware, @stack[2].klass
51
- end
52
-
53
- test "insert_before inserts middleware before another middleware class" do
54
- @stack.insert_before(BarMiddleware, BazMiddleware)
55
- assert_equal BazMiddleware, @stack[1].klass
56
- end
57
-
58
- test "insert_after inserts middleware after another middleware class" do
59
- @stack.insert_after(BarMiddleware, BazMiddleware)
60
- assert_equal BazMiddleware, @stack[2].klass
61
- end
62
-
63
- test "swaps one middleware out for another" do
64
- assert_equal FooMiddleware, @stack[0].klass
65
- @stack.swap(FooMiddleware, BazMiddleware)
66
- assert_equal BazMiddleware, @stack[0].klass
67
- end
68
-
69
- test "active returns all only enabled middleware" do
70
- assert_no_difference "@stack.active.size" do
71
- assert_difference "@stack.size" do
72
- @stack.use BazMiddleware, :if => lambda { false }
73
- end
74
- end
75
- end
76
-
77
- test "lazy evaluates middleware class" do
78
- assert_difference "@stack.size" do
79
- @stack.use lambda { BazMiddleware }
80
- end
81
- assert_equal BazMiddleware, @stack.last.klass
82
- end
83
-
84
- test "lazy evaluates middleware arguments" do
85
- assert_difference "@stack.size" do
86
- @stack.use BazMiddleware, lambda { :foo }
87
- end
88
- assert_equal [:foo], @stack.last.send(:build_args)
89
- end
90
- end
@@ -1,536 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class RespondToController < ActionController::Base
4
- layout :set_layout
5
-
6
- def html_xml_or_rss
7
- respond_to do |type|
8
- type.html { render :text => "HTML" }
9
- type.xml { render :text => "XML" }
10
- type.rss { render :text => "RSS" }
11
- type.all { render :text => "Nothing" }
12
- end
13
- end
14
-
15
- def js_or_html
16
- respond_to do |type|
17
- type.html { render :text => "HTML" }
18
- type.js { render :text => "JS" }
19
- type.all { render :text => "Nothing" }
20
- end
21
- end
22
-
23
- def json_or_yaml
24
- respond_to do |type|
25
- type.json { render :text => "JSON" }
26
- type.yaml { render :text => "YAML" }
27
- end
28
- end
29
-
30
- def html_or_xml
31
- respond_to do |type|
32
- type.html { render :text => "HTML" }
33
- type.xml { render :text => "XML" }
34
- type.all { render :text => "Nothing" }
35
- end
36
- end
37
-
38
- def forced_xml
39
- request.format = :xml
40
-
41
- respond_to do |type|
42
- type.html { render :text => "HTML" }
43
- type.xml { render :text => "XML" }
44
- end
45
- end
46
-
47
- def just_xml
48
- respond_to do |type|
49
- type.xml { render :text => "XML" }
50
- end
51
- end
52
-
53
- def using_defaults
54
- respond_to do |type|
55
- type.html
56
- type.js
57
- type.xml
58
- end
59
- end
60
-
61
- def using_defaults_with_type_list
62
- respond_to(:html, :js, :xml)
63
- end
64
-
65
- def made_for_content_type
66
- respond_to do |type|
67
- type.rss { render :text => "RSS" }
68
- type.atom { render :text => "ATOM" }
69
- type.all { render :text => "Nothing" }
70
- end
71
- end
72
-
73
- def custom_type_handling
74
- respond_to do |type|
75
- type.html { render :text => "HTML" }
76
- type.custom("application/crazy-xml") { render :text => "Crazy XML" }
77
- type.all { render :text => "Nothing" }
78
- end
79
- end
80
-
81
- def custom_constant_handling
82
- Mime::Type.register("text/x-mobile", :mobile)
83
-
84
- respond_to do |type|
85
- type.html { render :text => "HTML" }
86
- type.mobile { render :text => "Mobile" }
87
- end
88
- ensure
89
- Mime.module_eval { remove_const :MOBILE if const_defined?(:MOBILE) }
90
- end
91
-
92
- def custom_constant_handling_without_block
93
- Mime::Type.register("text/x-mobile", :mobile)
94
-
95
- respond_to do |type|
96
- type.html { render :text => "HTML" }
97
- type.mobile
98
- end
99
-
100
- ensure
101
- Mime.module_eval { remove_const :MOBILE if const_defined?(:MOBILE) }
102
- end
103
-
104
- def handle_any
105
- respond_to do |type|
106
- type.html { render :text => "HTML" }
107
- type.any(:js, :xml) { render :text => "Either JS or XML" }
108
- end
109
- end
110
-
111
- def handle_any_any
112
- respond_to do |type|
113
- type.html { render :text => 'HTML' }
114
- type.any { render :text => 'Whatever you ask for, I got it' }
115
- end
116
- end
117
-
118
- def all_types_with_layout
119
- respond_to do |type|
120
- type.html
121
- type.js
122
- end
123
- end
124
-
125
- def iphone_with_html_response_type
126
- Mime::Type.register_alias("text/html", :iphone)
127
- request.format = :iphone if request.env["HTTP_ACCEPT"] == "text/iphone"
128
-
129
- respond_to do |type|
130
- type.html { @type = "Firefox" }
131
- type.iphone { @type = "iPhone" }
132
- end
133
-
134
- ensure
135
- Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
136
- end
137
-
138
- def iphone_with_html_response_type_without_layout
139
- Mime::Type.register_alias("text/html", :iphone)
140
- request.format = "iphone" if request.env["HTTP_ACCEPT"] == "text/iphone"
141
-
142
- respond_to do |type|
143
- type.html { @type = "Firefox"; render :action => "iphone_with_html_response_type" }
144
- type.iphone { @type = "iPhone" ; render :action => "iphone_with_html_response_type" }
145
- end
146
-
147
- ensure
148
- Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
149
- end
150
-
151
- def rescue_action(e)
152
- raise
153
- end
154
-
155
- protected
156
- def set_layout
157
- if ["all_types_with_layout", "iphone_with_html_response_type"].include?(action_name)
158
- "respond_to/layouts/standard"
159
- elsif action_name == "iphone_with_html_response_type_without_layout"
160
- "respond_to/layouts/missing"
161
- end
162
- end
163
- end
164
-
165
- class MimeControllerTest < ActionController::TestCase
166
- tests RespondToController
167
-
168
- def setup
169
- ActionController::Base.use_accept_header = true
170
- @request.host = "www.example.com"
171
- end
172
-
173
- def teardown
174
- ActionController::Base.use_accept_header = false
175
- end
176
-
177
- def test_html
178
- @request.accept = "text/html"
179
- get :js_or_html
180
- assert_equal 'HTML', @response.body
181
-
182
- get :html_or_xml
183
- assert_equal 'HTML', @response.body
184
-
185
- get :just_xml
186
- assert_response 406
187
- end
188
-
189
- def test_all
190
- @request.accept = "*/*"
191
- get :js_or_html
192
- assert_equal 'HTML', @response.body # js is not part of all
193
-
194
- get :html_or_xml
195
- assert_equal 'HTML', @response.body
196
-
197
- get :just_xml
198
- assert_equal 'XML', @response.body
199
- end
200
-
201
- def test_xml
202
- @request.accept = "application/xml"
203
- get :html_xml_or_rss
204
- assert_equal 'XML', @response.body
205
- end
206
-
207
- def test_js_or_html
208
- @request.accept = "text/javascript, text/html"
209
- get :js_or_html
210
- assert_equal 'JS', @response.body
211
-
212
- get :html_or_xml
213
- assert_equal 'HTML', @response.body
214
-
215
- get :just_xml
216
- assert_response 406
217
- end
218
-
219
- def test_json_or_yaml
220
- get :json_or_yaml
221
- assert_equal 'JSON', @response.body
222
-
223
- get :json_or_yaml, :format => 'json'
224
- assert_equal 'JSON', @response.body
225
-
226
- get :json_or_yaml, :format => 'yaml'
227
- assert_equal 'YAML', @response.body
228
-
229
- { 'YAML' => %w(text/yaml),
230
- 'JSON' => %w(application/json text/x-json)
231
- }.each do |body, content_types|
232
- content_types.each do |content_type|
233
- @request.accept = content_type
234
- get :json_or_yaml
235
- assert_equal body, @response.body
236
- end
237
- end
238
- end
239
-
240
- def test_js_or_anything
241
- @request.accept = "text/javascript, */*"
242
- get :js_or_html
243
- assert_equal 'JS', @response.body
244
-
245
- get :html_or_xml
246
- assert_equal 'HTML', @response.body
247
-
248
- get :just_xml
249
- assert_equal 'XML', @response.body
250
- end
251
-
252
- def test_using_defaults
253
- @request.accept = "*/*"
254
- get :using_defaults
255
- assert_equal "text/html", @response.content_type
256
- assert_equal 'Hello world!', @response.body
257
-
258
- @request.accept = "text/javascript"
259
- get :using_defaults
260
- assert_equal "text/javascript", @response.content_type
261
- assert_equal '$("body").visualEffect("highlight");', @response.body
262
-
263
- @request.accept = "application/xml"
264
- get :using_defaults
265
- assert_equal "application/xml", @response.content_type
266
- assert_equal "<p>Hello world!</p>\n", @response.body
267
- end
268
-
269
- def test_using_defaults_with_type_list
270
- @request.accept = "*/*"
271
- get :using_defaults_with_type_list
272
- assert_equal "text/html", @response.content_type
273
- assert_equal 'Hello world!', @response.body
274
-
275
- @request.accept = "text/javascript"
276
- get :using_defaults_with_type_list
277
- assert_equal "text/javascript", @response.content_type
278
- assert_equal '$("body").visualEffect("highlight");', @response.body
279
-
280
- @request.accept = "application/xml"
281
- get :using_defaults_with_type_list
282
- assert_equal "application/xml", @response.content_type
283
- assert_equal "<p>Hello world!</p>\n", @response.body
284
- end
285
-
286
- def test_with_atom_content_type
287
- @request.env["CONTENT_TYPE"] = "application/atom+xml"
288
- get :made_for_content_type
289
- assert_equal "ATOM", @response.body
290
- end
291
-
292
- def test_with_rss_content_type
293
- @request.env["CONTENT_TYPE"] = "application/rss+xml"
294
- get :made_for_content_type
295
- assert_equal "RSS", @response.body
296
- end
297
-
298
- def test_synonyms
299
- @request.accept = "application/javascript"
300
- get :js_or_html
301
- assert_equal 'JS', @response.body
302
-
303
- @request.accept = "application/x-xml"
304
- get :html_xml_or_rss
305
- assert_equal "XML", @response.body
306
- end
307
-
308
- def test_custom_types
309
- @request.accept = "application/crazy-xml"
310
- get :custom_type_handling
311
- assert_equal "application/crazy-xml", @response.content_type
312
- assert_equal 'Crazy XML', @response.body
313
-
314
- @request.accept = "text/html"
315
- get :custom_type_handling
316
- assert_equal "text/html", @response.content_type
317
- assert_equal 'HTML', @response.body
318
- end
319
-
320
- def test_xhtml_alias
321
- @request.accept = "application/xhtml+xml,application/xml"
322
- get :html_or_xml
323
- assert_equal 'HTML', @response.body
324
- end
325
-
326
- def test_firefox_simulation
327
- @request.accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
328
- get :html_or_xml
329
- assert_equal 'HTML', @response.body
330
- end
331
-
332
- def test_handle_any
333
- @request.accept = "*/*"
334
- get :handle_any
335
- assert_equal 'HTML', @response.body
336
-
337
- @request.accept = "text/javascript"
338
- get :handle_any
339
- assert_equal 'Either JS or XML', @response.body
340
-
341
- @request.accept = "text/xml"
342
- get :handle_any
343
- assert_equal 'Either JS or XML', @response.body
344
- end
345
-
346
- def test_handle_any_any
347
- @request.accept = "*/*"
348
- get :handle_any_any
349
- assert_equal 'HTML', @response.body
350
- end
351
-
352
- def test_handle_any_any_parameter_format
353
- get :handle_any_any, {:format=>'html'}
354
- assert_equal 'HTML', @response.body
355
- end
356
-
357
- def test_handle_any_any_explicit_html
358
- @request.accept = "text/html"
359
- get :handle_any_any
360
- assert_equal 'HTML', @response.body
361
- end
362
-
363
- def test_handle_any_any_javascript
364
- @request.accept = "text/javascript"
365
- get :handle_any_any
366
- assert_equal 'Whatever you ask for, I got it', @response.body
367
- end
368
-
369
- def test_handle_any_any_xml
370
- @request.accept = "text/xml"
371
- get :handle_any_any
372
- assert_equal 'Whatever you ask for, I got it', @response.body
373
- end
374
-
375
- def test_rjs_type_skips_layout
376
- @request.accept = "text/javascript"
377
- get :all_types_with_layout
378
- assert_equal 'RJS for all_types_with_layout', @response.body
379
- end
380
-
381
- def test_html_type_with_layout
382
- @request.accept = "text/html"
383
- get :all_types_with_layout
384
- assert_equal '<html><div id="html">HTML for all_types_with_layout</div></html>', @response.body
385
- end
386
-
387
- def test_xhr
388
- xhr :get, :js_or_html
389
- assert_equal 'JS', @response.body
390
-
391
- xhr :get, :using_defaults
392
- assert_equal '$("body").visualEffect("highlight");', @response.body
393
- end
394
-
395
- def test_custom_constant
396
- get :custom_constant_handling, :format => "mobile"
397
- assert_equal "text/x-mobile", @response.content_type
398
- assert_equal "Mobile", @response.body
399
- end
400
-
401
- def test_custom_constant_handling_without_block
402
- get :custom_constant_handling_without_block, :format => "mobile"
403
- assert_equal "text/x-mobile", @response.content_type
404
- assert_equal "Mobile", @response.body
405
- end
406
-
407
- def test_forced_format
408
- get :html_xml_or_rss
409
- assert_equal "HTML", @response.body
410
-
411
- get :html_xml_or_rss, :format => "html"
412
- assert_equal "HTML", @response.body
413
-
414
- get :html_xml_or_rss, :format => "xml"
415
- assert_equal "XML", @response.body
416
-
417
- get :html_xml_or_rss, :format => "rss"
418
- assert_equal "RSS", @response.body
419
- end
420
-
421
- def test_internally_forced_format
422
- get :forced_xml
423
- assert_equal "XML", @response.body
424
-
425
- get :forced_xml, :format => "html"
426
- assert_equal "XML", @response.body
427
- end
428
-
429
- def test_extension_synonyms
430
- get :html_xml_or_rss, :format => "xhtml"
431
- assert_equal "HTML", @response.body
432
- end
433
-
434
- def test_render_action_for_html
435
- @controller.instance_eval do
436
- def render(*args)
437
- unless args.empty?
438
- @action = args.first[:action]
439
- end
440
- response.body = "#{@action} - #{@template.template_format}"
441
- end
442
- end
443
-
444
- get :using_defaults
445
- assert_equal "using_defaults - html", @response.body
446
-
447
- get :using_defaults, :format => "xml"
448
- assert_equal "using_defaults - xml", @response.body
449
- end
450
-
451
- def test_format_with_custom_response_type
452
- get :iphone_with_html_response_type
453
- assert_equal '<html><div id="html">Hello future from Firefox!</div></html>', @response.body
454
-
455
- get :iphone_with_html_response_type, :format => "iphone"
456
- assert_equal "text/html", @response.content_type
457
- assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body
458
- end
459
-
460
- def test_format_with_custom_response_type_and_request_headers
461
- @request.accept = "text/iphone"
462
- get :iphone_with_html_response_type
463
- assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body
464
- assert_equal "text/html", @response.content_type
465
- end
466
-
467
- def test_format_with_custom_response_type_and_request_headers_with_only_one_layout_present
468
- get :iphone_with_html_response_type_without_layout
469
- assert_equal '<html><div id="html_missing">Hello future from Firefox!</div></html>', @response.body
470
-
471
- @request.accept = "text/iphone"
472
- assert_raise(ActionView::MissingTemplate) { get :iphone_with_html_response_type_without_layout }
473
- end
474
- end
475
-
476
- class AbstractPostController < ActionController::Base
477
- self.view_paths = File.dirname(__FILE__) + "/../fixtures/post_test/"
478
- end
479
-
480
- # For testing layouts which are set automatically
481
- class PostController < AbstractPostController
482
- around_filter :with_iphone
483
-
484
- def index
485
- respond_to do |type|
486
- type.html
487
- type.iphone
488
- end
489
- end
490
-
491
- protected
492
- def with_iphone
493
- Mime::Type.register_alias("text/html", :iphone)
494
- request.format = "iphone" if request.env["HTTP_ACCEPT"] == "text/iphone"
495
- yield
496
- ensure
497
- Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
498
- end
499
- end
500
-
501
- class SuperPostController < PostController
502
- def index
503
- respond_to do |type|
504
- type.html
505
- type.iphone
506
- end
507
- end
508
- end
509
-
510
- class MimeControllerLayoutsTest < ActionController::TestCase
511
- tests PostController
512
-
513
- def setup
514
- @request.host = "www.example.com"
515
- end
516
-
517
- def test_missing_layout_renders_properly
518
- get :index
519
- assert_equal '<html><div id="html">Hello Firefox</div></html>', @response.body
520
-
521
- @request.accept = "text/iphone"
522
- get :index
523
- assert_equal 'Hello iPhone', @response.body
524
- end
525
-
526
- def test_format_with_inherited_layouts
527
- @controller = SuperPostController.new
528
-
529
- get :index
530
- assert_equal 'Super Firefox', @response.body
531
-
532
- @request.accept = "text/iphone"
533
- get :index
534
- assert_equal '<html><div id="super_iphone">Super iPhone</div></html>', @response.body
535
- end
536
- end