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,315 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at)
4
-
5
- class ScrollsController < ActionController::Base
6
- FEEDS = {}
7
- FEEDS["defaults"] = <<-EOT
8
- atom_feed(:schema_date => '2008') do |feed|
9
- feed.title("My great blog!")
10
- feed.updated((@scrolls.first.created_at))
11
-
12
- for scroll in @scrolls
13
- feed.entry(scroll) do |entry|
14
- entry.title(scroll.title)
15
- entry.content(scroll.body, :type => 'html')
16
-
17
- entry.author do |author|
18
- author.name("DHH")
19
- end
20
- end
21
- end
22
- end
23
- EOT
24
- FEEDS["entry_options"] = <<-EOT
25
- atom_feed do |feed|
26
- feed.title("My great blog!")
27
- feed.updated((@scrolls.first.created_at))
28
-
29
- for scroll in @scrolls
30
- feed.entry(scroll, :url => "/otherstuff/" + scroll.to_param, :updated => Time.utc(2007, 1, scroll.id)) do |entry|
31
- entry.title(scroll.title)
32
- entry.content(scroll.body, :type => 'html')
33
-
34
- entry.author do |author|
35
- author.name("DHH")
36
- end
37
- end
38
- end
39
- end
40
- EOT
41
- FEEDS["xml_block"] = <<-EOT
42
- atom_feed do |feed|
43
- feed.title("My great blog!")
44
- feed.updated((@scrolls.first.created_at))
45
-
46
- feed.author do |author|
47
- author.name("DHH")
48
- end
49
-
50
- for scroll in @scrolls
51
- feed.entry(scroll, :url => "/otherstuff/" + scroll.to_param, :updated => Time.utc(2007, 1, scroll.id)) do |entry|
52
- entry.title(scroll.title)
53
- entry.content(scroll.body, :type => 'html')
54
- end
55
- end
56
- end
57
- EOT
58
- FEEDS["feed_with_atomPub_namespace"] = <<-EOT
59
- atom_feed({'xmlns:app' => 'http://www.w3.org/2007/app',
60
- 'xmlns:openSearch' => 'http://a9.com/-/spec/opensearch/1.1/'}) do |feed|
61
- feed.title("My great blog!")
62
- feed.updated((@scrolls.first.created_at))
63
-
64
- for scroll in @scrolls
65
- feed.entry(scroll) do |entry|
66
- entry.title(scroll.title)
67
- entry.content(scroll.body, :type => 'html')
68
- entry.tag!('app:edited', Time.now)
69
-
70
- entry.author do |author|
71
- author.name("DHH")
72
- end
73
- end
74
- end
75
- end
76
- EOT
77
- FEEDS["feed_with_overridden_ids"] = <<-EOT
78
- atom_feed({:id => 'tag:test.rubyonrails.org,2008:test/'}) do |feed|
79
- feed.title("My great blog!")
80
- feed.updated((@scrolls.first.created_at))
81
-
82
- for scroll in @scrolls
83
- feed.entry(scroll, :id => "tag:test.rubyonrails.org,2008:"+scroll.id.to_s) do |entry|
84
- entry.title(scroll.title)
85
- entry.content(scroll.body, :type => 'html')
86
- entry.tag!('app:edited', Time.now)
87
-
88
- entry.author do |author|
89
- author.name("DHH")
90
- end
91
- end
92
- end
93
- end
94
- EOT
95
- FEEDS["feed_with_xml_processing_instructions"] = <<-EOT
96
- atom_feed(:schema_date => '2008',
97
- :instruct => {'xml-stylesheet' => { :href=> 't.css', :type => 'text/css' }}) do |feed|
98
- feed.title("My great blog!")
99
- feed.updated((@scrolls.first.created_at))
100
-
101
- for scroll in @scrolls
102
- feed.entry(scroll) do |entry|
103
- entry.title(scroll.title)
104
- entry.content(scroll.body, :type => 'html')
105
-
106
- entry.author do |author|
107
- author.name("DHH")
108
- end
109
- end
110
- end
111
- end
112
- EOT
113
- FEEDS["feed_with_xml_processing_instructions_duplicate_targets"] = <<-EOT
114
- atom_feed(:schema_date => '2008',
115
- :instruct => {'target1' => [{ :a => '1', :b => '2' }, { :c => '3', :d => '4' }]}) do |feed|
116
- feed.title("My great blog!")
117
- feed.updated((@scrolls.first.created_at))
118
-
119
- for scroll in @scrolls
120
- feed.entry(scroll) do |entry|
121
- entry.title(scroll.title)
122
- entry.content(scroll.body, :type => 'html')
123
-
124
- entry.author do |author|
125
- author.name("DHH")
126
- end
127
- end
128
- end
129
- end
130
- EOT
131
- FEEDS["feed_with_xhtml_content"] = <<-'EOT'
132
- atom_feed do |feed|
133
- feed.title("My great blog!")
134
- feed.updated((@scrolls.first.created_at))
135
-
136
- for scroll in @scrolls
137
- feed.entry(scroll) do |entry|
138
- entry.title(scroll.title)
139
- entry.summary(:type => 'xhtml') do |xhtml|
140
- xhtml.p "before #{scroll.id}"
141
- xhtml.p {xhtml << scroll.body}
142
- xhtml.p "after #{scroll.id}"
143
- end
144
- entry.tag!('app:edited', Time.now)
145
-
146
- entry.author do |author|
147
- author.name("DHH")
148
- end
149
- end
150
- end
151
- end
152
- EOT
153
- FEEDS["provide_builder"] = <<-'EOT'
154
- # we pass in the new_xml to the helper so it doesn't
155
- # call anything on the original builder
156
- new_xml = Builder::XmlMarkup.new(:target=>'')
157
- atom_feed(:xml => new_xml) do |feed|
158
- feed.title("My great blog!")
159
- feed.updated((@scrolls.first.created_at))
160
-
161
- for scroll in @scrolls
162
- feed.entry(scroll) do |entry|
163
- entry.title(scroll.title)
164
- entry.content(scroll.body, :type => 'html')
165
-
166
- entry.author do |author|
167
- author.name("DHH")
168
- end
169
- end
170
- end
171
- end
172
- EOT
173
- def index
174
- @scrolls = [
175
- Scroll.new(1, "1", "Hello One", "Something <i>COOL!</i>", Time.utc(2007, 12, 12, 15), Time.utc(2007, 12, 12, 15)),
176
- Scroll.new(2, "2", "Hello Two", "Something Boring", Time.utc(2007, 12, 12, 15)),
177
- ]
178
-
179
- render :inline => FEEDS[params[:id]], :type => :builder
180
- end
181
-
182
- protected
183
-
184
- def rescue_action(e)
185
- raise(e)
186
- end
187
- end
188
-
189
- class AtomFeedTest < ActionController::TestCase
190
- tests ScrollsController
191
-
192
- def setup
193
- @request.host = "www.nextangle.com"
194
- end
195
-
196
- def test_feed_should_use_default_language_if_none_is_given
197
- with_restful_routing(:scrolls) do
198
- get :index, :id => "defaults"
199
- assert_match %r{xml:lang="en-US"}, @response.body
200
- end
201
- end
202
-
203
- def test_feed_should_include_two_entries
204
- with_restful_routing(:scrolls) do
205
- get :index, :id => "defaults"
206
- assert_select "entry", 2
207
- end
208
- end
209
-
210
- def test_entry_should_only_use_published_if_created_at_is_present
211
- with_restful_routing(:scrolls) do
212
- get :index, :id => "defaults"
213
- assert_select "published", 1
214
- end
215
- end
216
-
217
- def test_providing_builder_to_atom_feed
218
- with_restful_routing(:scrolls) do
219
- get :index, :id=>"provide_builder"
220
- # because we pass in the non-default builder, the content generated by the
221
- # helper should go 'nowhere'. Leaving the response body blank.
222
- assert @response.body.blank?
223
- end
224
- end
225
-
226
- def test_entry_with_prefilled_options_should_use_those_instead_of_querying_the_record
227
- with_restful_routing(:scrolls) do
228
- get :index, :id => "entry_options"
229
-
230
- assert_select "updated", Time.utc(2007, 1, 1).xmlschema
231
- assert_select "updated", Time.utc(2007, 1, 2).xmlschema
232
- end
233
- end
234
-
235
- def test_self_url_should_default_to_current_request_url
236
- with_restful_routing(:scrolls) do
237
- get :index, :id => "defaults"
238
- assert_select "link[rel=self][href=http://www.nextangle.com/scrolls?id=defaults]"
239
- end
240
- end
241
-
242
- def test_feed_id_should_be_a_valid_tag
243
- with_restful_routing(:scrolls) do
244
- get :index, :id => "defaults"
245
- assert_select "id", :text => "tag:www.nextangle.com,2008:/scrolls?id=defaults"
246
- end
247
- end
248
-
249
- def test_entry_id_should_be_a_valid_tag
250
- with_restful_routing(:scrolls) do
251
- get :index, :id => "defaults"
252
- assert_select "entry id", :text => "tag:www.nextangle.com,2008:Scroll/1"
253
- assert_select "entry id", :text => "tag:www.nextangle.com,2008:Scroll/2"
254
- end
255
- end
256
-
257
- def test_feed_should_allow_nested_xml_blocks
258
- with_restful_routing(:scrolls) do
259
- get :index, :id => "xml_block"
260
- assert_select "author name", :text => "DHH"
261
- end
262
- end
263
-
264
- def test_feed_should_include_atomPub_namespace
265
- with_restful_routing(:scrolls) do
266
- get :index, :id => "feed_with_atomPub_namespace"
267
- assert_match %r{xml:lang="en-US"}, @response.body
268
- assert_match %r{xmlns="http://www.w3.org/2005/Atom"}, @response.body
269
- assert_match %r{xmlns:app="http://www.w3.org/2007/app"}, @response.body
270
- end
271
- end
272
-
273
- def test_feed_should_allow_overriding_ids
274
- with_restful_routing(:scrolls) do
275
- get :index, :id => "feed_with_overridden_ids"
276
- assert_select "id", :text => "tag:test.rubyonrails.org,2008:test/"
277
- assert_select "entry id", :text => "tag:test.rubyonrails.org,2008:1"
278
- assert_select "entry id", :text => "tag:test.rubyonrails.org,2008:2"
279
- end
280
- end
281
-
282
- def test_feed_xml_processing_instructions
283
- with_restful_routing(:scrolls) do
284
- get :index, :id => 'feed_with_xml_processing_instructions'
285
- assert_match %r{<\?xml-stylesheet [^\?]*type="text/css"}, @response.body
286
- assert_match %r{<\?xml-stylesheet [^\?]*href="t.css"}, @response.body
287
- end
288
- end
289
-
290
- def test_feed_xml_processing_instructions_duplicate_targets
291
- with_restful_routing(:scrolls) do
292
- get :index, :id => 'feed_with_xml_processing_instructions_duplicate_targets'
293
- assert_match %r{<\?target1 (a="1" b="2"|b="2" a="1")\?>}, @response.body
294
- assert_match %r{<\?target1 (c="3" d="4"|d="4" c="3")\?>}, @response.body
295
- end
296
- end
297
-
298
- def test_feed_xhtml
299
- with_restful_routing(:scrolls) do
300
- get :index, :id => "feed_with_xhtml_content"
301
- assert_match %r{xmlns="http://www.w3.org/1999/xhtml"}, @response.body
302
- assert_select "summary div p", :text => "Something Boring"
303
- assert_select "summary div p", :text => "after 2"
304
- end
305
- end
306
- private
307
- def with_restful_routing(resources)
308
- with_routing do |set|
309
- set.draw do |map|
310
- map.resources(resources)
311
- end
312
- yield
313
- end
314
- end
315
- end
@@ -1,86 +0,0 @@
1
- require 'abstract_unit'
2
- require 'action_view/helpers/benchmark_helper'
3
-
4
- class BenchmarkHelperTest < ActionView::TestCase
5
- tests ActionView::Helpers::BenchmarkHelper
6
-
7
- def setup
8
- super
9
- controller.logger = ActiveSupport::BufferedLogger.new(StringIO.new)
10
- controller.logger.auto_flushing = false
11
- end
12
-
13
- def teardown
14
- controller.logger.send(:clear_buffer)
15
- end
16
-
17
- def test_without_block
18
- assert_raise(LocalJumpError) { benchmark }
19
- assert buffer.empty?
20
- end
21
-
22
- def test_defaults
23
- i_was_run = false
24
- benchmark { i_was_run = true }
25
- assert i_was_run
26
- assert_last_logged
27
- end
28
-
29
- def test_with_message
30
- i_was_run = false
31
- benchmark('test_run') { i_was_run = true }
32
- assert i_was_run
33
- assert_last_logged 'test_run'
34
- end
35
-
36
- def test_with_message_and_deprecated_level
37
- i_was_run = false
38
-
39
- assert_deprecated do
40
- benchmark('debug_run', :debug) { i_was_run = true }
41
- end
42
-
43
- assert i_was_run
44
- assert_last_logged 'debug_run'
45
- end
46
-
47
- def test_within_level
48
- controller.logger.level = ActiveSupport::BufferedLogger::DEBUG
49
- benchmark('included_debug_run', :level => :debug) { }
50
- assert_last_logged 'included_debug_run'
51
- end
52
-
53
- def test_outside_level
54
- controller.logger.level = ActiveSupport::BufferedLogger::ERROR
55
- benchmark('skipped_debug_run', :level => :debug) { }
56
- assert_no_match(/skipped_debug_run/, buffer.last)
57
- ensure
58
- controller.logger.level = ActiveSupport::BufferedLogger::DEBUG
59
- end
60
-
61
- def test_without_silencing
62
- benchmark('debug_run', :silence => false) do
63
- controller.logger.info "not silenced!"
64
- end
65
-
66
- assert_equal 2, buffer.size
67
- end
68
-
69
- def test_with_silencing
70
- benchmark('debug_run', :silence => true) do
71
- controller.logger.info "silenced!"
72
- end
73
-
74
- assert_equal 1, buffer.size
75
- end
76
-
77
-
78
- private
79
- def buffer
80
- controller.logger.send(:buffer)
81
- end
82
-
83
- def assert_last_logged(message = 'Benchmarking')
84
- assert_match(/^#{message} \(.*\)$/, buffer.last)
85
- end
86
- end
@@ -1,204 +0,0 @@
1
- require 'abstract_unit'
2
- require 'controller/fake_models'
3
-
4
- class CompiledTemplatesTest < Test::Unit::TestCase
5
-
6
- def setup
7
- @explicit_view_paths = nil
8
- @compiled_templates = ActionView::Base::CompiledTemplates
9
- @compiled_templates.instance_methods.each do |m|
10
- @compiled_templates.send(:remove_method, m) if m =~ /^_run_/
11
- end
12
- end
13
-
14
- def test_template_gets_compiled
15
- with_caching(true) do
16
- assert_equal 0, @compiled_templates.instance_methods.size
17
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
18
- assert_equal 1, @compiled_templates.instance_methods.size
19
- end
20
- end
21
-
22
- def test_template_gets_recompiled_when_using_different_keys_in_local_assigns
23
- with_caching(true) do
24
- assert_equal 0, @compiled_templates.instance_methods.size
25
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
26
- assert_equal "Hello world!", render(:file => "test/hello_world.erb", :locals => {:foo => "bar"})
27
- assert_equal 2, @compiled_templates.instance_methods.size
28
- end
29
- end
30
-
31
- def test_compiled_template_will_not_be_recompiled_when_rendered_with_identical_local_assigns
32
- with_caching(true) do
33
- assert_equal 0, @compiled_templates.instance_methods.size
34
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
35
- ActionView::Template.any_instance.expects(:compile!).never
36
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
37
- end
38
- end
39
-
40
- def test_template_changes_are_not_reflected_with_cached_template_loading
41
- with_caching(true) do
42
- with_reloading(false) do
43
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
44
- modify_template "test/hello_world.erb", "Goodbye world!" do
45
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
46
- end
47
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
48
- end
49
- end
50
- end
51
-
52
- def test_template_changes_are_reflected_without_cached_template_loading
53
- with_caching(true) do
54
- with_reloading(true) do
55
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
56
- modify_template "test/hello_world.erb", "Goodbye world!" do
57
- assert_equal "Goodbye world!", render(:file => "test/hello_world.erb")
58
- end
59
- assert_equal "Hello world!", render(:file => "test/hello_world.erb")
60
- end
61
- end
62
- end
63
-
64
- def test_template_becomes_missing_if_deleted_without_cached_template_loading
65
- with_reloading(true) do
66
- assert_equal 'Hello world!', render(:file => 'test/hello_world.erb')
67
- delete_template 'test/hello_world.erb' do
68
- assert_raise(ActionView::MissingTemplate) { render(:file => 'test/hello_world.erb') }
69
- end
70
- assert_equal 'Hello world!', render(:file => 'test/hello_world.erb')
71
- end
72
- end
73
-
74
- def test_swapping_template_handler_is_working_without_cached_template_loading
75
- with_reloading(true) do
76
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
77
- delete_template 'test/hello_world.erb' do
78
- rename_template 'test/hello_world_from_rxml.builder', 'test/hello_world.builder' do
79
- assert_equal "<html>\n <p>Hello</p>\n</html>\n", render(:file => 'test/hello_world')
80
- end
81
- end
82
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
83
- end
84
- end
85
-
86
- def test_adding_localized_template_will_take_precedence_without_cached_template_loading
87
- with_reloading(true) do
88
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
89
- rename_template 'test/hello_world.da.html.erb', 'test/hello_world.en.html.erb' do
90
- assert_equal 'Hey verden', render(:file => 'test/hello_world')
91
- end
92
- end
93
- end
94
-
95
- def test_deleting_localized_template_will_fall_back_to_non_localized_template_without_cached_template_loading
96
- with_reloading(true) do
97
- rename_template 'test/hello_world.da.html.erb', 'test/hello_world.en.html.erb' do
98
- assert_equal 'Hey verden', render(:file => 'test/hello_world')
99
- delete_template 'test/hello_world.en.html.erb' do
100
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
101
- end
102
- assert_equal 'Hey verden', render(:file => 'test/hello_world')
103
- end
104
- end
105
- end
106
-
107
- def test_parallel_reloadable_view_paths_are_working
108
- with_reloading(true) do
109
- view_paths_copy = new_reloadable_view_paths
110
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
111
- with_view_paths(view_paths_copy, new_reloadable_view_paths) do
112
- assert_equal 'Hello world!', render(:file => 'test/hello_world')
113
- end
114
- modify_template 'test/hello_world.erb', 'Goodbye world!' do
115
- assert_equal 'Goodbye world!', render(:file => 'test/hello_world')
116
- modify_template 'test/hello_world.erb', 'So long, world!' do
117
- with_view_paths(view_paths_copy, new_reloadable_view_paths) do
118
- assert_equal 'So long, world!', render(:file => 'test/hello_world')
119
- end
120
- assert_equal 'So long, world!', render(:file => 'test/hello_world')
121
- end
122
- end
123
- end
124
- end
125
-
126
- private
127
- def render(*args)
128
- view_paths = @explicit_view_paths || ActionController::Base.view_paths
129
- ActionView::Base.new(view_paths, {}).render(*args)
130
- end
131
-
132
- def with_view_paths(*args)
133
- args.each do |view_paths|
134
- begin
135
- @explicit_view_paths = view_paths
136
- yield
137
- ensure
138
- @explicit_view_paths = nil
139
- end
140
- end
141
- end
142
-
143
- def reset_mtime_of(template_name, view_paths_to_use)
144
- view_paths_to_use.find_template(template_name).previously_last_modified = 10.seconds.ago unless ActionView::Base.cache_template_loading?
145
- end
146
-
147
- def modify_template(template, content, view_paths_to_use = ActionController::Base.view_paths)
148
- filename = filename_for(template)
149
- old_content = File.read(filename)
150
- begin
151
- File.open(filename, "wb+") { |f| f.write(content) }
152
- reset_mtime_of(template, view_paths_to_use)
153
- yield
154
- ensure
155
- File.open(filename, "wb+") { |f| f.write(old_content) }
156
- reset_mtime_of(template, view_paths_to_use)
157
- end
158
- end
159
-
160
- def filename_for(template)
161
- File.join(FIXTURE_LOAD_PATH, template)
162
- end
163
-
164
- def rename_template(old_name, new_name)
165
- File.rename(filename_for(old_name), filename_for(new_name))
166
- yield
167
- ensure
168
- File.rename(filename_for(new_name), filename_for(old_name))
169
- end
170
-
171
- def delete_template(template, &block)
172
- rename_template(template, File.join(File.dirname(template), "__#{File.basename(template)}"), &block)
173
- end
174
-
175
- def with_caching(perform_caching)
176
- old_perform_caching = ActionController::Base.perform_caching
177
- begin
178
- ActionController::Base.perform_caching = perform_caching
179
- yield
180
- ensure
181
- ActionController::Base.perform_caching = old_perform_caching
182
- end
183
- end
184
-
185
- def with_reloading(reload_templates, view_paths_owner = ActionController::Base)
186
- old_view_paths, old_cache_templates = view_paths_owner.view_paths, ActionView::Base.cache_template_loading
187
- begin
188
- ActionView::Base.cache_template_loading = !reload_templates
189
- view_paths_owner.view_paths = view_paths_for(reload_templates)
190
- yield
191
- ensure
192
- view_paths_owner.view_paths, ActionView::Base.cache_template_loading = old_view_paths, old_cache_templates
193
- end
194
- end
195
-
196
- def new_reloadable_view_paths
197
- ActionView::PathSet.new(CACHED_VIEW_PATHS.map(&:to_s))
198
- end
199
-
200
- def view_paths_for(reload_templates)
201
- # reloadable paths are cheap to create
202
- reload_templates ? new_reloadable_view_paths : CACHED_VIEW_PATHS
203
- end
204
- end