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,90 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class ScriptaculousHelperTest < ActionView::TestCase
4
- tests ActionView::Helpers::ScriptaculousHelper
5
-
6
- def setup
7
- @controller = Class.new do
8
- def url_for(options)
9
- url = "http://www.example.com/"
10
- url << options[:action].to_s if options and options[:action]
11
- url
12
- end
13
- end.new
14
- end
15
-
16
- def test_effect
17
- assert_equal "new Effect.Highlight(\"posts\",{});", visual_effect(:highlight, "posts")
18
- assert_equal "new Effect.Highlight(\"posts\",{});", visual_effect("highlight", :posts)
19
- assert_equal "new Effect.Highlight(\"posts\",{});", visual_effect(:highlight, :posts)
20
- assert_equal "new Effect.Fade(\"fademe\",{duration:4.0});", visual_effect(:fade, "fademe", :duration => 4.0)
21
- assert_equal "new Effect.Shake(element,{});", visual_effect(:shake)
22
- assert_equal "new Effect.DropOut(\"dropme\",{queue:'end'});", visual_effect(:drop_out, 'dropme', :queue => :end)
23
- assert_equal "new Effect.Highlight(\"status\",{endcolor:'#EEEEEE'});", visual_effect(:highlight, 'status', :endcolor => '#EEEEEE')
24
- assert_equal "new Effect.Highlight(\"status\",{restorecolor:'#500000', startcolor:'#FEFEFE'});", visual_effect(:highlight, 'status', :restorecolor => '#500000', :startcolor => '#FEFEFE')
25
-
26
- # chop the queue params into a comma separated list
27
- beginning, ending = 'new Effect.DropOut("dropme",{queue:{', '}});'
28
- ve = [
29
- visual_effect(:drop_out, 'dropme', :queue => {:position => "end", :scope => "test", :limit => 2}),
30
- visual_effect(:drop_out, 'dropme', :queue => {:scope => :list, :limit => 2}),
31
- visual_effect(:drop_out, 'dropme', :queue => {:position => :end, :scope => :test, :limit => 2})
32
- ].collect { |v| v[beginning.length..-ending.length-1].split(',') }
33
-
34
- assert ve[0].include?("limit:2")
35
- assert ve[0].include?("scope:'test'")
36
- assert ve[0].include?("position:'end'")
37
-
38
- assert ve[1].include?("limit:2")
39
- assert ve[1].include?("scope:'list'")
40
-
41
- assert ve[2].include?("limit:2")
42
- assert ve[2].include?("scope:'test'")
43
- assert ve[2].include?("position:'end'")
44
- end
45
-
46
- def test_toggle_effects
47
- assert_equal "Effect.toggle(\"posts\",'appear',{});", visual_effect(:toggle_appear, "posts")
48
- assert_equal "Effect.toggle(\"posts\",'slide',{});", visual_effect(:toggle_slide, "posts")
49
- assert_equal "Effect.toggle(\"posts\",'blind',{});", visual_effect(:toggle_blind, "posts")
50
- assert_equal "Effect.toggle(\"posts\",'appear',{});", visual_effect("toggle_appear", "posts")
51
- assert_equal "Effect.toggle(\"posts\",'slide',{});", visual_effect("toggle_slide", "posts")
52
- assert_equal "Effect.toggle(\"posts\",'blind',{});", visual_effect("toggle_blind", "posts")
53
- end
54
-
55
-
56
- def test_sortable_element
57
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
58
- sortable_element("mylist", :url => { :action => "order" })
59
- assert_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}, tag:'div'})\n//]]>\n</script>),
60
- sortable_element("mylist", :tag => "div", :constraint => "horizontal", :url => { :action => "order" })
61
- assert_dom_equal %|<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:['list1','list2'], onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>|,
62
- sortable_element("mylist", :containment => ['list1','list2'], :constraint => "horizontal", :url => { :action => "order" })
63
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:'list1', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
64
- sortable_element("mylist", :containment => 'list1', :constraint => "horizontal", :url => { :action => "order" })
65
- end
66
-
67
- def test_draggable_element
68
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Draggable(\"product_13\", {})\n//]]>\n</script>),
69
- draggable_element("product_13")
70
- assert_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Draggable(\"product_13\", {revert:true})\n//]]>\n</script>),
71
- draggable_element("product_13", :revert => true)
72
- end
73
-
74
- def test_drop_receiving_element
75
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
76
- drop_receiving_element("droptarget1")
77
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
78
- drop_receiving_element("droptarget1", :accept => 'products')
79
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
80
- drop_receiving_element("droptarget1", :accept => 'products', :update => 'infobox')
81
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:['tshirts','mugs'], onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
82
- drop_receiving_element("droptarget1", :accept => ['tshirts','mugs'], :update => 'infobox')
83
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add("droptarget1", {hoverclass:'dropready', onDrop:function(element){if (confirm('Are you sure?')) { new Ajax.Request('http://www.example.com/update_drop', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)}); }}})\n//]]>\n</script>),
84
- drop_receiving_element('droptarget1', :hoverclass=>'dropready', :url=>{:action=>'update_drop'}, :confirm => 'Are you sure?')
85
-
86
- end
87
- def protect_against_forgery?
88
- false
89
- end
90
- end
@@ -1,98 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class TagHelperTest < ActionView::TestCase
4
- tests ActionView::Helpers::TagHelper
5
-
6
- def test_tag
7
- assert_equal "<br />", tag("br")
8
- assert_equal "<br clear=\"left\" />", tag(:br, :clear => "left")
9
- assert_equal "<br>", tag("br", nil, true)
10
- end
11
-
12
- def test_tag_options
13
- str = tag("p", "class" => "show", :class => "elsewhere")
14
- assert_match /class="show"/, str
15
- assert_match /class="elsewhere"/, str
16
- end
17
-
18
- def test_tag_options_rejects_nil_option
19
- assert_equal "<p />", tag("p", :ignored => nil)
20
- end
21
-
22
- def test_tag_options_accepts_false_option
23
- assert_equal "<p value=\"false\" />", tag("p", :value => false)
24
- end
25
-
26
- def test_tag_options_accepts_blank_option
27
- assert_equal "<p included=\"\" />", tag("p", :included => '')
28
- end
29
-
30
- def test_tag_options_converts_boolean_option
31
- assert_equal '<p disabled="disabled" multiple="multiple" readonly="readonly" />',
32
- tag("p", :disabled => true, :multiple => true, :readonly => true)
33
- end
34
-
35
- def test_content_tag
36
- assert_equal "<a href=\"create\">Create</a>", content_tag("a", "Create", "href" => "create")
37
- assert content_tag("a", "Create", "href" => "create").html_safe?
38
- assert_equal content_tag("a", "Create", "href" => "create"),
39
- content_tag("a", "Create", :href => "create")
40
- end
41
-
42
- def test_content_tag_with_block_in_erb
43
- __in_erb_template = ''
44
- content_tag(:div) { concat "Hello world!" }
45
- assert_dom_equal "<div>Hello world!</div>", output_buffer
46
- end
47
-
48
- def test_content_tag_with_block_and_options_in_erb
49
- __in_erb_template = ''
50
- content_tag(:div, :class => "green") { concat "Hello world!" }
51
- assert_dom_equal %(<div class="green">Hello world!</div>), output_buffer
52
- end
53
-
54
- def test_content_tag_with_block_and_options_out_of_erb
55
- assert_dom_equal %(<div class="green">Hello world!</div>), content_tag(:div, :class => "green") { "Hello world!" }
56
- end
57
-
58
- def test_content_tag_with_block_and_options_outside_out_of_erb
59
- assert_equal content_tag("a", "Create", :href => "create"),
60
- content_tag("a", "href" => "create") { "Create" }
61
- end
62
-
63
- def test_content_tag_nested_in_content_tag_out_of_erb
64
- assert_equal content_tag("p", content_tag("b", "Hello")),
65
- content_tag("p") { content_tag("b", "Hello") },
66
- output_buffer
67
- end
68
-
69
- def test_content_tag_nested_in_content_tag_in_erb
70
- __in_erb_template = true
71
- content_tag("p") { concat content_tag("b", "Hello") }
72
- assert_equal '<p><b>Hello</b></p>', output_buffer
73
- end
74
-
75
- def test_cdata_section
76
- assert_equal "<![CDATA[<hello world>]]>", cdata_section("<hello world>")
77
- end
78
-
79
- def test_escape_once
80
- assert_equal '1 &lt; 2 &amp; 3', escape_once('1 < 2 &amp; 3')
81
- end
82
-
83
- def test_double_escaping_attributes
84
- ['1&amp;2', '1 &lt; 2', '&#8220;test&#8220;'].each do |escaped|
85
- assert_equal %(<a href="#{escaped}" />), tag('a', :href => escaped)
86
- end
87
- end
88
-
89
- def test_skip_invalid_escaped_attributes
90
- ['&1;', '&#1dfa3;', '& #123;'].each do |escaped|
91
- assert_equal %(<a href="#{escaped.gsub /&/, '&amp;'}" />), tag('a', :href => escaped)
92
- end
93
- end
94
-
95
- def test_disable_escaping
96
- assert_equal '<a href="&amp;" />', tag('a', { :href => '&amp;' }, false, false)
97
- end
98
- end
@@ -1,32 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class TemplateTest < Test::Unit::TestCase
4
- def test_template_path_parsing
5
- with_options :base_path => nil, :name => 'abc', :locale => nil, :format => 'html', :extension => 'erb' do |t|
6
- t.assert_parses_template_path 'abc.en.html.erb', :locale => 'en'
7
- t.assert_parses_template_path 'abc.en.plain.html.erb', :locale => 'en', :format => 'plain.html'
8
- t.assert_parses_template_path 'abc.html.erb'
9
- t.assert_parses_template_path 'abc.plain.html.erb', :format => 'plain.html'
10
- t.assert_parses_template_path 'abc.erb', :format => nil
11
- t.assert_parses_template_path 'abc.html', :extension => nil
12
-
13
- t.assert_parses_template_path '_abc.html.erb', :name => '_abc'
14
-
15
- t.assert_parses_template_path 'test/abc.html.erb', :base_path => 'test'
16
- t.assert_parses_template_path './test/abc.html.erb', :base_path => './test'
17
- t.assert_parses_template_path '../test/abc.html.erb', :base_path => '../test'
18
-
19
- t.assert_parses_template_path 'abc', :extension => nil, :format => nil, :name => nil
20
- t.assert_parses_template_path 'abc.xxx', :extension => nil, :format => 'xxx', :name => 'abc'
21
- t.assert_parses_template_path 'abc.html.xxx', :extension => nil, :format => 'xxx', :name => 'abc'
22
- end
23
- end
24
-
25
- private
26
- def assert_parses_template_path(path, parse_results)
27
- template = ActionView::Template.new(path, '')
28
- parse_results.each_pair do |k, v|
29
- assert_block(%Q{Expected template to parse #{k.inspect} from "#{path}" as #{v.inspect}, but got #{template.send(k).inspect}}) { v == template.send(k) }
30
- end
31
- end
32
- end
@@ -1,54 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- module PeopleHelper
4
- def title(text)
5
- content_tag(:h1, text)
6
- end
7
-
8
- def homepage_path
9
- people_path
10
- end
11
-
12
- def homepage_url
13
- people_url
14
- end
15
-
16
- def link_to_person(person)
17
- link_to person.name, person
18
- end
19
- end
20
-
21
- class PeopleHelperTest < ActionView::TestCase
22
- def setup
23
- ActionController::Routing::Routes.draw do |map|
24
- map.people 'people', :controller => 'people', :action => 'index'
25
- map.connect ':controller/:action/:id'
26
- end
27
- end
28
-
29
- def test_title
30
- assert_equal "<h1>Ruby on Rails</h1>", title("Ruby on Rails")
31
- end
32
-
33
- def test_homepage_path
34
- assert_equal "/people", homepage_path
35
- end
36
-
37
- def test_homepage_url
38
- assert_equal "http://test.host/people", homepage_url
39
- end
40
-
41
- def test_link_to_person
42
- person = mock(:name => "David")
43
- expects(:mocha_mock_path).with(person).returns("/people/1")
44
- assert_equal '<a href="/people/1">David</a>', link_to_person(person)
45
- end
46
- end
47
-
48
- class CrazyHelperTest < ActionView::TestCase
49
- tests PeopleHelper
50
-
51
- def test_helper_class_can_be_set_manually_not_just_inferred
52
- assert_equal PeopleHelper, self.class.helper_class
53
- end
54
- end
@@ -1,601 +0,0 @@
1
- # encoding: us-ascii
2
- require 'abstract_unit'
3
- require 'testing_sandbox'
4
- begin
5
- require 'redcloth'
6
- rescue LoadError
7
- $stderr.puts "Skipping textilize tests. `gem install RedCloth` to enable."
8
- end
9
-
10
- class TextHelperTest < ActionView::TestCase
11
- tests ActionView::Helpers::TextHelper
12
- include TestingSandbox
13
-
14
- def setup
15
- # This simulates the fact that instance variables are reset every time
16
- # a view is rendered. The cycle helper depends on this behavior.
17
- @_cycles = nil if (defined? @_cycles)
18
- end
19
-
20
- def test_concat
21
- self.output_buffer = ActiveSupport::SafeBuffer.new('foo')
22
- assert_equal 'foobar', concat('bar')
23
- assert_equal 'foobar', output_buffer
24
- end
25
-
26
- def test_simple_format
27
- assert_equal "<p></p>", simple_format(nil)
28
-
29
- assert_equal "<p>crazy\n<br /> cross\n<br /> platform linebreaks</p>", simple_format("crazy\r\n cross\r platform linebreaks")
30
- assert_equal "<p>A paragraph</p>\n\n<p>and another one!</p>", simple_format("A paragraph\n\nand another one!")
31
- assert_equal "<p>A paragraph\n<br /> With a newline</p>", simple_format("A paragraph\n With a newline")
32
-
33
- text = "A\nB\nC\nD".freeze
34
- assert_equal "<p>A\n<br />B\n<br />C\n<br />D</p>", simple_format(text)
35
-
36
- text = "A\r\n \nB\n\n\r\n\t\nC\nD".freeze
37
- assert_equal "<p>A\n<br /> \n<br />B</p>\n\n<p>\t\n<br />C\n<br />D</p>", simple_format(text)
38
-
39
- assert_equal %q(<p class="test">This is a classy test</p>), simple_format("This is a classy test", :class => 'test')
40
- assert_equal %Q(<p class="test">para 1</p>\n\n<p class="test">para 2</p>), simple_format("para 1\n\npara 2", :class => 'test')
41
- end
42
-
43
- def test_simple_format_should_be_html_safe
44
- assert simple_format("<b> test with html tags </b>").html_safe?
45
- end
46
-
47
- def test_simple_format_should_not_escape_safe_input
48
- assert_equal "<p><b> test with safe string </b></p>", simple_format("<b> test with safe string </b>".html_safe)
49
- end
50
-
51
- def test_truncate
52
- assert_equal "Hello World!", truncate("Hello World!", :length => 12)
53
- assert_equal "Hello Wor...", truncate("Hello World!!", :length => 12)
54
- end
55
-
56
- def test_truncate_should_use_default_length_of_30
57
- str = "This is a string that will go longer then the default truncate length of 30"
58
- assert_equal str[0...27] + "...", truncate(str)
59
- end
60
-
61
- def test_truncate_with_options_hash
62
- assert_equal "This is a string that wil[...]", truncate("This is a string that will go longer then the default truncate length of 30", :omission => "[...]")
63
- assert_equal "Hello W...", truncate("Hello World!", :length => 10)
64
- assert_equal "Hello[...]", truncate("Hello World!", :omission => "[...]", :length => 10)
65
- end
66
-
67
- if RUBY_VERSION < '1.9.0'
68
- def test_truncate_multibyte
69
- with_kcode 'none' do
70
- assert_equal "\354\225\210\353\205\225\355...", truncate("\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224", :length => 10)
71
- end
72
- with_kcode 'u' do
73
- assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 ...",
74
- truncate("\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244", :length => 10)
75
- end
76
- end
77
- else
78
- def test_truncate_multibyte
79
- assert_equal "\354\225\210\353\205\225\355...",
80
- truncate("\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224", :length => 10)
81
-
82
- assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 ...".force_encoding('UTF-8'),
83
- truncate("\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244".force_encoding('UTF-8'), :length => 10)
84
- end
85
- end
86
-
87
- def test_highlighter
88
- assert_equal(
89
- "This is a <strong class=\"highlight\">beautiful</strong> morning",
90
- highlight("This is a beautiful morning", "beautiful")
91
- )
92
-
93
- assert_equal(
94
- "This is a <strong class=\"highlight\">beautiful</strong> morning, but also a <strong class=\"highlight\">beautiful</strong> day",
95
- highlight("This is a beautiful morning, but also a beautiful day", "beautiful")
96
- )
97
-
98
- assert_equal(
99
- "This is a <b>beautiful</b> morning, but also a <b>beautiful</b> day",
100
- highlight("This is a beautiful morning, but also a beautiful day", "beautiful", '<b>\1</b>')
101
- )
102
-
103
- assert_equal(
104
- "This text is not changed because we supplied an empty phrase",
105
- highlight("This text is not changed because we supplied an empty phrase", nil)
106
- )
107
-
108
- assert_equal ' ', highlight(' ', 'blank text is returned verbatim')
109
- end
110
-
111
- def test_highlight_with_regexp
112
- assert_equal(
113
- "This is a <strong class=\"highlight\">beautiful!</strong> morning",
114
- highlight("This is a beautiful! morning", "beautiful!")
115
- )
116
-
117
- assert_equal(
118
- "This is a <strong class=\"highlight\">beautiful! morning</strong>",
119
- highlight("This is a beautiful! morning", "beautiful! morning")
120
- )
121
-
122
- assert_equal(
123
- "This is a <strong class=\"highlight\">beautiful? morning</strong>",
124
- highlight("This is a beautiful? morning", "beautiful? morning")
125
- )
126
- end
127
-
128
- def test_highlight_with_multiple_phrases_in_one_pass
129
- assert_equal %(<em>wow</em> <em>em</em>), highlight('wow em', %w(wow em), '<em>\1</em>')
130
- end
131
-
132
- def test_highlight_with_options_hash
133
- assert_equal(
134
- "This is a <b>beautiful</b> morning, but also a <b>beautiful</b> day",
135
- highlight("This is a beautiful morning, but also a beautiful day", "beautiful", :highlighter => '<b>\1</b>')
136
- )
137
- end
138
-
139
- def test_highlight_with_html
140
- assert_equal(
141
- "<p>This is a <strong class=\"highlight\">beautiful</strong> morning, but also a <strong class=\"highlight\">beautiful</strong> day</p>",
142
- highlight("<p>This is a beautiful morning, but also a beautiful day</p>", "beautiful")
143
- )
144
- assert_equal(
145
- "<p>This is a <em><strong class=\"highlight\">beautiful</strong></em> morning, but also a <strong class=\"highlight\">beautiful</strong> day</p>",
146
- highlight("<p>This is a <em>beautiful</em> morning, but also a beautiful day</p>", "beautiful")
147
- )
148
- assert_equal(
149
- "<p>This is a <em class=\"error\"><strong class=\"highlight\">beautiful</strong></em> morning, but also a <strong class=\"highlight\">beautiful</strong> <span class=\"last\">day</span></p>",
150
- highlight("<p>This is a <em class=\"error\">beautiful</em> morning, but also a beautiful <span class=\"last\">day</span></p>", "beautiful")
151
- )
152
- assert_equal(
153
- "<p class=\"beautiful\">This is a <strong class=\"highlight\">beautiful</strong> morning, but also a <strong class=\"highlight\">beautiful</strong> day</p>",
154
- highlight("<p class=\"beautiful\">This is a beautiful morning, but also a beautiful day</p>", "beautiful")
155
- )
156
- assert_equal(
157
- "<p>This is a <strong class=\"highlight\">beautiful</strong> <a href=\"http://example.com/beautiful\#top?what=beautiful%20morning&when=now+then\">morning</a>, but also a <strong class=\"highlight\">beautiful</strong> day</p>",
158
- highlight("<p>This is a beautiful <a href=\"http://example.com/beautiful\#top?what=beautiful%20morning&when=now+then\">morning</a>, but also a beautiful day</p>", "beautiful")
159
- )
160
- end
161
-
162
- def test_excerpt
163
- assert_equal("...is a beautiful morn...", excerpt("This is a beautiful morning", "beautiful", 5))
164
- assert_equal("This is a...", excerpt("This is a beautiful morning", "this", 5))
165
- assert_equal("...iful morning", excerpt("This is a beautiful morning", "morning", 5))
166
- assert_nil excerpt("This is a beautiful morning", "day")
167
- end
168
-
169
- def test_excerpt_in_borderline_cases
170
- assert_equal("", excerpt("", "", 0))
171
- assert_equal("a", excerpt("a", "a", 0))
172
- assert_equal("...b...", excerpt("abc", "b", 0))
173
- assert_equal("abc", excerpt("abc", "b", 1))
174
- assert_equal("abc...", excerpt("abcd", "b", 1))
175
- assert_equal("...abc", excerpt("zabc", "b", 1))
176
- assert_equal("...abc...", excerpt("zabcd", "b", 1))
177
- assert_equal("zabcd", excerpt("zabcd", "b", 2))
178
-
179
- # excerpt strips the resulting string before ap-/prepending excerpt_string.
180
- # whether this behavior is meaningful when excerpt_string is not to be
181
- # appended is questionable.
182
- assert_equal("zabcd", excerpt(" zabcd ", "b", 4))
183
- assert_equal("...abc...", excerpt("z abc d", "b", 1))
184
- end
185
-
186
- def test_excerpt_with_regex
187
- assert_equal('...is a beautiful! mor...', excerpt('This is a beautiful! morning', 'beautiful', 5))
188
- assert_equal('...is a beautiful? mor...', excerpt('This is a beautiful? morning', 'beautiful', 5))
189
- end
190
-
191
- def test_excerpt_with_options_hash
192
- assert_equal("...is a beautiful morn...", excerpt("This is a beautiful morning", "beautiful", :radius => 5))
193
- assert_equal("[...]is a beautiful morn[...]", excerpt("This is a beautiful morning", "beautiful", :omission => "[...]",:radius => 5))
194
- assert_equal(
195
- "This is the ultimate supercalifragilisticexpialidoceous very looooooooooooooooooong looooooooooooong beautiful morning with amazing sunshine and awesome tempera[...]",
196
- excerpt("This is the ultimate supercalifragilisticexpialidoceous very looooooooooooooooooong looooooooooooong beautiful morning with amazing sunshine and awesome temperatures. So what are you gonna do about it?", "very",
197
- :omission => "[...]")
198
- )
199
- end
200
-
201
- if RUBY_VERSION < '1.9'
202
- def test_excerpt_with_utf8
203
- with_kcode('u') do
204
- assert_equal("...\357\254\203ciency could not be...", excerpt("That's why e\357\254\203ciency could not be helped", 'could', 8))
205
- end
206
- with_kcode('none') do
207
- assert_equal("...\203ciency could not be...", excerpt("That's why e\357\254\203ciency could not be helped", 'could', 8))
208
- end
209
- end
210
- else
211
- def test_excerpt_with_utf8
212
- assert_equal("...\357\254\203ciency could not be...".force_encoding('UTF-8'), excerpt("That's why e\357\254\203ciency could not be helped".force_encoding('UTF-8'), 'could', 8))
213
- assert_equal("...\203ciency could not be...", excerpt("That's why e\357\254\203ciency could not be helped", 'could', 8))
214
- end
215
- end
216
-
217
- def test_word_wrap
218
- assert_equal("my very very\nvery long\nstring", word_wrap("my very very very long string", 15))
219
- end
220
-
221
- def test_word_wrap_with_extra_newlines
222
- assert_equal("my very very\nvery long\nstring\n\nwith another\nline", word_wrap("my very very very long string\n\nwith another line", 15))
223
- end
224
-
225
- def test_word_wrap_with_options_hash
226
- assert_equal("my very very\nvery long\nstring", word_wrap("my very very very long string", :line_width => 15))
227
- end
228
-
229
- def test_pluralization
230
- assert_equal("1 count", pluralize(1, "count"))
231
- assert_equal("2 counts", pluralize(2, "count"))
232
- assert_equal("1 count", pluralize('1', "count"))
233
- assert_equal("2 counts", pluralize('2', "count"))
234
- assert_equal("1,066 counts", pluralize('1,066', "count"))
235
- assert_equal("1.25 counts", pluralize('1.25', "count"))
236
- assert_equal("1.0 count", pluralize('1.0', "count"))
237
- assert_equal("1.00 count", pluralize('1.00', "count"))
238
- assert_equal("2 counters", pluralize(2, "count", "counters"))
239
- assert_equal("0 counters", pluralize(nil, "count", "counters"))
240
- assert_equal("2 people", pluralize(2, "person"))
241
- assert_equal("10 buffaloes", pluralize(10, "buffalo"))
242
- assert_equal("1 berry", pluralize(1, "berry"))
243
- assert_equal("12 berries", pluralize(12, "berry"))
244
- end
245
-
246
- def test_auto_link_parsing
247
- urls = %w(
248
- http://www.rubyonrails.com
249
- http://www.rubyonrails.com:80
250
- http://www.rubyonrails.com/~minam
251
- https://www.rubyonrails.com/~minam
252
- http://www.rubyonrails.com/~minam/url%20with%20spaces
253
- http://www.rubyonrails.com/foo.cgi?something=here
254
- http://www.rubyonrails.com/foo.cgi?something=here&and=here
255
- http://www.rubyonrails.com/contact;new
256
- http://www.rubyonrails.com/contact;new%20with%20spaces
257
- http://www.rubyonrails.com/contact;new?with=query&string=params
258
- http://www.rubyonrails.com/~minam/contact;new?with=query&string=params
259
- http://en.wikipedia.org/wiki/Wikipedia:Today%27s_featured_picture_%28animation%29/January_20%2C_2007
260
- http://www.mail-archive.com/rails@lists.rubyonrails.org/
261
- http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1198861734&sr=8-1
262
- https://www.google.com/doku.php?id=gps:resource:scs:start
263
- http://connect.oraclecorp.com/search?search[q]=green+france&search[type]=Group
264
- http://of.openfoundry.org/projects/492/download#4th.Release.3
265
- http://maps.google.co.uk/maps?f=q&q=the+london+eye&ie=UTF8&ll=51.503373,-0.11939&spn=0.007052,0.012767&z=16&iwloc=A
266
- )
267
-
268
- urls.each do |url|
269
- assert_equal generate_result(url), auto_link(url)
270
- end
271
-
272
- assert_equal(
273
- %{<a href="http://en.wikipedia.org/wiki/Texas_hold'em">http://en.wikipedia.org/wiki/Texas_hold&#39;em</a>},
274
- auto_link("http://en.wikipedia.org/wiki/Texas_hold'em")
275
- )
276
- end
277
-
278
- def generate_result(link_text, href = nil)
279
- href ||= link_text
280
- %{<a href="#{CGI::escapeHTML href}">#{CGI::escapeHTML link_text}</a>}
281
- end
282
-
283
- def test_auto_linking
284
- email_raw = 'david@loudthinking.com'
285
- email_result = %{<a href="mailto:#{email_raw}">#{email_raw}</a>}
286
- link_raw = 'http://www.rubyonrails.com'
287
- link_result = generate_result(link_raw)
288
- link_result_with_options = %{<a href="#{link_raw}" target="_blank">#{link_raw}</a>}
289
-
290
- assert_equal '', auto_link(nil)
291
- assert_equal '', auto_link('')
292
- assert_equal "#{link_result} #{link_result} #{link_result}", auto_link("#{link_raw} #{link_raw} #{link_raw}")
293
-
294
- assert_equal %(hello #{email_result}), auto_link("hello #{email_raw}", :email_addresses)
295
- assert_equal %(Go to #{link_result}), auto_link("Go to #{link_raw}", :urls)
296
- assert_equal %(Go to #{link_raw}), auto_link("Go to #{link_raw}", :email_addresses)
297
- assert_equal %(Go to #{link_result} and say hello to #{email_result}), auto_link("Go to #{link_raw} and say hello to #{email_raw}")
298
- assert_equal %(<p>Link #{link_result}</p>), auto_link("<p>Link #{link_raw}</p>")
299
- assert_equal %(<p>#{link_result} Link</p>), auto_link("<p>#{link_raw} Link</p>")
300
- assert_equal %(<p>Link #{link_result_with_options}</p>), auto_link("<p>Link #{link_raw}</p>", :all, {:target => "_blank"})
301
- assert_equal %(Go to #{link_result}.), auto_link(%(Go to #{link_raw}.))
302
- assert_equal %(<p>Go to #{link_result}, then say hello to #{email_result}.</p>), auto_link(%(<p>Go to #{link_raw}, then say hello to #{email_raw}.</p>))
303
- assert_equal %(#{link_result} #{link_result}), auto_link(%(#{link_result} #{link_raw}))
304
-
305
- email2_raw = '+david@loudthinking.com'
306
- email2_result = %{<a href="mailto:#{email2_raw}">#{email2_raw}</a>}
307
- assert_equal email2_result, auto_link(email2_raw)
308
-
309
- email3_raw = '+david@loudthinking.com'
310
- email3_result = %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;+%64%61%76%69%64@%6c%6f%75%64%74%68%69%6e%6b%69%6e%67.%63%6f%6d">#{email3_raw}</a>}
311
- assert_equal email3_result, auto_link(email3_raw, :all, :encode => :hex)
312
- assert_equal email3_result, auto_link(email3_raw, :email_addresses, :encode => :hex)
313
-
314
- link2_raw = 'www.rubyonrails.com'
315
- link2_result = generate_result(link2_raw, "http://#{link2_raw}")
316
- assert_equal %(Go to #{link2_result}), auto_link("Go to #{link2_raw}", :urls)
317
- assert_equal %(Go to #{link2_raw}), auto_link("Go to #{link2_raw}", :email_addresses)
318
- assert_equal %(<p>Link #{link2_result}</p>), auto_link("<p>Link #{link2_raw}</p>")
319
- assert_equal %(<p>#{link2_result} Link</p>), auto_link("<p>#{link2_raw} Link</p>")
320
- assert_equal %(Go to #{link2_result}.), auto_link(%(Go to #{link2_raw}.))
321
- assert_equal %(<p>Say hello to #{email_result}, then go to #{link2_result}.</p>), auto_link(%(<p>Say hello to #{email_raw}, then go to #{link2_raw}.</p>))
322
-
323
- link3_raw = 'http://manuals.ruby-on-rails.com/read/chapter.need_a-period/103#page281'
324
- link3_result = generate_result(link3_raw)
325
- assert_equal %(Go to #{link3_result}), auto_link("Go to #{link3_raw}", :urls)
326
- assert_equal %(Go to #{link3_raw}), auto_link("Go to #{link3_raw}", :email_addresses)
327
- assert_equal %(<p>Link #{link3_result}</p>), auto_link("<p>Link #{link3_raw}</p>")
328
- assert_equal %(<p>#{link3_result} Link</p>), auto_link("<p>#{link3_raw} Link</p>")
329
- assert_equal %(Go to #{link3_result}.), auto_link(%(Go to #{link3_raw}.))
330
- assert_equal %(<p>Go to #{link3_result}. Seriously, #{link3_result}? I think I'll say hello to #{email_result}. Instead.</p>),
331
- auto_link(%(<p>Go to #{link3_raw}. Seriously, #{link3_raw}? I think I'll say hello to #{email_raw}. Instead.</p>))
332
-
333
- link4_raw = 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor123'
334
- link4_result = generate_result(link4_raw)
335
- assert_equal %(<p>Link #{link4_result}</p>), auto_link("<p>Link #{link4_raw}</p>")
336
- assert_equal %(<p>#{link4_result} Link</p>), auto_link("<p>#{link4_raw} Link</p>")
337
-
338
- link5_raw = 'http://foo.example.com:3000/controller/action'
339
- link5_result = generate_result(link5_raw)
340
- assert_equal %(<p>#{link5_result} Link</p>), auto_link("<p>#{link5_raw} Link</p>")
341
-
342
- link6_raw = 'http://foo.example.com:3000/controller/action+pack'
343
- link6_result = generate_result(link6_raw)
344
- assert_equal %(<p>#{link6_result} Link</p>), auto_link("<p>#{link6_raw} Link</p>")
345
-
346
- link7_raw = 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor-123'
347
- link7_result = generate_result(link7_raw)
348
- assert_equal %(<p>#{link7_result} Link</p>), auto_link("<p>#{link7_raw} Link</p>")
349
-
350
- link8_raw = 'http://foo.example.com:3000/controller/action.html'
351
- link8_result = generate_result(link8_raw)
352
- assert_equal %(Go to #{link8_result}), auto_link("Go to #{link8_raw}", :urls)
353
- assert_equal %(Go to #{link8_raw}), auto_link("Go to #{link8_raw}", :email_addresses)
354
- assert_equal %(<p>Link #{link8_result}</p>), auto_link("<p>Link #{link8_raw}</p>")
355
- assert_equal %(<p>#{link8_result} Link</p>), auto_link("<p>#{link8_raw} Link</p>")
356
- assert_equal %(Go to #{link8_result}.), auto_link(%(Go to #{link8_raw}.))
357
- assert_equal %(<p>Go to #{link8_result}. Seriously, #{link8_result}? I think I'll say hello to #{email_result}. Instead.</p>),
358
- auto_link(%(<p>Go to #{link8_raw}. Seriously, #{link8_raw}? I think I'll say hello to #{email_raw}. Instead.</p>))
359
-
360
- link9_raw = 'http://business.timesonline.co.uk/article/0,,9065-2473189,00.html'
361
- link9_result = generate_result(link9_raw)
362
- assert_equal %(Go to #{link9_result}), auto_link("Go to #{link9_raw}", :urls)
363
- assert_equal %(Go to #{link9_raw}), auto_link("Go to #{link9_raw}", :email_addresses)
364
- assert_equal %(<p>Link #{link9_result}</p>), auto_link("<p>Link #{link9_raw}</p>")
365
- assert_equal %(<p>#{link9_result} Link</p>), auto_link("<p>#{link9_raw} Link</p>")
366
- assert_equal %(Go to #{link9_result}.), auto_link(%(Go to #{link9_raw}.))
367
- assert_equal %(<p>Go to #{link9_result}. Seriously, #{link9_result}? I think I'll say hello to #{email_result}. Instead.</p>),
368
- auto_link(%(<p>Go to #{link9_raw}. Seriously, #{link9_raw}? I think I'll say hello to #{email_raw}. Instead.</p>))
369
-
370
- link10_raw = 'http://www.mail-archive.com/ruby-talk@ruby-lang.org/'
371
- link10_result = generate_result(link10_raw)
372
- assert_equal %(<p>#{link10_result} Link</p>), auto_link("<p>#{link10_raw} Link</p>")
373
- end
374
-
375
- def test_auto_link_other_protocols
376
- ftp_raw = 'ftp://example.com/file.txt'
377
- assert_equal %(Download #{generate_result(ftp_raw)}), auto_link("Download #{ftp_raw}")
378
-
379
- file_scheme = 'file:///home/username/RomeoAndJuliet.pdf'
380
- z39_scheme = 'z39.50r://host:696/db'
381
- chrome_scheme = 'chrome://package/section/path'
382
- view_source = 'view-source:http://en.wikipedia.org/wiki/URI_scheme'
383
- assert_equal generate_result(z39_scheme), auto_link(z39_scheme)
384
- assert_equal generate_result(chrome_scheme), auto_link(chrome_scheme)
385
- assert_equal generate_result(view_source), auto_link(view_source)
386
- end
387
-
388
- def test_auto_link_already_linked
389
- linked1 = generate_result('Ruby On Rails', 'http://www.rubyonrails.com')
390
- linked2 = %('<a href="http://www.example.com">www.example.com</a>')
391
- linked3 = %('<a href="http://www.example.com" rel="nofollow">www.example.com</a>')
392
- linked4 = %('<a href="http://www.example.com"><b>www.example.com</b></a>')
393
- linked5 = %('<a href="#close">close</a> <a href="http://www.example.com"><b>www.example.com</b></a>')
394
- assert_equal linked1, auto_link(linked1)
395
- assert_equal linked2, auto_link(linked2)
396
- assert_equal linked3, auto_link(linked3)
397
- assert_equal linked4, auto_link(linked4)
398
- assert_equal linked5, auto_link(linked5)
399
-
400
- linked_email = %Q(<a href="mailto:david@loudthinking.com">Mail me</a>)
401
- assert_equal linked_email, auto_link(linked_email)
402
- end
403
-
404
- def test_auto_link_within_tags
405
- link_raw = 'http://www.rubyonrails.org/images/rails.png'
406
- link_result = %Q(<img src="#{link_raw}" />)
407
- assert_equal link_result, auto_link(link_result)
408
- end
409
-
410
- def test_auto_link_with_brackets
411
- link1_raw = 'http://en.wikipedia.org/wiki/Sprite_(computer_graphics)'
412
- link1_result = generate_result(link1_raw)
413
- assert_equal link1_result, auto_link(link1_raw)
414
- assert_equal "(link: #{link1_result})", auto_link("(link: #{link1_raw})")
415
-
416
- link2_raw = 'http://en.wikipedia.org/wiki/Sprite_[computer_graphics]'
417
- link2_result = generate_result(link2_raw)
418
- assert_equal link2_result, auto_link(link2_raw)
419
- assert_equal "[link: #{link2_result}]", auto_link("[link: #{link2_raw}]")
420
-
421
- link3_raw = 'http://en.wikipedia.org/wiki/Sprite_{computer_graphics}'
422
- link3_result = generate_result(link3_raw)
423
- assert_equal link3_result, auto_link(link3_raw)
424
- assert_equal "{link: #{link3_result}}", auto_link("{link: #{link3_raw}}")
425
- end
426
-
427
- def test_auto_link_at_eol
428
- url1 = "http://api.rubyonrails.com/Foo.html"
429
- url2 = "http://www.ruby-doc.org/core/Bar.html"
430
-
431
- assert_equal %(<p><a href="#{url1}">#{url1}</a><br /><a href="#{url2}">#{url2}</a><br /></p>), auto_link("<p>#{url1}<br />#{url2}<br /></p>")
432
- end
433
-
434
- def test_auto_link_with_block
435
- url = "http://api.rubyonrails.com/Foo.html"
436
- email = "fantabulous@shiznadel.ic"
437
-
438
- assert_equal %(<p><a href="#{url}">#{url[0...7]}...</a><br /><a href="mailto:#{email}">#{email[0...7]}...</a><br /></p>), auto_link("<p>#{url}<br />#{email}<br /></p>") { |url| truncate(url, :length => 10) }
439
- end
440
-
441
- def test_auto_link_with_block_with_html
442
- pic = "http://example.com/pic.png"
443
- url = "http://example.com/album?a&b=c"
444
-
445
- assert_equal %(My pic: <a href="#{pic}"><img src="#{pic}" width="160px"></a> -- full album here #{generate_result(url)}), auto_link("My pic: #{pic} -- full album here #{url}") { |link|
446
- if link =~ /\.(jpg|gif|png|bmp|tif)$/i
447
- raw %(<img src="#{link}" width="160px">)
448
- else
449
- link
450
- end
451
- }
452
- end
453
-
454
- def test_auto_link_with_options_hash
455
- assert_dom_equal 'Welcome to my new blog at <a href="http://www.myblog.com/" class="menu" target="_blank">http://www.myblog.com/</a>. Please e-mail me at <a href="mailto:me@email.com" class="menu" target="_blank">me@email.com</a>.',
456
- auto_link("Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com.",
457
- :link => :all, :html => { :class => "menu", :target => "_blank" })
458
- end
459
-
460
- def test_auto_link_with_multiple_trailing_punctuations
461
- url = "http://youtube.com"
462
- url_result = generate_result(url)
463
- assert_equal url_result, auto_link(url)
464
- assert_equal "(link: #{url_result}).", auto_link("(link: #{url}).")
465
- end
466
-
467
- def test_cycle_class
468
- value = Cycle.new("one", 2, "3")
469
- assert_equal("one", value.to_s)
470
- assert_equal("2", value.to_s)
471
- assert_equal("3", value.to_s)
472
- assert_equal("one", value.to_s)
473
- value.reset
474
- assert_equal("one", value.to_s)
475
- assert_equal("2", value.to_s)
476
- assert_equal("3", value.to_s)
477
- end
478
-
479
- def test_cycle_class_with_no_arguments
480
- assert_raise(ArgumentError) { value = Cycle.new() }
481
- end
482
-
483
- def test_cycle
484
- assert_equal("one", cycle("one", 2, "3"))
485
- assert_equal("2", cycle("one", 2, "3"))
486
- assert_equal("3", cycle("one", 2, "3"))
487
- assert_equal("one", cycle("one", 2, "3"))
488
- assert_equal("2", cycle("one", 2, "3"))
489
- assert_equal("3", cycle("one", 2, "3"))
490
- end
491
-
492
- def test_cycle_with_no_arguments
493
- assert_raise(ArgumentError) { value = cycle() }
494
- end
495
-
496
- def test_cycle_resets_with_new_values
497
- assert_equal("even", cycle("even", "odd"))
498
- assert_equal("odd", cycle("even", "odd"))
499
- assert_equal("even", cycle("even", "odd"))
500
- assert_equal("1", cycle(1, 2, 3))
501
- assert_equal("2", cycle(1, 2, 3))
502
- assert_equal("3", cycle(1, 2, 3))
503
- assert_equal("1", cycle(1, 2, 3))
504
- end
505
-
506
- def test_named_cycles
507
- assert_equal("1", cycle(1, 2, 3, :name => "numbers"))
508
- assert_equal("red", cycle("red", "blue", :name => "colors"))
509
- assert_equal("2", cycle(1, 2, 3, :name => "numbers"))
510
- assert_equal("blue", cycle("red", "blue", :name => "colors"))
511
- assert_equal("3", cycle(1, 2, 3, :name => "numbers"))
512
- assert_equal("red", cycle("red", "blue", :name => "colors"))
513
- end
514
-
515
- def test_current_cycle_with_default_name
516
- cycle("even","odd")
517
- assert_equal "even", current_cycle
518
- cycle("even","odd")
519
- assert_equal "odd", current_cycle
520
- cycle("even","odd")
521
- assert_equal "even", current_cycle
522
- end
523
-
524
- def test_current_cycle_with_named_cycles
525
- cycle("red", "blue", :name => "colors")
526
- assert_equal "red", current_cycle("colors")
527
- cycle("red", "blue", :name => "colors")
528
- assert_equal "blue", current_cycle("colors")
529
- cycle("red", "blue", :name => "colors")
530
- assert_equal "red", current_cycle("colors")
531
- end
532
-
533
- def test_current_cycle_safe_call
534
- assert_nothing_raised { current_cycle }
535
- assert_nothing_raised { current_cycle("colors") }
536
- end
537
-
538
- def test_current_cycle_with_more_than_two_names
539
- cycle(1,2,3)
540
- assert_equal "1", current_cycle
541
- cycle(1,2,3)
542
- assert_equal "2", current_cycle
543
- cycle(1,2,3)
544
- assert_equal "3", current_cycle
545
- cycle(1,2,3)
546
- assert_equal "1", current_cycle
547
- end
548
-
549
- def test_default_named_cycle
550
- assert_equal("1", cycle(1, 2, 3))
551
- assert_equal("2", cycle(1, 2, 3, :name => "default"))
552
- assert_equal("3", cycle(1, 2, 3))
553
- end
554
-
555
- def test_reset_cycle
556
- assert_equal("1", cycle(1, 2, 3))
557
- assert_equal("2", cycle(1, 2, 3))
558
- reset_cycle
559
- assert_equal("1", cycle(1, 2, 3))
560
- end
561
-
562
- def test_reset_unknown_cycle
563
- reset_cycle("colors")
564
- end
565
-
566
- def test_recet_named_cycle
567
- assert_equal("1", cycle(1, 2, 3, :name => "numbers"))
568
- assert_equal("red", cycle("red", "blue", :name => "colors"))
569
- reset_cycle("numbers")
570
- assert_equal("1", cycle(1, 2, 3, :name => "numbers"))
571
- assert_equal("blue", cycle("red", "blue", :name => "colors"))
572
- assert_equal("2", cycle(1, 2, 3, :name => "numbers"))
573
- assert_equal("red", cycle("red", "blue", :name => "colors"))
574
- end
575
-
576
- def test_cycle_no_instance_variable_clashes
577
- @cycles = %w{Specialized Fuji Giant}
578
- assert_equal("red", cycle("red", "blue"))
579
- assert_equal("blue", cycle("red", "blue"))
580
- assert_equal("red", cycle("red", "blue"))
581
- assert_equal(%w{Specialized Fuji Giant}, @cycles)
582
- end
583
-
584
- if defined? RedCloth
585
- def test_textilize
586
- assert_equal("<p><strong>This is Textile!</strong> Rejoice!</p>", textilize("*This is Textile!* Rejoice!"))
587
- end
588
-
589
- def test_textilize_with_blank
590
- assert_equal("", textilize(""))
591
- end
592
-
593
- def test_textilize_with_options
594
- assert_equal("<p>This is worded &lt;strong&gt;strongly&lt;/strong&gt;</p>", textilize("This is worded <strong>strongly</strong>", :filter_html))
595
- end
596
-
597
- def test_textilize_with_hard_breaks
598
- assert_equal("<p>This is one scary world.<br />\n True.</p>", textilize("This is one scary world.\n True."))
599
- end
600
- end
601
- end