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,37 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class Address
4
- def Address.count(conditions = nil, join = nil)
5
- nil
6
- end
7
-
8
- def Address.find_all(arg1, arg2, arg3, arg4)
9
- []
10
- end
11
-
12
- def self.find(*args)
13
- []
14
- end
15
- end
16
-
17
- class AddressesTestController < ActionController::Base
18
- def self.controller_name; "addresses"; end
19
- def self.controller_path; "addresses"; end
20
- end
21
-
22
- class AddressesTest < ActionController::TestCase
23
- tests AddressesTestController
24
-
25
- def setup
26
- # enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
27
- # a more accurate simulation of what happens in "real life".
28
- @controller.logger = Logger.new(nil)
29
-
30
- @request.host = "www.nextangle.com"
31
- end
32
-
33
- def test_list
34
- get :list
35
- assert_equal "We only need to get this far!", @response.body.chomp
36
- end
37
- end
@@ -1,735 +0,0 @@
1
- # encoding: us-ascii
2
- #--
3
- # Copyright (c) 2006 Assaf Arkin (http://labnotes.org)
4
- # Under MIT and/or CC By license.
5
- #++
6
-
7
- require 'abstract_unit'
8
- require 'controller/fake_controllers'
9
-
10
-
11
- unless defined?(ActionMailer)
12
- begin
13
- $:.unshift("#{File.dirname(__FILE__)}/../../../actionmailer/lib")
14
- require 'action_mailer'
15
- rescue LoadError => e
16
- raise unless e.message =~ /action_mailer/
17
- require 'rubygems'
18
- gem 'actionmailer'
19
- end
20
- end
21
-
22
- ActionMailer::Base.template_root = FIXTURE_LOAD_PATH
23
-
24
- class AssertSelectTest < ActionController::TestCase
25
- Assertion = ActiveSupport::TestCase::Assertion
26
-
27
- class AssertSelectMailer < ActionMailer::Base
28
- def test(html)
29
- recipients "test <test@test.host>"
30
- from "test@test.host"
31
- subject "Test e-mail"
32
- part :content_type=>"text/html", :body=>html
33
- end
34
- end
35
-
36
- class AssertSelectController < ActionController::Base
37
- def response_with=(content)
38
- @content = content
39
- end
40
-
41
- def response_with(&block)
42
- @update = block
43
- end
44
-
45
- def html()
46
- render :text=>@content, :layout=>false, :content_type=>Mime::HTML
47
- @content = nil
48
- end
49
-
50
- def rjs()
51
- render :update do |page|
52
- @update.call page
53
- end
54
- @update = nil
55
- end
56
-
57
- def xml()
58
- render :text=>@content, :layout=>false, :content_type=>Mime::XML
59
- @content = nil
60
- end
61
-
62
- def rescue_action(e)
63
- raise e
64
- end
65
- end
66
-
67
- tests AssertSelectController
68
-
69
- def setup
70
- ActionMailer::Base.delivery_method = :test
71
- ActionMailer::Base.perform_deliveries = true
72
- ActionMailer::Base.deliveries = []
73
- end
74
-
75
- def teardown
76
- ActionMailer::Base.deliveries.clear
77
- end
78
-
79
- def assert_failure(message, &block)
80
- e = assert_raise(Assertion, &block)
81
- assert_match(message, e.message) if Regexp === message
82
- assert_equal(message, e.message) if String === message
83
- end
84
-
85
- #
86
- # Test assert select.
87
- #
88
-
89
- def test_assert_select
90
- render_html %Q{<div id="1"></div><div id="2"></div>}
91
- assert_select "div", 2
92
- assert_failure(/Expected at least 3 elements matching \"div\", found 2/) { assert_select "div", 3 }
93
- assert_failure(/Expected at least 1 element matching \"p\", found 0/) { assert_select "p" }
94
- end
95
-
96
- def test_equality_true_false
97
- render_html %Q{<div id="1"></div><div id="2"></div>}
98
- assert_nothing_raised { assert_select "div" }
99
- assert_raise(Assertion) { assert_select "p" }
100
- assert_nothing_raised { assert_select "div", true }
101
- assert_raise(Assertion) { assert_select "p", true }
102
- assert_raise(Assertion) { assert_select "div", false }
103
- assert_nothing_raised { assert_select "p", false }
104
- end
105
-
106
- def test_equality_string_and_regexp
107
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
108
- assert_nothing_raised { assert_select "div", "foo" }
109
- assert_raise(Assertion) { assert_select "div", "bar" }
110
- assert_nothing_raised { assert_select "div", :text=>"foo" }
111
- assert_raise(Assertion) { assert_select "div", :text=>"bar" }
112
- assert_nothing_raised { assert_select "div", /(foo|bar)/ }
113
- assert_raise(Assertion) { assert_select "div", /foobar/ }
114
- assert_nothing_raised { assert_select "div", :text=>/(foo|bar)/ }
115
- assert_raise(Assertion) { assert_select "div", :text=>/foobar/ }
116
- assert_raise(Assertion) { assert_select "p", :text=>/foobar/ }
117
- end
118
-
119
- def test_equality_of_html
120
- render_html %Q{<p>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</p>}
121
- text = "\"This is not a big problem,\" he said."
122
- html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
123
- assert_nothing_raised { assert_select "p", text }
124
- assert_raise(Assertion) { assert_select "p", html }
125
- assert_nothing_raised { assert_select "p", :html=>html }
126
- assert_raise(Assertion) { assert_select "p", :html=>text }
127
- # No stripping for pre.
128
- render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
129
- text = "\n\"This is not a big problem,\" he said.\n"
130
- html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
131
- assert_nothing_raised { assert_select "pre", text }
132
- assert_raise(Assertion) { assert_select "pre", html }
133
- assert_nothing_raised { assert_select "pre", :html=>html }
134
- assert_raise(Assertion) { assert_select "pre", :html=>text }
135
- end
136
-
137
- def test_counts
138
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
139
- assert_nothing_raised { assert_select "div", 2 }
140
- assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
141
- assert_select "div", 3
142
- end
143
- assert_nothing_raised { assert_select "div", 1..2 }
144
- assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
145
- assert_select "div", 3..4
146
- end
147
- assert_nothing_raised { assert_select "div", :count=>2 }
148
- assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
149
- assert_select "div", :count=>3
150
- end
151
- assert_nothing_raised { assert_select "div", :minimum=>1 }
152
- assert_nothing_raised { assert_select "div", :minimum=>2 }
153
- assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
154
- assert_select "div", :minimum=>3
155
- end
156
- assert_nothing_raised { assert_select "div", :maximum=>2 }
157
- assert_nothing_raised { assert_select "div", :maximum=>3 }
158
- assert_failure(/Expected at most 1 element matching \"div\", found 2/) do
159
- assert_select "div", :maximum=>1
160
- end
161
- assert_nothing_raised { assert_select "div", :minimum=>1, :maximum=>2 }
162
- assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
163
- assert_select "div", :minimum=>3, :maximum=>4
164
- end
165
- end
166
-
167
- def test_substitution_values
168
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
169
- assert_select "div#?", /\d+/ do |elements|
170
- assert_equal 2, elements.size
171
- end
172
- assert_select "div" do
173
- assert_select "div#?", /\d+/ do |elements|
174
- assert_equal 2, elements.size
175
- assert_select "#1"
176
- assert_select "#2"
177
- end
178
- end
179
- end
180
-
181
- def test_nested_assert_select
182
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
183
- assert_select "div" do |elements|
184
- assert_equal 2, elements.size
185
- assert_select elements[0], "#1"
186
- assert_select elements[1], "#2"
187
- end
188
- assert_select "div" do
189
- assert_select "div" do |elements|
190
- assert_equal 2, elements.size
191
- # Testing in a group is one thing
192
- assert_select "#1,#2"
193
- # Testing individually is another.
194
- assert_select "#1"
195
- assert_select "#2"
196
- assert_select "#3", false
197
- end
198
- end
199
-
200
- assert_failure(/Expected at least 1 element matching \"#4\", found 0\./) do
201
- assert_select "div" do
202
- assert_select "#4"
203
- end
204
- end
205
- end
206
-
207
- def test_assert_select_text_match
208
- render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
209
- assert_select "div" do
210
- assert_nothing_raised { assert_select "div", "foo" }
211
- assert_nothing_raised { assert_select "div", "bar" }
212
- assert_nothing_raised { assert_select "div", /\w*/ }
213
- assert_nothing_raised { assert_select "div", :text => /\w*/, :count=>2 }
214
- assert_raise(Assertion) { assert_select "div", :text=>"foo", :count=>2 }
215
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
216
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
217
- assert_nothing_raised { assert_select "div", :html=>/\w*/ }
218
- assert_nothing_raised { assert_select "div", :html=>/\w*/, :count=>2 }
219
- assert_raise(Assertion) { assert_select "div", :html=>"<span>foo</span>", :count=>2 }
220
- end
221
- end
222
-
223
- # With single result.
224
- def test_assert_select_from_rjs_with_single_result
225
- render_rjs do |page|
226
- page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
227
- end
228
- assert_select "div" do |elements|
229
- assert elements.size == 2
230
- assert_select "#1"
231
- assert_select "#2"
232
- end
233
- assert_select "div#?", /\d+/ do |elements|
234
- assert_select "#1"
235
- assert_select "#2"
236
- end
237
- end
238
-
239
- # With multiple results.
240
- def test_assert_select_from_rjs_with_multiple_results
241
- render_rjs do |page|
242
- page.replace_html "test", "<div id=\"1\">foo</div>"
243
- page.replace_html "test2", "<div id=\"2\">foo</div>"
244
- end
245
- assert_select "div" do |elements|
246
- assert elements.size == 2
247
- assert_select "#1"
248
- assert_select "#2"
249
- end
250
- end
251
-
252
- def test_assert_select_rjs_for_positioned_insert_should_fail_when_mixing_arguments
253
- render_rjs do |page|
254
- page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
255
- page.insert_html :bottom, "test2", "<div id=\"2\">foo</div>"
256
- end
257
- assert_raise(Assertion) {assert_select_rjs :insert, :top, "test2"}
258
- end
259
-
260
- def test_elect_with_xml_namespace_attributes
261
- render_html %Q{<link xlink:href="http://nowhere.com"></link>}
262
- assert_nothing_raised { assert_select "link[xlink:href=http://nowhere.com]" }
263
- end
264
-
265
- #
266
- # Test css_select.
267
- #
268
-
269
- def test_css_select
270
- render_html %Q{<div id="1"></div><div id="2"></div>}
271
- assert_equal 2, css_select("div").size
272
- assert_equal 0, css_select("p").size
273
- end
274
-
275
- def test_nested_css_select
276
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
277
- assert_select "div#?", /\d+/ do |elements|
278
- assert_equal 1, css_select(elements[0], "div").size
279
- assert_equal 1, css_select(elements[1], "div").size
280
- end
281
- assert_select "div" do
282
- assert_equal 2, css_select("div").size
283
- css_select("div").each do |element|
284
- # Testing as a group is one thing
285
- assert !css_select("#1,#2").empty?
286
- # Testing individually is another
287
- assert !css_select("#1").empty?
288
- assert !css_select("#2").empty?
289
- end
290
- end
291
- end
292
-
293
- # With one result.
294
- def test_css_select_from_rjs_with_single_result
295
- render_rjs do |page|
296
- page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
297
- end
298
- assert_equal 2, css_select("div").size
299
- assert_equal 1, css_select("#1").size
300
- assert_equal 1, css_select("#2").size
301
- end
302
-
303
- # With multiple results.
304
- def test_css_select_from_rjs_with_multiple_results
305
- render_rjs do |page|
306
- page.replace_html "test", "<div id=\"1\">foo</div>"
307
- page.replace_html "test2", "<div id=\"2\">foo</div>"
308
- end
309
-
310
- assert_equal 2, css_select("div").size
311
- assert_equal 1, css_select("#1").size
312
- assert_equal 1, css_select("#2").size
313
- end
314
-
315
- #
316
- # Test assert_select_rjs.
317
- #
318
-
319
- # Test that we can pick up all statements in the result.
320
- def test_assert_select_rjs_picks_up_all_statements
321
- render_rjs do |page|
322
- page.replace "test", "<div id=\"1\">foo</div>"
323
- page.replace_html "test2", "<div id=\"2\">foo</div>"
324
- page.insert_html :top, "test3", "<div id=\"3\">foo</div>"
325
- end
326
-
327
- found = false
328
- assert_select_rjs do
329
- assert_select "#1"
330
- assert_select "#2"
331
- assert_select "#3"
332
- found = true
333
- end
334
- assert found
335
- end
336
-
337
- # Test that we fail if there is nothing to pick.
338
- def test_assert_select_rjs_fails_if_nothing_to_pick
339
- render_rjs { }
340
- assert_raise(Assertion) { assert_select_rjs }
341
- end
342
-
343
- def test_assert_select_rjs_with_unicode
344
- # Test that non-ascii characters (which are converted into \uXXXX in RJS) are decoded correctly.
345
- render_rjs do |page|
346
- page.replace "test", "<div id=\"1\">\343\203\201\343\202\261\343\203\203\343\203\210</div>"
347
- end
348
- assert_select_rjs do
349
- str = "#1"
350
- assert_select str, :text => "\343\203\201\343\202\261\343\203\203\343\203\210"
351
- assert_select str, "\343\203\201\343\202\261\343\203\203\343\203\210"
352
- if str.respond_to?(:force_encoding)
353
- str.force_encoding(Encoding::UTF_8)
354
- assert_select str, /\343\203\201..\343\203\210/u
355
- assert_raise(Assertion) { assert_select str, /\343\203\201.\343\203\210/u }
356
- else
357
- assert_select str, Regexp.new("\343\203\201..\343\203\210",0,'U')
358
- assert_raise(Assertion) { assert_select str, Regexp.new("\343\203\201.\343\203\210",0,'U') }
359
- end
360
- end
361
- end
362
-
363
- def test_assert_select_rjs_with_id
364
- # Test that we can pick up all statements in the result.
365
- render_rjs do |page|
366
- page.replace "test1", "<div id=\"1\">foo</div>"
367
- page.replace_html "test2", "<div id=\"2\">foo</div>"
368
- page.insert_html :top, "test3", "<div id=\"3\">foo</div>"
369
- end
370
- assert_select_rjs "test1" do
371
- assert_select "div", 1
372
- assert_select "#1"
373
- end
374
- assert_select_rjs "test2" do
375
- assert_select "div", 1
376
- assert_select "#2"
377
- end
378
- assert_select_rjs "test3" do
379
- assert_select "div", 1
380
- assert_select "#3"
381
- end
382
- assert_raise(Assertion) { assert_select_rjs "test4" }
383
- end
384
-
385
- def test_assert_select_rjs_for_replace
386
- render_rjs do |page|
387
- page.replace "test1", "<div id=\"1\">foo</div>"
388
- page.replace_html "test2", "<div id=\"2\">foo</div>"
389
- page.insert_html :top, "test3", "<div id=\"3\">foo</div>"
390
- end
391
- # Replace.
392
- assert_select_rjs :replace do
393
- assert_select "div", 1
394
- assert_select "#1"
395
- end
396
- assert_select_rjs :replace, "test1" do
397
- assert_select "div", 1
398
- assert_select "#1"
399
- end
400
- assert_raise(Assertion) { assert_select_rjs :replace, "test2" }
401
- # Replace HTML.
402
- assert_select_rjs :replace_html do
403
- assert_select "div", 1
404
- assert_select "#2"
405
- end
406
- assert_select_rjs :replace_html, "test2" do
407
- assert_select "div", 1
408
- assert_select "#2"
409
- end
410
- assert_raise(Assertion) { assert_select_rjs :replace_html, "test1" }
411
- end
412
-
413
- def test_assert_select_rjs_for_chained_replace
414
- render_rjs do |page|
415
- page['test1'].replace "<div id=\"1\">foo</div>"
416
- page['test2'].replace_html "<div id=\"2\">foo</div>"
417
- page.insert_html :top, "test3", "<div id=\"3\">foo</div>"
418
- end
419
- # Replace.
420
- assert_select_rjs :chained_replace do
421
- assert_select "div", 1
422
- assert_select "#1"
423
- end
424
- assert_select_rjs :chained_replace, "test1" do
425
- assert_select "div", 1
426
- assert_select "#1"
427
- end
428
- assert_raise(Assertion) { assert_select_rjs :chained_replace, "test2" }
429
- # Replace HTML.
430
- assert_select_rjs :chained_replace_html do
431
- assert_select "div", 1
432
- assert_select "#2"
433
- end
434
- assert_select_rjs :chained_replace_html, "test2" do
435
- assert_select "div", 1
436
- assert_select "#2"
437
- end
438
- assert_raise(Assertion) { assert_select_rjs :replace_html, "test1" }
439
- end
440
-
441
- # Simple remove
442
- def test_assert_select_rjs_for_remove
443
- render_rjs do |page|
444
- page.remove "test1"
445
- end
446
-
447
- assert_select_rjs :remove, "test1"
448
- end
449
-
450
- def test_assert_select_rjs_for_remove_offers_useful_error_when_assertion_fails
451
- render_rjs do |page|
452
- page.remove "test_with_typo"
453
- end
454
-
455
- assert_select_rjs :remove, "test1"
456
-
457
- rescue Assertion
458
- assert_equal "No RJS statement that removes 'test1' was rendered.", $!.message
459
- end
460
-
461
- def test_assert_select_rjs_for_remove_ignores_block
462
- render_rjs do |page|
463
- page.remove "test1"
464
- end
465
-
466
- assert_nothing_raised do
467
- assert_select_rjs :remove, "test1" do
468
- assert_select "p"
469
- end
470
- end
471
- end
472
-
473
- # Simple show
474
- def test_assert_select_rjs_for_show
475
- render_rjs do |page|
476
- page.show "test1"
477
- end
478
-
479
- assert_select_rjs :show, "test1"
480
- end
481
-
482
- def test_assert_select_rjs_for_show_offers_useful_error_when_assertion_fails
483
- render_rjs do |page|
484
- page.show "test_with_typo"
485
- end
486
-
487
- assert_select_rjs :show, "test1"
488
-
489
- rescue Assertion
490
- assert_equal "No RJS statement that shows 'test1' was rendered.", $!.message
491
- end
492
-
493
- def test_assert_select_rjs_for_show_ignores_block
494
- render_rjs do |page|
495
- page.show "test1"
496
- end
497
-
498
- assert_nothing_raised do
499
- assert_select_rjs :show, "test1" do
500
- assert_select "p"
501
- end
502
- end
503
- end
504
-
505
- # Simple hide
506
- def test_assert_select_rjs_for_hide
507
- render_rjs do |page|
508
- page.hide "test1"
509
- end
510
-
511
- assert_select_rjs :hide, "test1"
512
- end
513
-
514
- def test_assert_select_rjs_for_hide_offers_useful_error_when_assertion_fails
515
- render_rjs do |page|
516
- page.hide "test_with_typo"
517
- end
518
-
519
- assert_select_rjs :hide, "test1"
520
-
521
- rescue Assertion
522
- assert_equal "No RJS statement that hides 'test1' was rendered.", $!.message
523
- end
524
-
525
- def test_assert_select_rjs_for_hide_ignores_block
526
- render_rjs do |page|
527
- page.hide "test1"
528
- end
529
-
530
- assert_nothing_raised do
531
- assert_select_rjs :hide, "test1" do
532
- assert_select "p"
533
- end
534
- end
535
- end
536
-
537
- # Simple toggle
538
- def test_assert_select_rjs_for_toggle
539
- render_rjs do |page|
540
- page.toggle "test1"
541
- end
542
-
543
- assert_select_rjs :toggle, "test1"
544
- end
545
-
546
- def test_assert_select_rjs_for_toggle_offers_useful_error_when_assertion_fails
547
- render_rjs do |page|
548
- page.toggle "test_with_typo"
549
- end
550
-
551
- assert_select_rjs :toggle, "test1"
552
-
553
- rescue Assertion
554
- assert_equal "No RJS statement that toggles 'test1' was rendered.", $!.message
555
- end
556
-
557
- def test_assert_select_rjs_for_toggle_ignores_block
558
- render_rjs do |page|
559
- page.toggle "test1"
560
- end
561
-
562
- assert_nothing_raised do
563
- assert_select_rjs :toggle, "test1" do
564
- assert_select "p"
565
- end
566
- end
567
- end
568
-
569
- # Non-positioned insert.
570
- def test_assert_select_rjs_for_nonpositioned_insert
571
- render_rjs do |page|
572
- page.replace "test1", "<div id=\"1\">foo</div>"
573
- page.replace_html "test2", "<div id=\"2\">foo</div>"
574
- page.insert_html :top, "test3", "<div id=\"3\">foo</div>"
575
- end
576
- assert_select_rjs :insert_html do
577
- assert_select "div", 1
578
- assert_select "#3"
579
- end
580
- assert_select_rjs :insert_html, "test3" do
581
- assert_select "div", 1
582
- assert_select "#3"
583
- end
584
- assert_raise(Assertion) { assert_select_rjs :insert_html, "test1" }
585
- end
586
-
587
- # Positioned insert.
588
- def test_assert_select_rjs_for_positioned_insert
589
- render_rjs do |page|
590
- page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
591
- page.insert_html :bottom, "test2", "<div id=\"2\">foo</div>"
592
- page.insert_html :before, "test3", "<div id=\"3\">foo</div>"
593
- page.insert_html :after, "test4", "<div id=\"4\">foo</div>"
594
- end
595
- assert_select_rjs :insert, :top do
596
- assert_select "div", 1
597
- assert_select "#1"
598
- end
599
- assert_select_rjs :insert, :bottom do
600
- assert_select "div", 1
601
- assert_select "#2"
602
- end
603
- assert_select_rjs :insert, :before do
604
- assert_select "div", 1
605
- assert_select "#3"
606
- end
607
- assert_select_rjs :insert, :after do
608
- assert_select "div", 1
609
- assert_select "#4"
610
- end
611
- assert_select_rjs :insert_html do
612
- assert_select "div", 4
613
- end
614
- end
615
-
616
- def test_assert_select_rjs_raise_errors
617
- assert_raise(ArgumentError) { assert_select_rjs(:destroy) }
618
- assert_raise(ArgumentError) { assert_select_rjs(:insert, :left) }
619
- end
620
-
621
- # Simple selection from a single result.
622
- def test_nested_assert_select_rjs_with_single_result
623
- render_rjs do |page|
624
- page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
625
- end
626
-
627
- assert_select_rjs "test" do |elements|
628
- assert_equal 2, elements.size
629
- assert_select "#1"
630
- assert_select "#2"
631
- end
632
- end
633
-
634
- # Deal with two results.
635
- def test_nested_assert_select_rjs_with_two_results
636
- render_rjs do |page|
637
- page.replace_html "test", "<div id=\"1\">foo</div>"
638
- page.replace_html "test2", "<div id=\"2\">foo</div>"
639
- end
640
-
641
- assert_select_rjs "test" do |elements|
642
- assert_equal 1, elements.size
643
- assert_select "#1"
644
- end
645
-
646
- assert_select_rjs "test2" do |elements|
647
- assert_equal 1, elements.size
648
- assert_select "#2"
649
- end
650
- end
651
-
652
- def test_feed_item_encoded
653
- render_xml <<-EOF
654
- <rss version="2.0">
655
- <channel>
656
- <item>
657
- <description>
658
- <![CDATA[
659
- <p>Test 1</p>
660
- ]]>
661
- </description>
662
- </item>
663
- <item>
664
- <description>
665
- <![CDATA[
666
- <p>Test 2</p>
667
- ]]>
668
- </description>
669
- </item>
670
- </channel>
671
- </rss>
672
- EOF
673
- assert_select "channel item description" do
674
- # Test element regardless of wrapper.
675
- assert_select_encoded do
676
- assert_select "p", :count=>2, :text=>/Test/
677
- end
678
- # Test through encoded wrapper.
679
- assert_select_encoded do
680
- assert_select "encoded p", :count=>2, :text=>/Test/
681
- end
682
- # Use :root instead (recommended)
683
- assert_select_encoded do
684
- assert_select ":root p", :count=>2, :text=>/Test/
685
- end
686
- # Test individually.
687
- assert_select "description" do |elements|
688
- assert_select_encoded elements[0] do
689
- assert_select "p", "Test 1"
690
- end
691
- assert_select_encoded elements[1] do
692
- assert_select "p", "Test 2"
693
- end
694
- end
695
- end
696
-
697
- # Test that we only un-encode element itself.
698
- assert_select "channel item" do
699
- assert_select_encoded do
700
- assert_select "p", 0
701
- end
702
- end
703
- end
704
-
705
- #
706
- # Test assert_select_email
707
- #
708
-
709
- def test_assert_select_email
710
- assert_raise(Assertion) { assert_select_email {} }
711
- AssertSelectMailer.deliver_test "<div><p>foo</p><p>bar</p></div>"
712
- assert_select_email do
713
- assert_select "div:root" do
714
- assert_select "p:first-child", "foo"
715
- assert_select "p:last-child", "bar"
716
- end
717
- end
718
- end
719
-
720
- protected
721
- def render_html(html)
722
- @controller.response_with = html
723
- get :html
724
- end
725
-
726
- def render_rjs(&block)
727
- @controller.response_with &block
728
- get :rjs
729
- end
730
-
731
- def render_xml(xml)
732
- @controller.response_with = xml
733
- get :xml
734
- end
735
- end