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,95 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class TranslationHelperTest < ActiveSupport::TestCase
4
- include ActionView::Helpers::TagHelper
5
- include ActionView::Helpers::TranslationHelper
6
-
7
- attr_reader :request
8
- def setup
9
- end
10
-
11
- def test_delegates_to_i18n_setting_the_raise_option
12
- I18n.expects(:translate).with(['foo'], :locale => 'en', :raise => true).returns([""])
13
- translate :foo, :locale => 'en'
14
- end
15
-
16
- def test_returns_missing_translation_message_wrapped_into_span
17
- expected = '<span class="translation_missing">en, foo</span>'
18
- assert_equal expected, translate(:foo)
19
- end
20
-
21
- def test_translation_returning_an_array
22
- I18n.expects(:translate).with(["foo"], :raise => true).returns(["foo", "bar"])
23
- assert_equal ["foo", "bar"], translate(:foo)
24
- end
25
-
26
- def test_translation_of_an_array
27
- assert_deprecated do
28
- I18n.expects(:translate).with(["foo", "bar"], :raise => true).returns(["foo", "bar"])
29
- assert_equal ["foo", "bar"], translate(["foo", "bar"])
30
- end
31
- end
32
-
33
- def test_translation_of_an_array_returning_an_array
34
- assert_deprecated do
35
- I18n.expects(:translate).with(["foo", "bar"], :raise => true).returns(["foo", ["bar", "baz"]])
36
- assert_equal ["foo", ["bar", "baz"]], translate(["foo", "bar"])
37
- end
38
- end
39
-
40
- def test_translation_of_an_array_with_html
41
- assert_deprecated do
42
- translate_expected = ['<a href="#">foo</a>', '<a href="#">bar</a>', '<a href="#">baz</a>']
43
- I18n.expects(:translate).with(["foo", "bar", "baz_html"], :raise => true).returns(translate_expected)
44
- @view = ActionView::Base.new(ActionController::Base.view_paths, {})
45
- expected = '<a href="#">foo</a>, <a href="#">bar</a>, <a href="#">baz</a>'
46
- assert_equal expected, @view.render(:file => "test/array_translation")
47
- end
48
- end
49
-
50
- def test_delegates_localize_to_i18n
51
- @time = Time.utc(2008, 7, 8, 12, 18, 38)
52
- I18n.expects(:localize).with(@time)
53
- localize @time
54
- end
55
-
56
- def test_scoping_by_partial
57
- I18n.expects(:translate).with(["test.translation.helper"], :raise => true).returns(["helper"])
58
- @view = ActionView::Base.new(ActionController::Base.view_paths, {})
59
- assert_equal "helper", @view.render(:file => "test/translation")
60
- end
61
-
62
- def test_scoping_by_partial_of_an_array
63
- assert_deprecated do
64
- I18n.expects(:translate).with(["test.scoped_array_translation.foo", "test.scoped_array_translation.bar"], :raise => true).returns(["foo", "bar"])
65
- @view = ActionView::Base.new(ActionController::Base.view_paths, {})
66
- assert_equal "foo, bar", @view.render(:file => "test/scoped_array_translation")
67
- end
68
- end
69
-
70
- def test_translate_works_with_symbols
71
- I18n.expects(:translate).with(["hello"], :raise => true).returns(["Hello World"])
72
- assert_equal "Hello World", translate(:hello)
73
- end
74
-
75
-
76
- def test_translate_does_not_mark_plain_text_as_safe_html
77
- I18n.expects(:translate).with(["hello"], :raise => true).returns(["Hello World"])
78
- assert_equal false, translate("hello").html_safe?
79
- end
80
-
81
- def test_translate_marks_translations_named_html_as_safe_html
82
- I18n.expects(:translate).with(["html"], :raise => true).returns(["<a>Hello World</a>"])
83
- assert translate("html").html_safe?
84
- end
85
-
86
- def test_translate_marks_translations_with_a_html_suffix_as_safe_html
87
- I18n.expects(:translate).with(["hello_html"], :raise => true).returns(["<a>Hello World</a>"])
88
- assert translate("hello_html").html_safe?
89
- end
90
-
91
- def test_translation_returning_an_array_ignores_html_suffix
92
- I18n.expects(:translate).with(["foo_html"], :raise => true).returns(["foo", "bar"])
93
- assert_equal ["foo", "bar"], translate(:foo_html)
94
- end
95
- end
@@ -1,641 +0,0 @@
1
- # encoding: utf-8
2
- require 'abstract_unit'
3
-
4
- RequestMock = Struct.new("Request", :request_uri, :protocol, :host_with_port, :env)
5
-
6
- class UrlHelperTest < ActionView::TestCase
7
- tests ActionView::Helpers::UrlHelper
8
-
9
- def setup
10
- @controller = Class.new do
11
- attr_accessor :url, :request
12
- def url_for(options)
13
- url
14
- end
15
- end
16
- @controller = @controller.new
17
- @controller.url = "http://www.example.com"
18
- end
19
-
20
- def test_url_for_escapes_urls
21
- @controller.url = "http://www.example.com?a=b&c=d"
22
- assert_equal "http://www.example.com?a=b&amp;c=d", url_for(:a => 'b', :c => 'd')
23
- assert_equal "http://www.example.com?a=b&amp;c=d", url_for(:a => 'b', :c => 'd', :escape => true)
24
- assert_equal "http://www.example.com?a=b&c=d", url_for(:a => 'b', :c => 'd', :escape => false)
25
- end
26
-
27
- def test_url_for_escapes_url_once
28
- @controller.url = "http://www.example.com?a=b&amp;c=d"
29
- assert_equal "http://www.example.com?a=b&amp;c=d", url_for("http://www.example.com?a=b&amp;c=d")
30
- end
31
-
32
- def test_url_for_with_back
33
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
34
- assert_equal 'http://www.example.com/referer', url_for(:back)
35
- end
36
-
37
- def test_url_for_with_back_and_no_referer
38
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
39
- assert_equal 'javascript:history.back()', url_for(:back)
40
- end
41
-
42
- # todo: missing test cases
43
- def test_button_to_with_straight_url
44
- assert_dom_equal "<form method=\"post\" action=\"http://www.example.com\" class=\"button-to\"><div><input type=\"submit\" value=\"Hello\" /></div></form>", button_to("Hello", "http://www.example.com")
45
- end
46
-
47
- def test_button_to_with_query
48
- assert_dom_equal "<form method=\"post\" action=\"http://www.example.com/q1=v1&amp;q2=v2\" class=\"button-to\"><div><input type=\"submit\" value=\"Hello\" /></div></form>", button_to("Hello", "http://www.example.com/q1=v1&q2=v2")
49
- end
50
-
51
- def test_button_to_with_escaped_query
52
- assert_dom_equal "<form method=\"post\" action=\"http://www.example.com/q1=v1&amp;q2=v2\" class=\"button-to\"><div><input type=\"submit\" value=\"Hello\" /></div></form>", button_to("Hello", "http://www.example.com/q1=v1&amp;q2=v2")
53
- end
54
-
55
- def test_button_to_with_query_and_no_name
56
- assert_dom_equal "<form method=\"post\" action=\"http://www.example.com?q1=v1&amp;q2=v2\" class=\"button-to\"><div><input type=\"submit\" value=\"http://www.example.com?q1=v1&amp;q2=v2\" /></div></form>", button_to(nil, "http://www.example.com?q1=v1&q2=v2")
57
- end
58
-
59
- def test_button_to_with_javascript_confirm
60
- assert_dom_equal(
61
- "<form method=\"post\" action=\"http://www.example.com\" class=\"button-to\"><div><input onclick=\"return confirm('Are you sure?');\" type=\"submit\" value=\"Hello\" /></div></form>",
62
- button_to("Hello", "http://www.example.com", :confirm => "Are you sure?")
63
- )
64
- end
65
-
66
- def test_button_to_enabled_disabled
67
- assert_dom_equal(
68
- "<form method=\"post\" action=\"http://www.example.com\" class=\"button-to\"><div><input type=\"submit\" value=\"Hello\" /></div></form>",
69
- button_to("Hello", "http://www.example.com", :disabled => false)
70
- )
71
- assert_dom_equal(
72
- "<form method=\"post\" action=\"http://www.example.com\" class=\"button-to\"><div><input disabled=\"disabled\" type=\"submit\" value=\"Hello\" /></div></form>",
73
- button_to("Hello", "http://www.example.com", :disabled => true)
74
- )
75
- end
76
-
77
- def test_button_to_with_method_delete
78
- assert_dom_equal(
79
- "<form method=\"post\" action=\"http://www.example.com\" class=\"button-to\"><div><input type=\"hidden\" name=\"_method\" value=\"delete\" /><input type=\"submit\" value=\"Hello\" /></div></form>",
80
- button_to("Hello", "http://www.example.com", :method => :delete)
81
- )
82
- end
83
-
84
- def test_button_to_with_method_get
85
- assert_dom_equal(
86
- "<form method=\"get\" action=\"http://www.example.com\" class=\"button-to\"><div><input type=\"submit\" value=\"Hello\" /></div></form>",
87
- button_to("Hello", "http://www.example.com", :method => :get)
88
- )
89
- end
90
-
91
- def test_button_to_returns_an_html_safe_string
92
- assert button_to("Hello", "http://www.example.com").html_safe?
93
- end
94
-
95
- def test_link_tag_with_straight_url
96
- assert_dom_equal "<a href=\"http://www.example.com\">Hello</a>", link_to("Hello", "http://www.example.com")
97
- end
98
-
99
- def test_link_tag_without_host_option
100
- ActionController::Base.class_eval { attr_accessor :url }
101
- url = {:controller => 'weblog', :action => 'show'}
102
- @controller = ActionController::Base.new
103
- @controller.request = ActionController::TestRequest.new
104
- @controller.url = ActionController::UrlRewriter.new(@controller.request, url)
105
- assert_dom_equal(%q{<a href="/weblog/show">Test Link</a>}, link_to('Test Link', url))
106
- end
107
-
108
- def test_link_tag_with_host_option
109
- ActionController::Base.class_eval { attr_accessor :url }
110
- url = {:controller => 'weblog', :action => 'show', :host => 'www.example.com'}
111
- @controller = ActionController::Base.new
112
- @controller.request = ActionController::TestRequest.new
113
- @controller.url = ActionController::UrlRewriter.new(@controller.request, url)
114
- assert_dom_equal(%q{<a href="http://www.example.com/weblog/show">Test Link</a>}, link_to('Test Link', url))
115
- end
116
-
117
- def test_link_tag_with_query
118
- assert_dom_equal "<a href=\"http://www.example.com?q1=v1&amp;q2=v2\">Hello</a>", link_to("Hello", "http://www.example.com?q1=v1&amp;q2=v2")
119
- end
120
-
121
- def test_link_tag_with_query_and_no_name
122
- assert_dom_equal "<a href=\"http://www.example.com?q1=v1&amp;q2=v2\">http://www.example.com?q1=v1&amp;q2=v2</a>", link_to(nil, "http://www.example.com?q1=v1&amp;q2=v2")
123
- end
124
-
125
- def test_link_tag_with_back
126
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
127
- assert_dom_equal "<a href=\"http://www.example.com/referer\">go back</a>", link_to('go back', :back)
128
- end
129
-
130
- def test_link_tag_with_back_and_no_referer
131
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
132
- assert_dom_equal "<a href=\"javascript:history.back()\">go back</a>", link_to('go back', :back)
133
- end
134
-
135
- def test_link_tag_with_back
136
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
137
- assert_dom_equal "<a href=\"http://www.example.com/referer\">go back</a>", link_to('go back', :back)
138
- end
139
-
140
- def test_link_tag_with_back_and_no_referer
141
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
142
- assert_dom_equal "<a href=\"javascript:history.back()\">go back</a>", link_to('go back', :back)
143
- end
144
-
145
- def test_link_tag_with_img
146
- assert_dom_equal "<a href=\"http://www.example.com\"><img src='/favicon.jpg' /></a>", link_to("<img src='/favicon.jpg' />", "http://www.example.com")
147
- end
148
-
149
- def test_link_with_nil_html_options
150
- assert_dom_equal "<a href=\"http://www.example.com\">Hello</a>", link_to("Hello", {:action => 'myaction'}, nil)
151
- end
152
-
153
- def test_link_tag_with_custom_onclick
154
- assert_dom_equal "<a href=\"http://www.example.com\" onclick=\"alert('yay!')\">Hello</a>", link_to("Hello", "http://www.example.com", :onclick => "alert('yay!')")
155
- end
156
-
157
- def test_link_tag_with_javascript_confirm
158
- assert_dom_equal(
159
- "<a href=\"http://www.example.com\" onclick=\"return confirm('Are you sure?');\">Hello</a>",
160
- link_to("Hello", "http://www.example.com", :confirm => "Are you sure?")
161
- )
162
- assert_dom_equal(
163
- "<a href=\"http://www.example.com\" onclick=\"return confirm('You can\\'t possibly be sure, can you?');\">Hello</a>",
164
- link_to("Hello", "http://www.example.com", :confirm => "You can't possibly be sure, can you?")
165
- )
166
- assert_dom_equal(
167
- "<a href=\"http://www.example.com\" onclick=\"return confirm('You can\\'t possibly be sure,\\n can you?');\">Hello</a>",
168
- link_to("Hello", "http://www.example.com", :confirm => "You can't possibly be sure,\n can you?")
169
- )
170
- end
171
-
172
- def test_link_tag_with_popup
173
- assert_dom_equal(
174
- "<a href=\"http://www.example.com\" onclick=\"window.open(this.href);return false;\">Hello</a>",
175
- link_to("Hello", "http://www.example.com", :popup => true)
176
- )
177
- assert_dom_equal(
178
- "<a href=\"http://www.example.com\" onclick=\"window.open(this.href);return false;\">Hello</a>",
179
- link_to("Hello", "http://www.example.com", :popup => 'true')
180
- )
181
- assert_dom_equal(
182
- "<a href=\"http://www.example.com\" onclick=\"window.open(this.href,'window_name','width=300,height=300');return false;\">Hello</a>",
183
- link_to("Hello", "http://www.example.com", :popup => ['window_name', 'width=300,height=300'])
184
- )
185
- end
186
-
187
- def test_link_tag_with_popup_and_javascript_confirm
188
- assert_dom_equal(
189
- "<a href=\"http://www.example.com\" onclick=\"if (confirm('Fo\\' sho\\'?')) { window.open(this.href); };return false;\">Hello</a>",
190
- link_to("Hello", "http://www.example.com", { :popup => true, :confirm => "Fo' sho'?" })
191
- )
192
- assert_dom_equal(
193
- "<a href=\"http://www.example.com\" onclick=\"if (confirm('Are you serious?')) { window.open(this.href,'window_name','width=300,height=300'); };return false;\">Hello</a>",
194
- link_to("Hello", "http://www.example.com", { :popup => ['window_name', 'width=300,height=300'], :confirm => "Are you serious?" })
195
- )
196
- end
197
-
198
- def test_link_tag_using_post_javascript
199
- assert_dom_equal(
200
- "<a href='http://www.example.com' onclick=\"var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;f.submit();return false;\">Hello</a>",
201
- link_to("Hello", "http://www.example.com", :method => :post)
202
- )
203
- end
204
-
205
- def test_link_tag_using_delete_javascript
206
- assert_dom_equal(
207
- "<a href='http://www.example.com' onclick=\"var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);f.submit();return false;\">Destroy</a>",
208
- link_to("Destroy", "http://www.example.com", :method => :delete)
209
- )
210
- end
211
-
212
- def test_link_tag_using_delete_javascript_and_href
213
- assert_dom_equal(
214
- "<a href='\#' onclick=\"var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = 'http://www.example.com';var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);f.submit();return false;\">Destroy</a>",
215
- link_to("Destroy", "http://www.example.com", :method => :delete, :href => '#')
216
- )
217
- end
218
-
219
- def test_link_tag_using_post_javascript_and_confirm
220
- assert_dom_equal(
221
- "<a href=\"http://www.example.com\" onclick=\"if (confirm('Are you serious?')) { var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;f.submit(); };return false;\">Hello</a>",
222
- link_to("Hello", "http://www.example.com", :method => :post, :confirm => "Are you serious?")
223
- )
224
- end
225
-
226
- def test_link_tag_using_delete_javascript_and_href_and_confirm
227
- assert_dom_equal(
228
- "<a href='\#' onclick=\"if (confirm('Are you serious?')) { var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = 'http://www.example.com';var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);f.submit(); };return false;\">Destroy</a>",
229
- link_to("Destroy", "http://www.example.com", :method => :delete, :href => '#', :confirm => "Are you serious?"),
230
- "When specifying url, form should be generated with it, but not this.href"
231
- )
232
- end
233
-
234
- def test_link_tag_using_post_javascript_and_popup
235
- assert_raise(ActionView::ActionViewError) { link_to("Hello", "http://www.example.com", :popup => true, :method => :post, :confirm => "Are you serious?") }
236
- end
237
-
238
- def test_link_tag_using_block_in_erb
239
- __in_erb_template = ''
240
-
241
- link_to("http://example.com") { concat("Example site") }
242
-
243
- assert_equal '<a href="http://example.com">Example site</a>', output_buffer
244
- end
245
-
246
- def test_link_to_unless
247
- assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog")
248
- assert_dom_equal "<a href=\"http://www.example.com\">Listing</a>", link_to_unless(false, "Listing", :action => "list", :controller => "weblog")
249
- assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1)
250
- assert_equal "<strong>Showing</strong>", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) { |name, options, html_options|
251
- "<strong>#{name}</strong>"
252
- }
253
- assert_equal "<strong>Showing</strong>", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) { |name|
254
- "<strong>#{name}</strong>"
255
- }
256
- assert_equal "test", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) {
257
- "test"
258
- }
259
- end
260
-
261
- def test_link_to_if
262
- assert_equal "Showing", link_to_if(false, "Showing", :action => "show", :controller => "weblog")
263
- assert_dom_equal "<a href=\"http://www.example.com\">Listing</a>", link_to_if(true, "Listing", :action => "list", :controller => "weblog")
264
- assert_equal "Showing", link_to_if(false, "Showing", :action => "show", :controller => "weblog", :id => 1)
265
- end
266
-
267
- def test_current_page_with_simple_url
268
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
269
- @controller.url = "http://www.example.com/weblog/show"
270
- assert current_page?({ :action => "show", :controller => "weblog" })
271
- assert current_page?("http://www.example.com/weblog/show")
272
- end
273
-
274
- def test_current_page_ignoring_params
275
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
276
- @controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
277
- assert current_page?({ :action => "show", :controller => "weblog" })
278
- assert current_page?("http://www.example.com/weblog/show")
279
- end
280
-
281
- def test_current_page_with_params_that_match
282
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
283
- @controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
284
- assert current_page?({ :action => "show", :controller => "weblog", :order => "desc", :page => "1" })
285
- assert current_page?("http://www.example.com/weblog/show?order=desc&amp;page=1")
286
- end
287
-
288
- def test_link_unless_current
289
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
290
- @controller.url = "http://www.example.com/weblog/show"
291
- assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
292
- assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show")
293
-
294
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc")
295
- @controller.url = "http://www.example.com/weblog/show"
296
- assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
297
- assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show")
298
-
299
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
300
- @controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
301
- assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog", :order=>'desc', :page=>'1' })
302
- assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&amp;page=1")
303
- assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&page=1")
304
-
305
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc")
306
- @controller.url = "http://www.example.com/weblog/show?order=asc"
307
- assert_equal "<a href=\"http://www.example.com/weblog/show?order=asc\">Showing</a>", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
308
- assert_equal "<a href=\"http://www.example.com/weblog/show?order=asc\">Showing</a>", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=asc")
309
-
310
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
311
- @controller.url = "http://www.example.com/weblog/show?order=desc&page=2"
312
- assert_equal "<a href=\"http://www.example.com/weblog/show?order=desc&amp;page=2\">Showing</a>", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
313
- assert_equal "<a href=\"http://www.example.com/weblog/show?order=desc&amp;page=2\">Showing</a>", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&page=2")
314
-
315
-
316
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
317
- @controller.url = "http://www.example.com/weblog/list"
318
- assert_equal "<a href=\"http://www.example.com/weblog/list\">Listing</a>",
319
- link_to_unless_current("Listing", :action => "list", :controller => "weblog")
320
- assert_equal "<a href=\"http://www.example.com/weblog/list\">Listing</a>",
321
- link_to_unless_current("Listing", "http://www.example.com/weblog/list")
322
- end
323
-
324
- def test_mail_to
325
- assert_dom_equal "<a href=\"mailto:david@loudthinking.com\">david@loudthinking.com</a>", mail_to("david@loudthinking.com")
326
- assert_dom_equal "<a href=\"mailto:david@loudthinking.com\">David Heinemeier Hansson</a>", mail_to("david@loudthinking.com", "David Heinemeier Hansson")
327
- assert_dom_equal(
328
- "<a class=\"admin\" href=\"mailto:david@loudthinking.com\">David Heinemeier Hansson</a>",
329
- mail_to("david@loudthinking.com", "David Heinemeier Hansson", "class" => "admin")
330
- )
331
- assert_equal mail_to("david@loudthinking.com", "David Heinemeier Hansson", "class" => "admin"),
332
- mail_to("david@loudthinking.com", "David Heinemeier Hansson", :class => "admin")
333
- end
334
-
335
- def test_mail_to_with_javascript
336
- assert_dom_equal "<script type=\"text/javascript\">eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%4d%79%20%65%6d%61%69%6c%3c%5c%2f%61%3e%27%29%3b'))</script>", mail_to("me@domain.com", "My email", :encode => "javascript")
337
- end
338
-
339
- def test_mail_to_with_javascript_unicode
340
- assert_dom_equal "<script type=\"text/javascript\">eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%75%6e%69%63%6f%64%65%40%65%78%61%6d%70%6c%65%2e%63%6f%6d%5c%22%3e%c3%ba%6e%69%63%6f%64%65%3c%5c%2f%61%3e%27%29%3b'))</script>", mail_to("unicode@example.com", "únicode", :encode => "javascript")
341
- end
342
-
343
- def test_mail_with_options
344
- assert_dom_equal(
345
- %(<a href="mailto:me@example.com?cc=ccaddress%40example.com&amp;bcc=bccaddress%40example.com&amp;body=This%20is%20the%20body%20of%20the%20message.&amp;subject=This%20is%20an%20example%20email">My email</a>),
346
- mail_to("me@example.com", "My email", :cc => "ccaddress@example.com", :bcc => "bccaddress@example.com", :subject => "This is an example email", :body => "This is the body of the message.")
347
- )
348
- end
349
-
350
- def test_mail_to_with_img
351
- assert_dom_equal %(<a href="mailto:feedback@example.com"><img src="/feedback.png" /></a>), mail_to('feedback@example.com', '<img src="/feedback.png" />'.html_safe)
352
- end
353
-
354
- def test_mail_to_with_hex
355
- assert_dom_equal "<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d\">My email</a>", mail_to("me@domain.com", "My email", :encode => "hex")
356
- assert_dom_equal "<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d\">&#109;&#101;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>", mail_to("me@domain.com", nil, :encode => "hex")
357
- end
358
-
359
- def test_mail_to_with_replace_options
360
- assert_dom_equal "<a href=\"mailto:wolfgang@stufenlos.net\">wolfgang(at)stufenlos(dot)net</a>", mail_to("wolfgang@stufenlos.net", nil, :replace_at => "(at)", :replace_dot => "(dot)")
361
- assert_dom_equal "<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d\">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>", mail_to("me@domain.com", nil, :encode => "hex", :replace_at => "(at)")
362
- assert_dom_equal "<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d\">My email</a>", mail_to("me@domain.com", "My email", :encode => "hex", :replace_at => "(at)")
363
- assert_dom_equal "<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d\">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#40;&#100;&#111;&#116;&#41;&#99;&#111;&#109;</a>", mail_to("me@domain.com", nil, :encode => "hex", :replace_at => "(at)", :replace_dot => "(dot)")
364
- assert_dom_equal "<script type=\"text/javascript\">eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%4d%79%20%65%6d%61%69%6c%3c%5c%2f%61%3e%27%29%3b'))</script>", mail_to("me@domain.com", "My email", :encode => "javascript", :replace_at => "(at)", :replace_dot => "(dot)")
365
- assert_dom_equal "<script type=\"text/javascript\">eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%5c%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%5c%22%3e%6d%65%28%61%74%29%64%6f%6d%61%69%6e%28%64%6f%74%29%63%6f%6d%3c%5c%2f%61%3e%27%29%3b'))</script>", mail_to("me@domain.com", nil, :encode => "javascript", :replace_at => "(at)", :replace_dot => "(dot)")
366
- end
367
-
368
- def protect_against_forgery?
369
- false
370
- end
371
- end
372
-
373
- class UrlHelperWithControllerTest < ActionView::TestCase
374
- class UrlHelperController < ActionController::Base
375
- def self.controller_path; 'url_helper_with_controller' end
376
-
377
- def show_url_for
378
- render :inline => "<%= url_for :controller => 'url_helper_with_controller', :action => 'show_url_for' %>"
379
- end
380
-
381
- def show_named_route
382
- render :inline => "<%= show_named_route_#{params[:kind]} %>"
383
- end
384
-
385
- def nil_url_for
386
- render :inline => '<%= url_for(nil) %>'
387
- end
388
-
389
- def rescue_action(e) raise e end
390
- end
391
-
392
- tests ActionView::Helpers::UrlHelper
393
-
394
- def setup
395
- @request = ActionController::TestRequest.new
396
- @response = ActionController::TestResponse.new
397
- @controller = UrlHelperController.new
398
- end
399
-
400
- def test_url_for_shows_only_path
401
- get :show_url_for
402
- assert_equal '/url_helper_with_controller/show_url_for', @response.body
403
- end
404
-
405
- def test_named_route_url_shows_host_and_path
406
- with_url_helper_routing do
407
- get :show_named_route, :kind => 'url'
408
- assert_equal 'http://test.host/url_helper_with_controller/show_named_route', @response.body
409
- end
410
- end
411
-
412
- def test_named_route_path_shows_only_path
413
- with_url_helper_routing do
414
- get :show_named_route, :kind => 'path'
415
- assert_equal '/url_helper_with_controller/show_named_route', @response.body
416
- end
417
- end
418
-
419
- def test_url_for_nil_returns_current_path
420
- get :nil_url_for
421
- assert_equal '/url_helper_with_controller/nil_url_for', @response.body
422
- end
423
-
424
- def test_named_route_should_show_host_and_path_using_controller_default_url_options
425
- class << @controller
426
- def default_url_options(options = nil)
427
- {:host => 'testtwo.host'}
428
- end
429
- end
430
-
431
- with_url_helper_routing do
432
- get :show_named_route, :kind => 'url'
433
- assert_equal 'http://testtwo.host/url_helper_with_controller/show_named_route', @response.body
434
- end
435
- end
436
-
437
- protected
438
- def with_url_helper_routing
439
- with_routing do |set|
440
- set.draw do |map|
441
- map.show_named_route 'url_helper_with_controller/show_named_route', :controller => 'url_helper_with_controller', :action => 'show_named_route'
442
- end
443
- yield
444
- end
445
- end
446
- end
447
-
448
- class LinkToUnlessCurrentWithControllerTest < ActionView::TestCase
449
- class TasksController < ActionController::Base
450
- def self.controller_path; 'tasks' end
451
-
452
- def index
453
- render_default
454
- end
455
-
456
- def show
457
- render_default
458
- end
459
-
460
- def rescue_action(e) raise e end
461
-
462
- protected
463
- def render_default
464
- render :inline =>
465
- "<%= link_to_unless_current(\"tasks\", tasks_path) %>\n" +
466
- "<%= link_to_unless_current(\"tasks\", tasks_url) %>"
467
- end
468
- end
469
-
470
- tests ActionView::Helpers::UrlHelper
471
-
472
- def setup
473
- @request = ActionController::TestRequest.new
474
- @response = ActionController::TestResponse.new
475
- @controller = TasksController.new
476
- end
477
-
478
- def test_link_to_unless_current_to_current
479
- with_restful_routing do
480
- get :index
481
- assert_equal "tasks\ntasks", @response.body
482
- end
483
- end
484
-
485
- def test_link_to_unless_current_shows_link
486
- with_restful_routing do
487
- get :show, :id => 1
488
- assert_equal "<a href=\"/tasks\">tasks</a>\n" +
489
- "<a href=\"#{@request.protocol}#{@request.host_with_port}/tasks\">tasks</a>",
490
- @response.body
491
- end
492
- end
493
-
494
- protected
495
- def with_restful_routing
496
- with_routing do |set|
497
- set.draw do |map|
498
- map.resources :tasks
499
- end
500
- yield
501
- end
502
- end
503
- end
504
-
505
- class Workshop
506
- attr_accessor :id, :new_record
507
-
508
- def initialize(id, new_record)
509
- @id, @new_record = id, new_record
510
- end
511
-
512
- def new_record?
513
- @new_record
514
- end
515
-
516
- def to_s
517
- id.to_s
518
- end
519
- end
520
-
521
- class Session
522
- attr_accessor :id, :workshop_id, :new_record
523
-
524
- def initialize(id, new_record)
525
- @id, @new_record = id, new_record
526
- end
527
-
528
- def new_record?
529
- @new_record
530
- end
531
-
532
- def to_s
533
- id.to_s
534
- end
535
- end
536
-
537
- class PolymorphicControllerTest < ActionView::TestCase
538
- class WorkshopsController < ActionController::Base
539
- def self.controller_path; 'workshops' end
540
-
541
- def index
542
- @workshop = Workshop.new(1, true)
543
- render :inline => "<%= url_for(@workshop) %>\n<%= link_to('Workshop', @workshop) %>"
544
- end
545
-
546
- def show
547
- @workshop = Workshop.new(params[:id], false)
548
- render :inline => "<%= url_for(@workshop) %>\n<%= link_to('Workshop', @workshop) %>"
549
- end
550
-
551
- def rescue_action(e) raise e end
552
- end
553
-
554
- class SessionsController < ActionController::Base
555
- def self.controller_path; 'sessions' end
556
-
557
- def index
558
- @workshop = Workshop.new(params[:workshop_id], false)
559
- @session = Session.new(1, true)
560
- render :inline => "<%= url_for([@workshop, @session]) %>\n<%= link_to('Session', [@workshop, @session]) %>"
561
- end
562
-
563
- def show
564
- @workshop = Workshop.new(params[:workshop_id], false)
565
- @session = Session.new(params[:id], false)
566
- render :inline => "<%= url_for([@workshop, @session]) %>\n<%= link_to('Session', [@workshop, @session]) %>"
567
- end
568
-
569
- def show_workshop_of_nil_sessions
570
- render :inline => "<%= workshop_sessions_path(nil) %>"
571
- end
572
-
573
- def rescue_action(e) raise e end
574
- end
575
-
576
- tests ActionView::Helpers::UrlHelper
577
-
578
- def setup
579
- @request = ActionController::TestRequest.new
580
- @response = ActionController::TestResponse.new
581
- end
582
-
583
- def test_new_resource
584
- @controller = WorkshopsController.new
585
-
586
- with_restful_routing do
587
- get :index
588
- assert_equal "/workshops\n<a href=\"/workshops\">Workshop</a>", @response.body
589
- end
590
- end
591
-
592
- def test_existing_resource
593
- @controller = WorkshopsController.new
594
-
595
- with_restful_routing do
596
- get :show, :id => 1
597
- assert_equal "/workshops/1\n<a href=\"/workshops/1\">Workshop</a>", @response.body
598
- end
599
- end
600
-
601
- def test_new_nested_resource
602
- @controller = SessionsController.new
603
-
604
- with_restful_routing do
605
- get :index, :workshop_id => 1
606
- assert_equal "/workshops/1/sessions\n<a href=\"/workshops/1/sessions\">Session</a>", @response.body
607
- end
608
- end
609
-
610
- def test_existing_nested_resource
611
- @controller = SessionsController.new
612
-
613
- with_restful_routing do
614
- get :show, :workshop_id => 1, :id => 1
615
- assert_equal "/workshops/1/sessions/1\n<a href=\"/workshops/1/sessions/1\">Session</a>", @response.body
616
- end
617
- end
618
-
619
- def test_existing_nested_resource_with_nil_id
620
- @controller = SessionsController.new
621
-
622
- with_restful_routing do
623
- assert_raise ActionController::RoutingError do
624
- get :show_workshop_of_nil_sessions
625
- end
626
- end
627
- end
628
-
629
- protected
630
- def with_restful_routing
631
- with_routing do |set|
632
- set.draw do |map|
633
- map.resources :workshops do |w|
634
- w.resources :sessions
635
- end
636
- map.show_workshop_of_nil_sessions 'sessions/show_workshop_of_nil_sessions', :controller => 'sessions', :action => 'show_workshop_of_nil_sessions'
637
- end
638
- yield
639
- end
640
- end
641
- end