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,1393 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class ResourcesController < ActionController::Base
4
- def index() render :nothing => true end
5
- alias_method :show, :index
6
- def rescue_action(e) raise e end
7
- end
8
-
9
- class ThreadsController < ResourcesController; end
10
- class MessagesController < ResourcesController; end
11
- class CommentsController < ResourcesController; end
12
- class AuthorsController < ResourcesController; end
13
- class LogosController < ResourcesController; end
14
-
15
- class AccountsController < ResourcesController; end
16
- class AdminController < ResourcesController; end
17
- class ProductsController < ResourcesController; end
18
- class ImagesController < ResourcesController; end
19
-
20
- module Backoffice
21
- class ProductsController < ResourcesController; end
22
- class TagsController < ResourcesController; end
23
- class ManufacturersController < ResourcesController; end
24
- class ImagesController < ResourcesController; end
25
-
26
- module Admin
27
- class ProductsController < ResourcesController; end
28
- class ImagesController < ResourcesController; end
29
- end
30
- end
31
-
32
- class ResourcesTest < ActionController::TestCase
33
- # The assertions in these tests are incompatible with the hash method
34
- # optimisation. This could indicate user level problems
35
- def setup
36
- ActionController::Base.optimise_named_routes = false
37
- end
38
-
39
- def teardown
40
- ActionController::Base.optimise_named_routes = true
41
- end
42
-
43
- def test_should_arrange_actions
44
- resource = ActionController::Resources::Resource.new(:messages,
45
- :collection => { :rss => :get, :reorder => :post, :csv => :post },
46
- :member => { :rss => :get, :atom => :get, :upload => :post, :fix => :post },
47
- :new => { :preview => :get, :draft => :get })
48
-
49
- assert_resource_methods [:rss], resource, :collection, :get
50
- assert_resource_methods [:csv, :reorder], resource, :collection, :post
51
- assert_resource_methods [:edit, :rss, :atom], resource, :member, :get
52
- assert_resource_methods [:upload, :fix], resource, :member, :post
53
- assert_resource_methods [:new, :preview, :draft], resource, :new, :get
54
- end
55
-
56
- def test_should_resource_controller_name_equal_resource_name_by_default
57
- resource = ActionController::Resources::Resource.new(:messages, {})
58
- assert_equal 'messages', resource.controller
59
- end
60
-
61
- def test_should_resource_controller_name_equal_controller_option
62
- resource = ActionController::Resources::Resource.new(:messages, :controller => 'posts')
63
- assert_equal 'posts', resource.controller
64
- end
65
-
66
- def test_should_all_singleton_paths_be_the_same
67
- [ :path, :nesting_path_prefix, :member_path ].each do |method|
68
- resource = ActionController::Resources::SingletonResource.new(:messages, :path_prefix => 'admin')
69
- assert_equal 'admin/messages', resource.send(method)
70
- end
71
- end
72
-
73
- def test_default_restful_routes
74
- with_restful_routing :messages do
75
- assert_simply_restful_for :messages
76
- end
77
- end
78
-
79
- def test_override_paths_for_member_and_collection_methods
80
- collection_methods = { 'rss' => :get, 'reorder' => :post, 'csv' => :post }
81
- member_methods = { 'rss' => :get, :atom => :get, :upload => :post, :fix => :post }
82
- path_names = {:new => 'nuevo', 'rss' => 'canal', :fix => 'corrigir' }
83
-
84
- with_restful_routing :messages,
85
- :collection => collection_methods,
86
- :member => member_methods,
87
- :path_names => path_names do
88
-
89
- assert_restful_routes_for :messages,
90
- :collection => collection_methods,
91
- :member => member_methods,
92
- :path_names => path_names do |options|
93
- member_methods.each do |action, method|
94
- assert_recognizes(options.merge(:action => action.to_s, :id => '1'),
95
- :path => "/messages/1/#{path_names[action] || action}",
96
- :method => method)
97
- end
98
-
99
- collection_methods.each do |action, method|
100
- assert_recognizes(options.merge(:action => action),
101
- :path => "/messages/#{path_names[action] || action}",
102
- :method => method)
103
- end
104
- end
105
-
106
- assert_restful_named_routes_for :messages,
107
- :collection => collection_methods,
108
- :member => member_methods,
109
- :path_names => path_names do |options|
110
-
111
- collection_methods.keys.each do |action|
112
- assert_named_route "/messages/#{path_names[action] || action}", "#{action}_messages_path", :action => action
113
- end
114
-
115
- member_methods.keys.each do |action|
116
- assert_named_route "/messages/1/#{path_names[action] || action}", "#{action}_message_path", :action => action, :id => "1"
117
- end
118
-
119
- end
120
- end
121
- end
122
-
123
- def test_override_paths_for_default_restful_actions
124
- resource = ActionController::Resources::Resource.new(:messages,
125
- :path_names => {:new => 'nuevo', :edit => 'editar'})
126
- assert_equal resource.new_path, "#{resource.path}/nuevo"
127
- end
128
-
129
- def test_multiple_default_restful_routes
130
- with_restful_routing :messages, :comments do
131
- assert_simply_restful_for :messages
132
- assert_simply_restful_for :comments
133
- end
134
- end
135
-
136
- def test_with_custom_conditions
137
- with_restful_routing :messages, :conditions => { :subdomain => 'app' } do
138
- assert_equal 'app', ActionController::Routing::Routes.named_routes.routes[:messages].conditions[:subdomain]
139
- end
140
- end
141
-
142
- def test_irregular_id_with_no_requirements_should_raise_error
143
- expected_options = {:controller => 'messages', :action => 'show', :id => '1.1.1'}
144
-
145
- with_restful_routing :messages do
146
- assert_raise(ActionController::RoutingError) do
147
- assert_recognizes(expected_options, :path => 'messages/1.1.1', :method => :get)
148
- end
149
- end
150
- end
151
-
152
- def test_irregular_id_with_requirements_should_pass
153
- expected_options = {:controller => 'messages', :action => 'show', :id => '1.1.1'}
154
-
155
- with_restful_routing(:messages, :requirements => {:id => /[0-9]\.[0-9]\.[0-9]/}) do
156
- assert_recognizes(expected_options, :path => 'messages/1.1.1', :method => :get)
157
- end
158
- end
159
-
160
- def test_with_path_prefix_requirements
161
- expected_options = {:controller => 'messages', :action => 'show', :thread_id => '1.1.1', :id => '1'}
162
- with_restful_routing :messages, :path_prefix => '/thread/:thread_id', :requirements => {:thread_id => /[0-9]\.[0-9]\.[0-9]/} do
163
- assert_recognizes(expected_options, :path => 'thread/1.1.1/messages/1', :method => :get)
164
- end
165
- end
166
-
167
- def test_irregular_id_requirements_should_get_passed_to_member_actions
168
- expected_options = {:controller => 'messages', :action => 'custom', :id => '1.1.1'}
169
-
170
- with_restful_routing(:messages, :member => {:custom => :get}, :requirements => {:id => /[0-9]\.[0-9]\.[0-9]/}) do
171
- assert_recognizes(expected_options, :path => 'messages/1.1.1/custom', :method => :get)
172
- end
173
- end
174
-
175
- def test_with_path_prefix
176
- with_restful_routing :messages, :path_prefix => '/thread/:thread_id' do
177
- assert_simply_restful_for :messages, :path_prefix => 'thread/5/', :options => { :thread_id => '5' }
178
- end
179
- end
180
-
181
- def test_multiple_with_path_prefix
182
- with_restful_routing :messages, :comments, :path_prefix => '/thread/:thread_id' do
183
- assert_simply_restful_for :messages, :path_prefix => 'thread/5/', :options => { :thread_id => '5' }
184
- assert_simply_restful_for :comments, :path_prefix => 'thread/5/', :options => { :thread_id => '5' }
185
- end
186
- end
187
-
188
- def test_with_name_prefix
189
- with_restful_routing :messages, :name_prefix => 'post_' do
190
- assert_simply_restful_for :messages, :name_prefix => 'post_'
191
- end
192
- end
193
-
194
- def test_with_collection_actions
195
- actions = { 'a' => :get, 'b' => :put, 'c' => :post, 'd' => :delete }
196
-
197
- with_restful_routing :messages, :collection => actions do
198
- assert_restful_routes_for :messages do |options|
199
- actions.each do |action, method|
200
- assert_recognizes(options.merge(:action => action), :path => "/messages/#{action}", :method => method)
201
- end
202
- end
203
-
204
- assert_restful_named_routes_for :messages do |options|
205
- actions.keys.each do |action|
206
- assert_named_route "/messages/#{action}", "#{action}_messages_path", :action => action
207
- end
208
- end
209
- end
210
- end
211
-
212
- def test_with_collection_actions_and_name_prefix
213
- actions = { 'a' => :get, 'b' => :put, 'c' => :post, 'd' => :delete }
214
-
215
- with_restful_routing :messages, :path_prefix => '/threads/:thread_id', :name_prefix => "thread_", :collection => actions do
216
- assert_restful_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
217
- actions.each do |action, method|
218
- assert_recognizes(options.merge(:action => action), :path => "/threads/1/messages/#{action}", :method => method)
219
- end
220
- end
221
-
222
- assert_restful_named_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
223
- actions.keys.each do |action|
224
- assert_named_route "/threads/1/messages/#{action}", "#{action}_thread_messages_path", :action => action
225
- end
226
- end
227
- end
228
- end
229
-
230
- def test_with_collection_actions_and_name_prefix_and_member_action_with_same_name
231
- actions = { 'a' => :get }
232
-
233
- with_restful_routing :messages, :path_prefix => '/threads/:thread_id', :name_prefix => "thread_", :collection => actions, :member => actions do
234
- assert_restful_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
235
- actions.each do |action, method|
236
- assert_recognizes(options.merge(:action => action), :path => "/threads/1/messages/#{action}", :method => method)
237
- end
238
- end
239
-
240
- assert_restful_named_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
241
- actions.keys.each do |action|
242
- assert_named_route "/threads/1/messages/#{action}", "#{action}_thread_messages_path", :action => action
243
- end
244
- end
245
- end
246
- end
247
-
248
- def test_with_collection_action_and_name_prefix_and_formatted
249
- actions = { 'a' => :get, 'b' => :put, 'c' => :post, 'd' => :delete }
250
-
251
- with_restful_routing :messages, :path_prefix => '/threads/:thread_id', :name_prefix => "thread_", :collection => actions do
252
- assert_restful_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
253
- actions.each do |action, method|
254
- assert_recognizes(options.merge(:action => action, :format => 'xml'), :path => "/threads/1/messages/#{action}.xml", :method => method)
255
- end
256
- end
257
-
258
- assert_restful_named_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
259
- actions.keys.each do |action|
260
- assert_named_route "/threads/1/messages/#{action}.xml", "#{action}_thread_messages_path", :action => action, :format => 'xml'
261
- end
262
- end
263
- end
264
- end
265
-
266
- def test_with_member_action
267
- [:put, :post].each do |method|
268
- with_restful_routing :messages, :member => { :mark => method } do
269
- mark_options = {:action => 'mark', :id => '1'}
270
- mark_path = "/messages/1/mark"
271
- assert_restful_routes_for :messages do |options|
272
- assert_recognizes(options.merge(mark_options), :path => mark_path, :method => method)
273
- end
274
-
275
- assert_restful_named_routes_for :messages do |options|
276
- assert_named_route mark_path, :mark_message_path, mark_options
277
- end
278
- end
279
- end
280
- end
281
-
282
- def test_with_member_action_and_requirement
283
- expected_options = {:controller => 'messages', :action => 'mark', :id => '1.1.1'}
284
-
285
- with_restful_routing(:messages, :requirements => {:id => /[0-9]\.[0-9]\.[0-9]/}, :member => { :mark => :get }) do
286
- assert_recognizes(expected_options, :path => 'messages/1.1.1/mark', :method => :get)
287
- end
288
- end
289
-
290
- def test_member_when_override_paths_for_default_restful_actions_with
291
- [:put, :post].each do |method|
292
- with_restful_routing :messages, :member => { :mark => method }, :path_names => {:new => 'nuevo'} do
293
- mark_options = {:action => 'mark', :id => '1', :controller => "messages"}
294
- mark_path = "/messages/1/mark"
295
-
296
- assert_restful_routes_for :messages, :path_names => {:new => 'nuevo'} do |options|
297
- assert_recognizes(options.merge(mark_options), :path => mark_path, :method => method)
298
- end
299
-
300
- assert_restful_named_routes_for :messages, :path_names => {:new => 'nuevo'} do |options|
301
- assert_named_route mark_path, :mark_message_path, mark_options
302
- end
303
- end
304
- end
305
- end
306
-
307
- def test_member_when_changed_default_restful_actions_and_path_names_not_specified
308
- default_path_names = ActionController::Base.resources_path_names
309
- ActionController::Base.resources_path_names = {:new => 'nuevo', :edit => 'editar'}
310
-
311
- with_restful_routing :messages do
312
- new_options = { :action => 'new', :controller => 'messages' }
313
- new_path = "/messages/nuevo"
314
- edit_options = { :action => 'edit', :id => '1', :controller => 'messages' }
315
- edit_path = "/messages/1/editar"
316
-
317
- assert_restful_routes_for :messages do |options|
318
- assert_recognizes(options.merge(new_options), :path => new_path, :method => :get)
319
- end
320
-
321
- assert_restful_routes_for :messages do |options|
322
- assert_recognizes(options.merge(edit_options), :path => edit_path, :method => :get)
323
- end
324
- end
325
- ensure
326
- ActionController::Base.resources_path_names = default_path_names
327
- end
328
-
329
- def test_with_two_member_actions_with_same_method
330
- [:put, :post].each do |method|
331
- with_restful_routing :messages, :member => { :mark => method, :unmark => method } do
332
- %w(mark unmark).each do |action|
333
- action_options = {:action => action, :id => '1'}
334
- action_path = "/messages/1/#{action}"
335
- assert_restful_routes_for :messages do |options|
336
- assert_recognizes(options.merge(action_options), :path => action_path, :method => method)
337
- end
338
-
339
- assert_restful_named_routes_for :messages do |options|
340
- assert_named_route action_path, "#{action}_message_path".to_sym, action_options
341
- end
342
- end
343
- end
344
- end
345
- end
346
-
347
- def test_array_as_collection_or_member_method_value
348
- with_restful_routing :messages, :collection => { :search => [:get, :post] }, :member => { :toggle => [:get, :post] } do
349
- assert_restful_routes_for :messages do |options|
350
- [:get, :post].each do |method|
351
- assert_recognizes(options.merge(:action => 'search'), :path => "/messages/search", :method => method)
352
- end
353
- [:get, :post].each do |method|
354
- assert_recognizes(options.merge(:action => 'toggle', :id => '1'), :path => '/messages/1/toggle', :method => method)
355
- end
356
- end
357
- end
358
- end
359
-
360
- def test_with_new_action
361
- with_restful_routing :messages, :new => { :preview => :post } do
362
- preview_options = {:action => 'preview'}
363
- preview_path = "/messages/new/preview"
364
- assert_restful_routes_for :messages do |options|
365
- assert_recognizes(options.merge(preview_options), :path => preview_path, :method => :post)
366
- end
367
-
368
- assert_restful_named_routes_for :messages do |options|
369
- assert_named_route preview_path, :preview_new_message_path, preview_options
370
- end
371
- end
372
- end
373
-
374
- def test_with_new_action_with_name_prefix
375
- with_restful_routing :messages, :new => { :preview => :post }, :path_prefix => '/threads/:thread_id', :name_prefix => 'thread_' do
376
- preview_options = {:action => 'preview', :thread_id => '1'}
377
- preview_path = "/threads/1/messages/new/preview"
378
- assert_restful_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
379
- assert_recognizes(options.merge(preview_options), :path => preview_path, :method => :post)
380
- end
381
-
382
- assert_restful_named_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
383
- assert_named_route preview_path, :preview_new_thread_message_path, preview_options
384
- end
385
- end
386
- end
387
-
388
- def test_with_formatted_new_action_with_name_prefix
389
- with_restful_routing :messages, :new => { :preview => :post }, :path_prefix => '/threads/:thread_id', :name_prefix => 'thread_' do
390
- preview_options = {:action => 'preview', :thread_id => '1', :format => 'xml'}
391
- preview_path = "/threads/1/messages/new/preview.xml"
392
- assert_restful_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
393
- assert_recognizes(options.merge(preview_options), :path => preview_path, :method => :post)
394
- end
395
-
396
- assert_restful_named_routes_for :messages, :path_prefix => 'threads/1/', :name_prefix => 'thread_', :options => { :thread_id => '1' } do |options|
397
- assert_named_route preview_path, :preview_new_thread_message_path, preview_options
398
- end
399
- end
400
- end
401
-
402
- def test_override_new_method
403
- with_restful_routing :messages do
404
- assert_restful_routes_for :messages do |options|
405
- assert_recognizes(options.merge(:action => "new"), :path => "/messages/new", :method => :get)
406
- assert_raise(ActionController::MethodNotAllowed) do
407
- ActionController::Routing::Routes.recognize_path("/messages/new", :method => :post)
408
- end
409
- end
410
- end
411
-
412
- with_restful_routing :messages, :new => { :new => :any } do
413
- assert_restful_routes_for :messages do |options|
414
- assert_recognizes(options.merge(:action => "new"), :path => "/messages/new", :method => :post)
415
- assert_recognizes(options.merge(:action => "new"), :path => "/messages/new", :method => :get)
416
- end
417
- end
418
- end
419
-
420
- def test_nested_restful_routes
421
- with_routing do |set|
422
- set.draw do |map|
423
- map.resources :threads do |map|
424
- map.resources :messages do |map|
425
- map.resources :comments
426
- end
427
- end
428
- end
429
-
430
- assert_simply_restful_for :threads
431
- assert_simply_restful_for :messages,
432
- :name_prefix => 'thread_',
433
- :path_prefix => 'threads/1/',
434
- :options => { :thread_id => '1' }
435
- assert_simply_restful_for :comments,
436
- :name_prefix => 'thread_message_',
437
- :path_prefix => 'threads/1/messages/2/',
438
- :options => { :thread_id => '1', :message_id => '2' }
439
- end
440
- end
441
-
442
- def test_nested_restful_routes_with_overwritten_defaults
443
- with_routing do |set|
444
- set.draw do |map|
445
- map.resources :threads do |map|
446
- map.resources :messages, :name_prefix => nil do |map|
447
- map.resources :comments, :name_prefix => nil
448
- end
449
- end
450
- end
451
-
452
- assert_simply_restful_for :threads
453
- assert_simply_restful_for :messages,
454
- :path_prefix => 'threads/1/',
455
- :options => { :thread_id => '1' }
456
- assert_simply_restful_for :comments,
457
- :path_prefix => 'threads/1/messages/2/',
458
- :options => { :thread_id => '1', :message_id => '2' }
459
- end
460
- end
461
-
462
- def test_shallow_nested_restful_routes
463
- with_routing do |set|
464
- set.draw do |map|
465
- map.resources :threads, :shallow => true do |map|
466
- map.resources :messages do |map|
467
- map.resources :comments
468
- end
469
- end
470
- end
471
-
472
- assert_simply_restful_for :threads,
473
- :shallow => true
474
- assert_simply_restful_for :messages,
475
- :name_prefix => 'thread_',
476
- :path_prefix => 'threads/1/',
477
- :shallow => true,
478
- :options => { :thread_id => '1' }
479
- assert_simply_restful_for :comments,
480
- :name_prefix => 'message_',
481
- :path_prefix => 'messages/2/',
482
- :shallow => true,
483
- :options => { :message_id => '2' }
484
- end
485
- end
486
-
487
- def test_shallow_nested_restful_routes_with_namespaces
488
- with_routing do |set|
489
- set.draw do |map|
490
- map.namespace :backoffice do |map|
491
- map.namespace :admin do |map|
492
- map.resources :products, :shallow => true do |map|
493
- map.resources :images
494
- end
495
- end
496
- end
497
- end
498
-
499
- assert_simply_restful_for :products,
500
- :controller => 'backoffice/admin/products',
501
- :namespace => 'backoffice/admin/',
502
- :name_prefix => 'backoffice_admin_',
503
- :path_prefix => 'backoffice/admin/',
504
- :shallow => true
505
- assert_simply_restful_for :images,
506
- :controller => 'backoffice/admin/images',
507
- :namespace => 'backoffice/admin/',
508
- :name_prefix => 'backoffice_admin_product_',
509
- :path_prefix => 'backoffice/admin/products/1/',
510
- :shallow => true,
511
- :options => { :product_id => '1' }
512
- end
513
- end
514
-
515
- def test_restful_routes_dont_generate_duplicates
516
- with_restful_routing :messages do
517
- routes = ActionController::Routing::Routes.routes
518
- routes.each do |route|
519
- routes.each do |r|
520
- next if route === r # skip the comparison instance
521
- assert distinct_routes?(route, r), "Duplicate Route: #{route}"
522
- end
523
- end
524
- end
525
- end
526
-
527
- def test_should_create_singleton_resource_routes
528
- with_singleton_resources :account do
529
- assert_singleton_restful_for :account
530
- end
531
- end
532
-
533
- def test_should_create_multiple_singleton_resource_routes
534
- with_singleton_resources :account, :logo do
535
- assert_singleton_restful_for :account
536
- assert_singleton_restful_for :logo
537
- end
538
- end
539
-
540
- def test_should_create_nested_singleton_resource_routes
541
- with_routing do |set|
542
- set.draw do |map|
543
- map.resource :admin, :controller => 'admin' do |admin|
544
- admin.resource :account
545
- end
546
- end
547
-
548
- assert_singleton_restful_for :admin, :controller => 'admin'
549
- assert_singleton_restful_for :account, :name_prefix => "admin_", :path_prefix => 'admin/'
550
- end
551
- end
552
-
553
- def test_resource_has_many_should_become_nested_resources
554
- with_routing do |set|
555
- set.draw do |map|
556
- map.resources :messages, :has_many => [ :comments, :authors ]
557
- end
558
-
559
- assert_simply_restful_for :messages
560
- assert_simply_restful_for :comments, :name_prefix => "message_", :path_prefix => 'messages/1/', :options => { :message_id => '1' }
561
- assert_simply_restful_for :authors, :name_prefix => "message_", :path_prefix => 'messages/1/', :options => { :message_id => '1' }
562
- end
563
- end
564
-
565
- def test_resources_has_many_hash_should_become_nested_resources
566
- with_routing do |set|
567
- set.draw do |map|
568
- map.resources :threads, :has_many => { :messages => [ :comments, { :authors => :threads } ] }
569
- end
570
-
571
- assert_simply_restful_for :threads
572
- assert_simply_restful_for :messages, :name_prefix => "thread_", :path_prefix => 'threads/1/', :options => { :thread_id => '1' }
573
- assert_simply_restful_for :comments, :name_prefix => "thread_message_", :path_prefix => 'threads/1/messages/1/', :options => { :thread_id => '1', :message_id => '1' }
574
- assert_simply_restful_for :authors, :name_prefix => "thread_message_", :path_prefix => 'threads/1/messages/1/', :options => { :thread_id => '1', :message_id => '1' }
575
- assert_simply_restful_for :threads, :name_prefix => "thread_message_author_", :path_prefix => 'threads/1/messages/1/authors/1/', :options => { :thread_id => '1', :message_id => '1', :author_id => '1' }
576
- end
577
- end
578
-
579
- def test_shallow_resource_has_many_should_become_shallow_nested_resources
580
- with_routing do |set|
581
- set.draw do |map|
582
- map.resources :messages, :has_many => [ :comments, :authors ], :shallow => true
583
- end
584
-
585
- assert_simply_restful_for :messages, :shallow => true
586
- assert_simply_restful_for :comments, :name_prefix => "message_", :path_prefix => 'messages/1/', :shallow => true, :options => { :message_id => '1' }
587
- assert_simply_restful_for :authors, :name_prefix => "message_", :path_prefix => 'messages/1/', :shallow => true, :options => { :message_id => '1' }
588
- end
589
- end
590
-
591
- def test_resource_has_one_should_become_nested_resources
592
- with_routing do |set|
593
- set.draw do |map|
594
- map.resources :messages, :has_one => :logo
595
- end
596
-
597
- assert_simply_restful_for :messages
598
- assert_singleton_restful_for :logo, :name_prefix => 'message_', :path_prefix => 'messages/1/', :options => { :message_id => '1' }
599
- end
600
- end
601
-
602
- def test_shallow_resource_has_one_should_become_shallow_nested_resources
603
- with_routing do |set|
604
- set.draw do |map|
605
- map.resources :messages, :has_one => :logo, :shallow => true
606
- end
607
-
608
- assert_simply_restful_for :messages, :shallow => true
609
- assert_singleton_restful_for :logo, :name_prefix => 'message_', :path_prefix => 'messages/1/', :shallow => true, :options => { :message_id => '1' }
610
- end
611
- end
612
-
613
- def test_singleton_resource_with_member_action
614
- [:put, :post].each do |method|
615
- with_singleton_resources :account, :member => { :reset => method } do
616
- reset_options = {:action => 'reset'}
617
- reset_path = "/account/reset"
618
- assert_singleton_routes_for :account do |options|
619
- assert_recognizes(options.merge(reset_options), :path => reset_path, :method => method)
620
- end
621
-
622
- assert_singleton_named_routes_for :account do |options|
623
- assert_named_route reset_path, :reset_account_path, reset_options
624
- end
625
- end
626
- end
627
- end
628
-
629
- def test_singleton_resource_with_two_member_actions_with_same_method
630
- [:put, :post].each do |method|
631
- with_singleton_resources :account, :member => { :reset => method, :disable => method } do
632
- %w(reset disable).each do |action|
633
- action_options = {:action => action}
634
- action_path = "/account/#{action}"
635
- assert_singleton_routes_for :account do |options|
636
- assert_recognizes(options.merge(action_options), :path => action_path, :method => method)
637
- end
638
-
639
- assert_singleton_named_routes_for :account do |options|
640
- assert_named_route action_path, "#{action}_account_path".to_sym, action_options
641
- end
642
- end
643
- end
644
- end
645
- end
646
-
647
- def test_should_nest_resources_in_singleton_resource
648
- with_routing do |set|
649
- set.draw do |map|
650
- map.resource :account do |account|
651
- account.resources :messages
652
- end
653
- end
654
-
655
- assert_singleton_restful_for :account
656
- assert_simply_restful_for :messages, :name_prefix => "account_", :path_prefix => 'account/'
657
- end
658
- end
659
-
660
- def test_should_nest_resources_in_singleton_resource_with_path_prefix
661
- with_routing do |set|
662
- set.draw do |map|
663
- map.resource(:account, :path_prefix => ':site_id') do |account|
664
- account.resources :messages
665
- end
666
- end
667
-
668
- assert_singleton_restful_for :account, :path_prefix => '7/', :options => { :site_id => '7' }
669
- assert_simply_restful_for :messages, :name_prefix => "account_", :path_prefix => '7/account/', :options => { :site_id => '7' }
670
- end
671
- end
672
-
673
- def test_should_nest_singleton_resource_in_resources
674
- with_routing do |set|
675
- set.draw do |map|
676
- map.resources :threads do |thread|
677
- thread.resource :admin, :controller => 'admin'
678
- end
679
- end
680
-
681
- assert_simply_restful_for :threads
682
- assert_singleton_restful_for :admin, :controller => 'admin', :name_prefix => 'thread_', :path_prefix => 'threads/5/', :options => { :thread_id => '5' }
683
- end
684
- end
685
-
686
- def test_should_not_allow_delete_or_put_on_collection_path
687
- controller_name = :messages
688
- with_restful_routing controller_name do
689
- options = { :controller => controller_name.to_s }
690
- collection_path = "/#{controller_name}"
691
-
692
- assert_raise(ActionController::MethodNotAllowed) do
693
- assert_recognizes(options.merge(:action => 'update'), :path => collection_path, :method => :put)
694
- end
695
-
696
- assert_raise(ActionController::MethodNotAllowed) do
697
- assert_recognizes(options.merge(:action => 'destroy'), :path => collection_path, :method => :delete)
698
- end
699
- end
700
- end
701
-
702
- def test_should_not_allow_invalid_head_method_for_member_routes
703
- with_routing do |set|
704
- set.draw do |map|
705
- assert_raise(ArgumentError) do
706
- map.resources :messages, :member => {:something => :head}
707
- end
708
- end
709
- end
710
- end
711
-
712
- def test_should_not_allow_invalid_http_methods_for_member_routes
713
- with_routing do |set|
714
- set.draw do |map|
715
- assert_raise(ArgumentError) do
716
- map.resources :messages, :member => {:something => :invalid}
717
- end
718
- end
719
- end
720
- end
721
-
722
- def test_resource_action_separator
723
- with_routing do |set|
724
- set.draw do |map|
725
- map.resources :messages, :collection => {:search => :get}, :new => {:preview => :any}, :name_prefix => 'thread_', :path_prefix => '/threads/:thread_id'
726
- map.resource :account, :member => {:login => :get}, :new => {:preview => :any}, :name_prefix => 'admin_', :path_prefix => '/admin'
727
- end
728
-
729
- action_separator = ActionController::Base.resource_action_separator
730
-
731
- assert_simply_restful_for :messages, :name_prefix => 'thread_', :path_prefix => 'threads/1/', :options => { :thread_id => '1' }
732
- assert_named_route "/threads/1/messages#{action_separator}search", "search_thread_messages_path", {}
733
- assert_named_route "/threads/1/messages/new", "new_thread_message_path", {}
734
- assert_named_route "/threads/1/messages/new#{action_separator}preview", "preview_new_thread_message_path", {}
735
- assert_singleton_restful_for :account, :name_prefix => 'admin_', :path_prefix => 'admin/'
736
- assert_named_route "/admin/account#{action_separator}login", "login_admin_account_path", {}
737
- assert_named_route "/admin/account/new", "new_admin_account_path", {}
738
- assert_named_route "/admin/account/new#{action_separator}preview", "preview_new_admin_account_path", {}
739
- end
740
- end
741
-
742
- def test_new_style_named_routes_for_resource
743
- with_routing do |set|
744
- set.draw do |map|
745
- map.resources :messages, :collection => {:search => :get}, :new => {:preview => :any}, :name_prefix => 'thread_', :path_prefix => '/threads/:thread_id'
746
- end
747
- assert_simply_restful_for :messages, :name_prefix => 'thread_', :path_prefix => 'threads/1/', :options => { :thread_id => '1' }
748
- assert_named_route "/threads/1/messages/search", "search_thread_messages_path", {}
749
- assert_named_route "/threads/1/messages/new", "new_thread_message_path", {}
750
- assert_named_route "/threads/1/messages/new/preview", "preview_new_thread_message_path", {}
751
- end
752
- end
753
-
754
- def test_new_style_named_routes_for_singleton_resource
755
- with_routing do |set|
756
- set.draw do |map|
757
- map.resource :account, :member => {:login => :get}, :new => {:preview => :any}, :name_prefix => 'admin_', :path_prefix => '/admin'
758
- end
759
- assert_singleton_restful_for :account, :name_prefix => 'admin_', :path_prefix => 'admin/'
760
- assert_named_route "/admin/account/login", "login_admin_account_path", {}
761
- assert_named_route "/admin/account/new", "new_admin_account_path", {}
762
- assert_named_route "/admin/account/new/preview", "preview_new_admin_account_path", {}
763
- end
764
- end
765
-
766
- def test_resources_in_namespace
767
- with_routing do |set|
768
- set.draw do |map|
769
- map.namespace :backoffice do |backoffice|
770
- backoffice.resources :products
771
- end
772
- end
773
-
774
- assert_simply_restful_for :products, :controller => "backoffice/products", :name_prefix => 'backoffice_', :path_prefix => 'backoffice/'
775
- end
776
- end
777
-
778
- def test_resource_has_many_in_namespace
779
- with_routing do |set|
780
- set.draw do |map|
781
- map.namespace :backoffice do |backoffice|
782
- backoffice.resources :products, :has_many => :tags
783
- end
784
- end
785
-
786
- assert_simply_restful_for :products, :controller => "backoffice/products", :name_prefix => 'backoffice_', :path_prefix => 'backoffice/'
787
- assert_simply_restful_for :tags, :controller => "backoffice/tags", :name_prefix => "backoffice_product_", :path_prefix => 'backoffice/products/1/', :options => { :product_id => '1' }
788
- end
789
- end
790
-
791
- def test_resource_has_one_in_namespace
792
- with_routing do |set|
793
- set.draw do |map|
794
- map.namespace :backoffice do |backoffice|
795
- backoffice.resources :products, :has_one => :manufacturer
796
- end
797
- end
798
-
799
- assert_simply_restful_for :products, :controller => "backoffice/products", :name_prefix => 'backoffice_', :path_prefix => 'backoffice/'
800
- assert_singleton_restful_for :manufacturer, :controller => "backoffice/manufacturers", :name_prefix => 'backoffice_product_', :path_prefix => 'backoffice/products/1/', :options => { :product_id => '1' }
801
- end
802
- end
803
-
804
- def test_resources_in_nested_namespace
805
- with_routing do |set|
806
- set.draw do |map|
807
- map.namespace :backoffice do |backoffice|
808
- backoffice.namespace :admin do |admin|
809
- admin.resources :products
810
- end
811
- end
812
- end
813
-
814
- assert_simply_restful_for :products, :controller => "backoffice/admin/products", :name_prefix => 'backoffice_admin_', :path_prefix => 'backoffice/admin/'
815
- end
816
- end
817
-
818
- def test_resources_using_namespace
819
- with_routing do |set|
820
- set.draw do |map|
821
- map.resources :products, :namespace => "backoffice/"
822
- end
823
-
824
- assert_simply_restful_for :products, :controller => "backoffice/products"
825
- end
826
- end
827
-
828
- def test_nested_resources_using_namespace
829
- with_routing do |set|
830
- set.draw do |map|
831
- map.namespace :backoffice do |backoffice|
832
- backoffice.resources :products do |products|
833
- products.resources :images
834
- end
835
- end
836
- end
837
-
838
- assert_simply_restful_for :images, :controller => "backoffice/images", :name_prefix => 'backoffice_product_', :path_prefix => 'backoffice/products/1/', :options => {:product_id => '1'}
839
- end
840
- end
841
-
842
- def test_nested_resources_in_nested_namespace
843
- with_routing do |set|
844
- set.draw do |map|
845
- map.namespace :backoffice do |backoffice|
846
- backoffice.namespace :admin do |admin|
847
- admin.resources :products do |products|
848
- products.resources :images
849
- end
850
- end
851
- end
852
- end
853
-
854
- assert_simply_restful_for :images, :controller => "backoffice/admin/images", :name_prefix => 'backoffice_admin_product_', :path_prefix => 'backoffice/admin/products/1/', :options => {:product_id => '1'}
855
- end
856
- end
857
-
858
- def test_with_path_segment
859
- with_restful_routing :messages do
860
- assert_simply_restful_for :messages
861
- assert_recognizes({:controller => "messages", :action => "index"}, "/messages")
862
- assert_recognizes({:controller => "messages", :action => "index"}, "/messages/")
863
- end
864
-
865
- with_restful_routing :messages, :as => 'reviews' do
866
- assert_simply_restful_for :messages, :as => 'reviews'
867
- assert_recognizes({:controller => "messages", :action => "index"}, "/reviews")
868
- assert_recognizes({:controller => "messages", :action => "index"}, "/reviews/")
869
- end
870
- end
871
-
872
- def test_multiple_with_path_segment_and_controller
873
- with_routing do |set|
874
- set.draw do |map|
875
- map.resources :products do |products|
876
- products.resources :product_reviews, :as => 'reviews', :controller => 'messages'
877
- end
878
- map.resources :tutors do |tutors|
879
- tutors.resources :tutor_reviews, :as => 'reviews', :controller => 'comments'
880
- end
881
- end
882
-
883
- assert_simply_restful_for :product_reviews, :controller=>'messages', :as => 'reviews', :name_prefix => 'product_', :path_prefix => 'products/1/', :options => {:product_id => '1'}
884
- assert_simply_restful_for :tutor_reviews,:controller=>'comments', :as => 'reviews', :name_prefix => 'tutor_', :path_prefix => 'tutors/1/', :options => {:tutor_id => '1'}
885
- end
886
- end
887
-
888
- def test_with_path_segment_path_prefix_requirements
889
- expected_options = {:controller => 'messages', :action => 'show', :thread_id => '1.1.1', :id => '1'}
890
- with_restful_routing :messages, :as => 'comments',:path_prefix => '/thread/:thread_id', :requirements => { :thread_id => /[0-9]\.[0-9]\.[0-9]/ } do
891
- assert_recognizes(expected_options, :path => 'thread/1.1.1/comments/1', :method => :get)
892
- end
893
- end
894
-
895
- def test_resource_has_only_show_action
896
- with_routing do |set|
897
- set.draw do |map|
898
- map.resources :products, :only => :show
899
- end
900
-
901
- assert_resource_allowed_routes('products', {}, { :id => '1' }, :show, [:index, :new, :create, :edit, :update, :destroy])
902
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, :show, [:index, :new, :create, :edit, :update, :destroy])
903
- end
904
- end
905
-
906
- def test_singleton_resource_has_only_show_action
907
- with_routing do |set|
908
- set.draw do |map|
909
- map.resource :account, :only => :show
910
- end
911
-
912
- assert_singleton_resource_allowed_routes('accounts', {}, :show, [:index, :new, :create, :edit, :update, :destroy])
913
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, :show, [:index, :new, :create, :edit, :update, :destroy])
914
- end
915
- end
916
-
917
- def test_resource_does_not_have_destroy_action
918
- with_routing do |set|
919
- set.draw do |map|
920
- map.resources :products, :except => :destroy
921
- end
922
-
923
- assert_resource_allowed_routes('products', {}, { :id => '1' }, [:index, :new, :create, :show, :edit, :update], :destroy)
924
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, [:index, :new, :create, :show, :edit, :update], :destroy)
925
- end
926
- end
927
-
928
- def test_singleton_resource_does_not_have_destroy_action
929
- with_routing do |set|
930
- set.draw do |map|
931
- map.resource :account, :except => :destroy
932
- end
933
-
934
- assert_singleton_resource_allowed_routes('accounts', {}, [:new, :create, :show, :edit, :update], :destroy)
935
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, [:new, :create, :show, :edit, :update], :destroy)
936
- end
937
- end
938
-
939
- def test_resource_has_only_create_action_and_named_route
940
- with_routing do |set|
941
- set.draw do |map|
942
- map.resources :products, :only => :create
943
- end
944
-
945
- assert_resource_allowed_routes('products', {}, { :id => '1' }, :create, [:index, :new, :show, :edit, :update, :destroy])
946
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, :create, [:index, :new, :show, :edit, :update, :destroy])
947
-
948
- assert_not_nil set.named_routes[:products]
949
- end
950
- end
951
-
952
- def test_resource_has_only_update_action_and_named_route
953
- with_routing do |set|
954
- set.draw do |map|
955
- map.resources :products, :only => :update
956
- end
957
-
958
- assert_resource_allowed_routes('products', {}, { :id => '1' }, :update, [:index, :new, :create, :show, :edit, :destroy])
959
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, :update, [:index, :new, :create, :show, :edit, :destroy])
960
-
961
- assert_not_nil set.named_routes[:product]
962
- end
963
- end
964
-
965
- def test_resource_has_only_destroy_action_and_named_route
966
- with_routing do |set|
967
- set.draw do |map|
968
- map.resources :products, :only => :destroy
969
- end
970
-
971
- assert_resource_allowed_routes('products', {}, { :id => '1' }, :destroy, [:index, :new, :create, :show, :edit, :update])
972
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, :destroy, [:index, :new, :create, :show, :edit, :update])
973
-
974
- assert_not_nil set.named_routes[:product]
975
- end
976
- end
977
-
978
- def test_singleton_resource_has_only_create_action_and_named_route
979
- with_routing do |set|
980
- set.draw do |map|
981
- map.resource :account, :only => :create
982
- end
983
-
984
- assert_singleton_resource_allowed_routes('accounts', {}, :create, [:new, :show, :edit, :update, :destroy])
985
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, :create, [:new, :show, :edit, :update, :destroy])
986
-
987
- assert_not_nil set.named_routes[:account]
988
- end
989
- end
990
-
991
- def test_singleton_resource_has_only_update_action_and_named_route
992
- with_routing do |set|
993
- set.draw do |map|
994
- map.resource :account, :only => :update
995
- end
996
-
997
- assert_singleton_resource_allowed_routes('accounts', {}, :update, [:new, :create, :show, :edit, :destroy])
998
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, :update, [:new, :create, :show, :edit, :destroy])
999
-
1000
- assert_not_nil set.named_routes[:account]
1001
- end
1002
- end
1003
-
1004
- def test_singleton_resource_has_only_destroy_action_and_named_route
1005
- with_routing do |set|
1006
- set.draw do |map|
1007
- map.resource :account, :only => :destroy
1008
- end
1009
-
1010
- assert_singleton_resource_allowed_routes('accounts', {}, :destroy, [:new, :create, :show, :edit, :update])
1011
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, :destroy, [:new, :create, :show, :edit, :update])
1012
-
1013
- assert_not_nil set.named_routes[:account]
1014
- end
1015
- end
1016
-
1017
- def test_resource_has_only_collection_action
1018
- with_routing do |set|
1019
- set.draw do |map|
1020
- map.resources :products, :except => :all, :collection => { :sale => :get }
1021
- end
1022
-
1023
- assert_resource_allowed_routes('products', {}, { :id => '1' }, [], [:index, :new, :create, :show, :edit, :update, :destroy])
1024
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, [], [:index, :new, :create, :show, :edit, :update, :destroy])
1025
-
1026
- assert_recognizes({ :controller => 'products', :action => 'sale' }, :path => 'products/sale', :method => :get)
1027
- assert_recognizes({ :controller => 'products', :action => 'sale', :format => 'xml' }, :path => 'products/sale.xml', :method => :get)
1028
- end
1029
- end
1030
-
1031
- def test_resource_has_only_member_action
1032
- with_routing do |set|
1033
- set.draw do |map|
1034
- map.resources :products, :except => :all, :member => { :preview => :get }
1035
- end
1036
-
1037
- assert_resource_allowed_routes('products', {}, { :id => '1' }, [], [:index, :new, :create, :show, :edit, :update, :destroy])
1038
- assert_resource_allowed_routes('products', { :format => 'xml' }, { :id => '1' }, [], [:index, :new, :create, :show, :edit, :update, :destroy])
1039
-
1040
- assert_recognizes({ :controller => 'products', :action => 'preview', :id => '1' }, :path => 'products/1/preview', :method => :get)
1041
- assert_recognizes({ :controller => 'products', :action => 'preview', :id => '1', :format => 'xml' }, :path => 'products/1/preview.xml', :method => :get)
1042
- end
1043
- end
1044
-
1045
- def test_singleton_resource_has_only_member_action
1046
- with_routing do |set|
1047
- set.draw do |map|
1048
- map.resource :account, :except => :all, :member => { :signup => :get }
1049
- end
1050
-
1051
- assert_singleton_resource_allowed_routes('accounts', {}, [], [:new, :create, :show, :edit, :update, :destroy])
1052
- assert_singleton_resource_allowed_routes('accounts', { :format => 'xml' }, [], [:new, :create, :show, :edit, :update, :destroy])
1053
-
1054
- assert_recognizes({ :controller => 'accounts', :action => 'signup' }, :path => 'account/signup', :method => :get)
1055
- assert_recognizes({ :controller => 'accounts', :action => 'signup', :format => 'xml' }, :path => 'account/signup.xml', :method => :get)
1056
- end
1057
- end
1058
-
1059
- def test_nested_resource_has_only_show_and_member_action
1060
- with_routing do |set|
1061
- set.draw do |map|
1062
- map.resources :products, :only => [:index, :show] do |product|
1063
- product.resources :images, :member => { :thumbnail => :get }, :only => :show
1064
- end
1065
- end
1066
-
1067
- assert_resource_allowed_routes('images', { :product_id => '1' }, { :id => '2' }, :show, [:index, :new, :create, :edit, :update, :destroy], 'products/1/images')
1068
- assert_resource_allowed_routes('images', { :product_id => '1', :format => 'xml' }, { :id => '2' }, :show, [:index, :new, :create, :edit, :update, :destroy], 'products/1/images')
1069
-
1070
- assert_recognizes({ :controller => 'images', :action => 'thumbnail', :product_id => '1', :id => '2' }, :path => 'products/1/images/2/thumbnail', :method => :get)
1071
- assert_recognizes({ :controller => 'images', :action => 'thumbnail', :product_id => '1', :id => '2', :format => 'jpg' }, :path => 'products/1/images/2/thumbnail.jpg', :method => :get)
1072
- end
1073
- end
1074
-
1075
- def test_nested_resource_does_not_inherit_only_option
1076
- with_routing do |set|
1077
- set.draw do |map|
1078
- map.resources :products, :only => :show do |product|
1079
- product.resources :images, :except => :destroy
1080
- end
1081
- end
1082
-
1083
- assert_resource_allowed_routes('images', { :product_id => '1' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update], :destroy, 'products/1/images')
1084
- assert_resource_allowed_routes('images', { :product_id => '1', :format => 'xml' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update], :destroy, 'products/1/images')
1085
- end
1086
- end
1087
-
1088
- def test_nested_resource_does_not_inherit_only_option_by_default
1089
- with_routing do |set|
1090
- set.draw do |map|
1091
- map.resources :products, :only => :show do |product|
1092
- product.resources :images
1093
- end
1094
- end
1095
-
1096
- assert_resource_allowed_routes('images', { :product_id => '1' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update, :destory], [], 'products/1/images')
1097
- assert_resource_allowed_routes('images', { :product_id => '1', :format => 'xml' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update, :destroy], [], 'products/1/images')
1098
- end
1099
- end
1100
-
1101
- def test_nested_resource_does_not_inherit_except_option
1102
- with_routing do |set|
1103
- set.draw do |map|
1104
- map.resources :products, :except => :show do |product|
1105
- product.resources :images, :only => :destroy
1106
- end
1107
- end
1108
-
1109
- assert_resource_allowed_routes('images', { :product_id => '1' }, { :id => '2' }, :destroy, [:index, :new, :create, :show, :edit, :update], 'products/1/images')
1110
- assert_resource_allowed_routes('images', { :product_id => '1', :format => 'xml' }, { :id => '2' }, :destroy, [:index, :new, :create, :show, :edit, :update], 'products/1/images')
1111
- end
1112
- end
1113
-
1114
- def test_nested_resource_does_not_inherit_except_option_by_default
1115
- with_routing do |set|
1116
- set.draw do |map|
1117
- map.resources :products, :except => :show do |product|
1118
- product.resources :images
1119
- end
1120
- end
1121
-
1122
- assert_resource_allowed_routes('images', { :product_id => '1' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update, :destroy], [], 'products/1/images')
1123
- assert_resource_allowed_routes('images', { :product_id => '1', :format => 'xml' }, { :id => '2' }, [:index, :new, :create, :show, :edit, :update, :destroy], [], 'products/1/images')
1124
- end
1125
- end
1126
-
1127
- def test_default_singleton_restful_route_uses_get
1128
- with_routing do |set|
1129
- set.draw do |map|
1130
- map.resource :product
1131
- end
1132
-
1133
- assert_equal :get, set.named_routes.routes[:product].conditions[:method]
1134
- end
1135
- end
1136
-
1137
- protected
1138
- def with_restful_routing(*args)
1139
- with_routing do |set|
1140
- set.draw { |map| map.resources(*args) }
1141
- yield
1142
- end
1143
- end
1144
-
1145
- def with_singleton_resources(*args)
1146
- with_routing do |set|
1147
- set.draw { |map| map.resource(*args) }
1148
- yield
1149
- end
1150
- end
1151
-
1152
- # runs assert_restful_routes_for and assert_restful_named_routes for on the controller_name and options, without passing a block.
1153
- def assert_simply_restful_for(controller_name, options = {})
1154
- assert_restful_routes_for controller_name, options
1155
- assert_restful_named_routes_for controller_name, nil, options
1156
- end
1157
-
1158
- def assert_singleton_restful_for(singleton_name, options = {})
1159
- assert_singleton_routes_for singleton_name, options
1160
- assert_singleton_named_routes_for singleton_name, options
1161
- end
1162
-
1163
- def assert_restful_routes_for(controller_name, options = {})
1164
- options[:options] ||= {}
1165
- options[:options][:controller] = options[:controller] || controller_name.to_s
1166
-
1167
- if options[:shallow]
1168
- options[:shallow_options] ||= {}
1169
- options[:shallow_options][:controller] = options[:options][:controller]
1170
- else
1171
- options[:shallow_options] = options[:options]
1172
- end
1173
-
1174
- new_action = ActionController::Base.resources_path_names[:new] || "new"
1175
- edit_action = ActionController::Base.resources_path_names[:edit] || "edit"
1176
- if options[:path_names]
1177
- new_action = options[:path_names][:new] if options[:path_names][:new]
1178
- edit_action = options[:path_names][:edit] if options[:path_names][:edit]
1179
- end
1180
-
1181
- path = "#{options[:as] || controller_name}"
1182
- collection_path = "/#{options[:path_prefix]}#{path}"
1183
- shallow_path = "/#{options[:shallow] ? options[:namespace] : options[:path_prefix]}#{path}"
1184
- member_path = "#{shallow_path}/1"
1185
- new_path = "#{collection_path}/#{new_action}"
1186
- edit_member_path = "#{member_path}/#{edit_action}"
1187
- formatted_edit_member_path = "#{member_path}/#{edit_action}.xml"
1188
-
1189
- with_options(options[:options]) do |controller|
1190
- controller.assert_routing collection_path, :action => 'index'
1191
- controller.assert_routing new_path, :action => 'new'
1192
- controller.assert_routing "#{collection_path}.xml", :action => 'index', :format => 'xml'
1193
- controller.assert_routing "#{new_path}.xml", :action => 'new', :format => 'xml'
1194
- end
1195
-
1196
- with_options(options[:shallow_options]) do |controller|
1197
- controller.assert_routing member_path, :action => 'show', :id => '1'
1198
- controller.assert_routing edit_member_path, :action => 'edit', :id => '1'
1199
- controller.assert_routing "#{member_path}.xml", :action => 'show', :id => '1', :format => 'xml'
1200
- controller.assert_routing formatted_edit_member_path, :action => 'edit', :id => '1', :format => 'xml'
1201
- end
1202
-
1203
- assert_recognizes(options[:options].merge(:action => 'index'), :path => collection_path, :method => :get)
1204
- assert_recognizes(options[:options].merge(:action => 'new'), :path => new_path, :method => :get)
1205
- assert_recognizes(options[:options].merge(:action => 'create'), :path => collection_path, :method => :post)
1206
- assert_recognizes(options[:shallow_options].merge(:action => 'show', :id => '1'), :path => member_path, :method => :get)
1207
- assert_recognizes(options[:shallow_options].merge(:action => 'edit', :id => '1'), :path => edit_member_path, :method => :get)
1208
- assert_recognizes(options[:shallow_options].merge(:action => 'update', :id => '1'), :path => member_path, :method => :put)
1209
- assert_recognizes(options[:shallow_options].merge(:action => 'destroy', :id => '1'), :path => member_path, :method => :delete)
1210
-
1211
- assert_recognizes(options[:options].merge(:action => 'index', :format => 'xml'), :path => "#{collection_path}.xml", :method => :get)
1212
- assert_recognizes(options[:options].merge(:action => 'new', :format => 'xml'), :path => "#{new_path}.xml", :method => :get)
1213
- assert_recognizes(options[:options].merge(:action => 'create', :format => 'xml'), :path => "#{collection_path}.xml", :method => :post)
1214
- assert_recognizes(options[:shallow_options].merge(:action => 'show', :id => '1', :format => 'xml'), :path => "#{member_path}.xml", :method => :get)
1215
- assert_recognizes(options[:shallow_options].merge(:action => 'edit', :id => '1', :format => 'xml'), :path => formatted_edit_member_path, :method => :get)
1216
- assert_recognizes(options[:shallow_options].merge(:action => 'update', :id => '1', :format => 'xml'), :path => "#{member_path}.xml", :method => :put)
1217
- assert_recognizes(options[:shallow_options].merge(:action => 'destroy', :id => '1', :format => 'xml'), :path => "#{member_path}.xml", :method => :delete)
1218
-
1219
- yield options[:options] if block_given?
1220
- end
1221
-
1222
- # test named routes like foo_path and foos_path map to the correct options.
1223
- def assert_restful_named_routes_for(controller_name, singular_name = nil, options = {})
1224
- if singular_name.is_a?(Hash)
1225
- options = singular_name
1226
- singular_name = nil
1227
- end
1228
- singular_name ||= controller_name.to_s.singularize
1229
-
1230
- options[:options] ||= {}
1231
- options[:options][:controller] = options[:controller] || controller_name.to_s
1232
-
1233
- if options[:shallow]
1234
- options[:shallow_options] ||= {}
1235
- options[:shallow_options][:controller] = options[:options][:controller]
1236
- else
1237
- options[:shallow_options] = options[:options]
1238
- end
1239
-
1240
- @controller = "#{options[:options][:controller].camelize}Controller".constantize.new
1241
- @request = ActionController::TestRequest.new
1242
- @response = ActionController::TestResponse.new
1243
- get :index, options[:options]
1244
- options[:options].delete :action
1245
-
1246
- path = "#{options[:as] || controller_name}"
1247
- shallow_path = "/#{options[:shallow] ? options[:namespace] : options[:path_prefix]}#{path}"
1248
- full_path = "/#{options[:path_prefix]}#{path}"
1249
- name_prefix = options[:name_prefix]
1250
- shallow_prefix = options[:shallow] ? options[:namespace].try(:gsub, /\//, '_') : options[:name_prefix]
1251
-
1252
- new_action = "new"
1253
- edit_action = "edit"
1254
- if options[:path_names]
1255
- new_action = options[:path_names][:new] || "new"
1256
- edit_action = options[:path_names][:edit] || "edit"
1257
- end
1258
-
1259
- assert_named_route "#{full_path}", "#{name_prefix}#{controller_name}_path", options[:options]
1260
- assert_named_route "#{full_path}.xml", "#{name_prefix}#{controller_name}_path", options[:options].merge(:format => 'xml')
1261
- assert_named_route "#{shallow_path}/1", "#{shallow_prefix}#{singular_name}_path", options[:shallow_options].merge(:id => '1')
1262
- assert_named_route "#{shallow_path}/1.xml", "#{shallow_prefix}#{singular_name}_path", options[:shallow_options].merge(:id => '1', :format => 'xml')
1263
-
1264
- assert_named_route "#{full_path}/#{new_action}", "new_#{name_prefix}#{singular_name}_path", options[:options]
1265
- assert_named_route "#{full_path}/#{new_action}.xml", "new_#{name_prefix}#{singular_name}_path", options[:options].merge(:format => 'xml')
1266
- assert_named_route "#{shallow_path}/1/#{edit_action}", "edit_#{shallow_prefix}#{singular_name}_path", options[:shallow_options].merge(:id => '1')
1267
- assert_named_route "#{shallow_path}/1/#{edit_action}.xml", "edit_#{shallow_prefix}#{singular_name}_path", options[:shallow_options].merge(:id => '1', :format => 'xml')
1268
-
1269
- yield options[:options] if block_given?
1270
- end
1271
-
1272
- def assert_singleton_routes_for(singleton_name, options = {})
1273
- options[:options] ||= {}
1274
- options[:options][:controller] = options[:controller] || singleton_name.to_s.pluralize
1275
-
1276
- full_path = "/#{options[:path_prefix]}#{options[:as] || singleton_name}"
1277
- new_path = "#{full_path}/new"
1278
- edit_path = "#{full_path}/edit"
1279
- formatted_edit_path = "#{full_path}/edit.xml"
1280
-
1281
- with_options options[:options] do |controller|
1282
- controller.assert_routing full_path, :action => 'show'
1283
- controller.assert_routing new_path, :action => 'new'
1284
- controller.assert_routing edit_path, :action => 'edit'
1285
- controller.assert_routing "#{full_path}.xml", :action => 'show', :format => 'xml'
1286
- controller.assert_routing "#{new_path}.xml", :action => 'new', :format => 'xml'
1287
- controller.assert_routing formatted_edit_path, :action => 'edit', :format => 'xml'
1288
- end
1289
-
1290
- assert_recognizes(options[:options].merge(:action => 'show'), :path => full_path, :method => :get)
1291
- assert_recognizes(options[:options].merge(:action => 'new'), :path => new_path, :method => :get)
1292
- assert_recognizes(options[:options].merge(:action => 'edit'), :path => edit_path, :method => :get)
1293
- assert_recognizes(options[:options].merge(:action => 'create'), :path => full_path, :method => :post)
1294
- assert_recognizes(options[:options].merge(:action => 'update'), :path => full_path, :method => :put)
1295
- assert_recognizes(options[:options].merge(:action => 'destroy'), :path => full_path, :method => :delete)
1296
-
1297
- assert_recognizes(options[:options].merge(:action => 'show', :format => 'xml'), :path => "#{full_path}.xml", :method => :get)
1298
- assert_recognizes(options[:options].merge(:action => 'new', :format => 'xml'), :path => "#{new_path}.xml", :method => :get)
1299
- assert_recognizes(options[:options].merge(:action => 'edit', :format => 'xml'), :path => formatted_edit_path, :method => :get)
1300
- assert_recognizes(options[:options].merge(:action => 'create', :format => 'xml'), :path => "#{full_path}.xml", :method => :post)
1301
- assert_recognizes(options[:options].merge(:action => 'update', :format => 'xml'), :path => "#{full_path}.xml", :method => :put)
1302
- assert_recognizes(options[:options].merge(:action => 'destroy', :format => 'xml'), :path => "#{full_path}.xml", :method => :delete)
1303
-
1304
- yield options[:options] if block_given?
1305
- end
1306
-
1307
- def assert_singleton_named_routes_for(singleton_name, options = {})
1308
- (options[:options] ||= {})[:controller] ||= singleton_name.to_s.pluralize
1309
- @controller = "#{options[:options][:controller].camelize}Controller".constantize.new
1310
- @request = ActionController::TestRequest.new
1311
- @response = ActionController::TestResponse.new
1312
- get :show, options[:options]
1313
- options[:options].delete :action
1314
-
1315
- full_path = "/#{options[:path_prefix]}#{options[:as] || singleton_name}"
1316
- name_prefix = options[:name_prefix]
1317
-
1318
- assert_named_route "#{full_path}", "#{name_prefix}#{singleton_name}_path", options[:options]
1319
- assert_named_route "#{full_path}.xml", "#{name_prefix}#{singleton_name}_path", options[:options].merge(:format => 'xml')
1320
-
1321
- assert_named_route "#{full_path}/new", "new_#{name_prefix}#{singleton_name}_path", options[:options]
1322
- assert_named_route "#{full_path}/new.xml", "new_#{name_prefix}#{singleton_name}_path", options[:options].merge(:format => 'xml')
1323
- assert_named_route "#{full_path}/edit", "edit_#{name_prefix}#{singleton_name}_path", options[:options]
1324
- assert_named_route "#{full_path}/edit.xml", "edit_#{name_prefix}#{singleton_name}_path", options[:options].merge(:format => 'xml')
1325
- end
1326
-
1327
- def assert_named_route(expected, route, options)
1328
- actual = @controller.send(route, options) rescue $!.class.name
1329
- assert_equal expected, actual, "Error on route: #{route}(#{options.inspect})"
1330
- end
1331
-
1332
- def assert_resource_methods(expected, resource, action_method, method)
1333
- assert_equal expected.length, resource.send("#{action_method}_methods")[method].size, "#{resource.send("#{action_method}_methods")[method].inspect}"
1334
- expected.each do |action|
1335
- assert resource.send("#{action_method}_methods")[method].include?(action),
1336
- "#{method} not in #{action_method} methods: #{resource.send("#{action_method}_methods")[method].inspect}"
1337
- end
1338
- end
1339
-
1340
- def assert_resource_allowed_routes(controller, options, shallow_options, allowed, not_allowed, path = controller)
1341
- shallow_path = "#{path}/#{shallow_options[:id]}"
1342
- format = options[:format] && ".#{options[:format]}"
1343
- options.merge!(:controller => controller)
1344
- shallow_options.merge!(options)
1345
-
1346
- assert_whether_allowed(allowed, not_allowed, options, 'index', "#{path}#{format}", :get)
1347
- assert_whether_allowed(allowed, not_allowed, options, 'new', "#{path}/new#{format}", :get)
1348
- assert_whether_allowed(allowed, not_allowed, options, 'create', "#{path}#{format}", :post)
1349
- assert_whether_allowed(allowed, not_allowed, shallow_options, 'show', "#{shallow_path}#{format}", :get)
1350
- assert_whether_allowed(allowed, not_allowed, shallow_options, 'edit', "#{shallow_path}/edit#{format}", :get)
1351
- assert_whether_allowed(allowed, not_allowed, shallow_options, 'update', "#{shallow_path}#{format}", :put)
1352
- assert_whether_allowed(allowed, not_allowed, shallow_options, 'destroy', "#{shallow_path}#{format}", :delete)
1353
- end
1354
-
1355
- def assert_singleton_resource_allowed_routes(controller, options, allowed, not_allowed, path = controller.singularize)
1356
- format = options[:format] && ".#{options[:format]}"
1357
- options.merge!(:controller => controller)
1358
-
1359
- assert_whether_allowed(allowed, not_allowed, options, 'new', "#{path}/new#{format}", :get)
1360
- assert_whether_allowed(allowed, not_allowed, options, 'create', "#{path}#{format}", :post)
1361
- assert_whether_allowed(allowed, not_allowed, options, 'show', "#{path}#{format}", :get)
1362
- assert_whether_allowed(allowed, not_allowed, options, 'edit', "#{path}/edit#{format}", :get)
1363
- assert_whether_allowed(allowed, not_allowed, options, 'update', "#{path}#{format}", :put)
1364
- assert_whether_allowed(allowed, not_allowed, options, 'destroy', "#{path}#{format}", :delete)
1365
- end
1366
-
1367
- def assert_whether_allowed(allowed, not_allowed, options, action, path, method)
1368
- action = action.to_sym
1369
- options = options.merge(:action => action.to_s)
1370
- path_options = { :path => path, :method => method }
1371
-
1372
- if Array(allowed).include?(action)
1373
- assert_recognizes options, path_options
1374
- elsif Array(not_allowed).include?(action)
1375
- assert_not_recognizes options, path_options
1376
- end
1377
- end
1378
-
1379
- def assert_not_recognizes(expected_options, path)
1380
- assert_raise ActionController::RoutingError, ActionController::MethodNotAllowed, Assertion do
1381
- assert_recognizes(expected_options, path)
1382
- end
1383
- end
1384
-
1385
- def distinct_routes? (r1, r2)
1386
- if r1.conditions == r2.conditions and r1.requirements == r2.requirements then
1387
- if r1.segments.collect(&:to_s) == r2.segments.collect(&:to_s) then
1388
- return false
1389
- end
1390
- end
1391
- true
1392
- end
1393
- end