actionpack-rack-upgrade 2.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. data/CHANGELOG +5250 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +409 -0
  4. data/RUNNING_UNIT_TESTS +24 -0
  5. data/Rakefile +158 -0
  6. data/install.rb +30 -0
  7. data/lib/action_controller/assertions/dom_assertions.rb +55 -0
  8. data/lib/action_controller/assertions/model_assertions.rb +21 -0
  9. data/lib/action_controller/assertions/response_assertions.rb +169 -0
  10. data/lib/action_controller/assertions/routing_assertions.rb +146 -0
  11. data/lib/action_controller/assertions/selector_assertions.rb +638 -0
  12. data/lib/action_controller/assertions/tag_assertions.rb +127 -0
  13. data/lib/action_controller/base.rb +1425 -0
  14. data/lib/action_controller/benchmarking.rb +107 -0
  15. data/lib/action_controller/caching/actions.rb +177 -0
  16. data/lib/action_controller/caching/fragments.rb +120 -0
  17. data/lib/action_controller/caching/pages.rb +152 -0
  18. data/lib/action_controller/caching/sweeper.rb +45 -0
  19. data/lib/action_controller/caching/sweeping.rb +55 -0
  20. data/lib/action_controller/caching.rb +71 -0
  21. data/lib/action_controller/cgi_ext/cookie.rb +112 -0
  22. data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  23. data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  24. data/lib/action_controller/cgi_ext.rb +15 -0
  25. data/lib/action_controller/cgi_process.rb +77 -0
  26. data/lib/action_controller/cookies.rb +197 -0
  27. data/lib/action_controller/dispatcher.rb +133 -0
  28. data/lib/action_controller/failsafe.rb +87 -0
  29. data/lib/action_controller/filters.rb +680 -0
  30. data/lib/action_controller/flash.rb +213 -0
  31. data/lib/action_controller/headers.rb +33 -0
  32. data/lib/action_controller/helpers.rb +225 -0
  33. data/lib/action_controller/http_authentication.rb +309 -0
  34. data/lib/action_controller/integration.rb +708 -0
  35. data/lib/action_controller/layout.rb +286 -0
  36. data/lib/action_controller/middleware_stack.rb +119 -0
  37. data/lib/action_controller/middlewares.rb +14 -0
  38. data/lib/action_controller/mime_responds.rb +193 -0
  39. data/lib/action_controller/mime_type.rb +212 -0
  40. data/lib/action_controller/mime_types.rb +21 -0
  41. data/lib/action_controller/params_parser.rb +77 -0
  42. data/lib/action_controller/performance_test.rb +15 -0
  43. data/lib/action_controller/polymorphic_routes.rb +189 -0
  44. data/lib/action_controller/rack_lint_patch.rb +36 -0
  45. data/lib/action_controller/record_identifier.rb +104 -0
  46. data/lib/action_controller/reloader.rb +54 -0
  47. data/lib/action_controller/request.rb +495 -0
  48. data/lib/action_controller/request_forgery_protection.rb +116 -0
  49. data/lib/action_controller/rescue.rb +183 -0
  50. data/lib/action_controller/resources.rb +682 -0
  51. data/lib/action_controller/response.rb +237 -0
  52. data/lib/action_controller/routing/builder.rb +197 -0
  53. data/lib/action_controller/routing/optimisations.rb +130 -0
  54. data/lib/action_controller/routing/recognition_optimisation.rb +167 -0
  55. data/lib/action_controller/routing/route.rb +265 -0
  56. data/lib/action_controller/routing/route_set.rb +503 -0
  57. data/lib/action_controller/routing/routing_ext.rb +49 -0
  58. data/lib/action_controller/routing/segments.rb +343 -0
  59. data/lib/action_controller/routing.rb +388 -0
  60. data/lib/action_controller/session/abstract_store.rb +276 -0
  61. data/lib/action_controller/session/cookie_store.rb +240 -0
  62. data/lib/action_controller/session/mem_cache_store.rb +60 -0
  63. data/lib/action_controller/session_management.rb +54 -0
  64. data/lib/action_controller/status_codes.rb +88 -0
  65. data/lib/action_controller/streaming.rb +181 -0
  66. data/lib/action_controller/string_coercion.rb +29 -0
  67. data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  68. data/lib/action_controller/templates/rescues/_trace.erb +26 -0
  69. data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  70. data/lib/action_controller/templates/rescues/layout.erb +29 -0
  71. data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  72. data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  73. data/lib/action_controller/templates/rescues/template_error.erb +21 -0
  74. data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  75. data/lib/action_controller/test_case.rb +209 -0
  76. data/lib/action_controller/test_process.rb +580 -0
  77. data/lib/action_controller/translation.rb +13 -0
  78. data/lib/action_controller/uploaded_file.rb +44 -0
  79. data/lib/action_controller/url_rewriter.rb +229 -0
  80. data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  81. data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
  82. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  83. data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  84. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  85. data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  86. data/lib/action_controller/vendor/html-scanner.rb +16 -0
  87. data/lib/action_controller/verification.rb +130 -0
  88. data/lib/action_controller.rb +113 -0
  89. data/lib/action_pack/version.rb +9 -0
  90. data/lib/action_pack.rb +24 -0
  91. data/lib/action_view/base.rb +362 -0
  92. data/lib/action_view/helpers/active_record_helper.rb +305 -0
  93. data/lib/action_view/helpers/asset_tag_helper.rb +695 -0
  94. data/lib/action_view/helpers/atom_feed_helper.rb +198 -0
  95. data/lib/action_view/helpers/benchmark_helper.rb +54 -0
  96. data/lib/action_view/helpers/cache_helper.rb +39 -0
  97. data/lib/action_view/helpers/capture_helper.rb +136 -0
  98. data/lib/action_view/helpers/csrf_helper.rb +14 -0
  99. data/lib/action_view/helpers/date_helper.rb +989 -0
  100. data/lib/action_view/helpers/debug_helper.rb +38 -0
  101. data/lib/action_view/helpers/form_helper.rb +1118 -0
  102. data/lib/action_view/helpers/form_options_helper.rb +599 -0
  103. data/lib/action_view/helpers/form_tag_helper.rb +490 -0
  104. data/lib/action_view/helpers/javascript_helper.rb +208 -0
  105. data/lib/action_view/helpers/number_helper.rb +308 -0
  106. data/lib/action_view/helpers/prototype_helper.rb +1305 -0
  107. data/lib/action_view/helpers/raw_output_helper.rb +9 -0
  108. data/lib/action_view/helpers/record_identification_helper.rb +20 -0
  109. data/lib/action_view/helpers/record_tag_helper.rb +58 -0
  110. data/lib/action_view/helpers/sanitize_helper.rb +251 -0
  111. data/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
  112. data/lib/action_view/helpers/tag_helper.rb +151 -0
  113. data/lib/action_view/helpers/text_helper.rb +597 -0
  114. data/lib/action_view/helpers/translation_helper.rb +67 -0
  115. data/lib/action_view/helpers/url_helper.rb +637 -0
  116. data/lib/action_view/helpers.rb +61 -0
  117. data/lib/action_view/inline_template.rb +19 -0
  118. data/lib/action_view/locale/en.yml +117 -0
  119. data/lib/action_view/partials.rb +241 -0
  120. data/lib/action_view/paths.rb +77 -0
  121. data/lib/action_view/reloadable_template.rb +117 -0
  122. data/lib/action_view/renderable.rb +109 -0
  123. data/lib/action_view/renderable_partial.rb +53 -0
  124. data/lib/action_view/template.rb +252 -0
  125. data/lib/action_view/template_error.rb +99 -0
  126. data/lib/action_view/template_handler.rb +34 -0
  127. data/lib/action_view/template_handlers/builder.rb +17 -0
  128. data/lib/action_view/template_handlers/erb.rb +25 -0
  129. data/lib/action_view/template_handlers/rjs.rb +13 -0
  130. data/lib/action_view/template_handlers.rb +48 -0
  131. data/lib/action_view/test_case.rb +162 -0
  132. data/lib/action_view.rb +58 -0
  133. data/lib/actionpack.rb +2 -0
  134. data/test/abstract_unit.rb +78 -0
  135. data/test/active_record_unit.rb +104 -0
  136. data/test/activerecord/active_record_store_test.rb +221 -0
  137. data/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
  138. data/test/adv_attr_test.rb +20 -0
  139. data/test/controller/action_pack_assertions_test.rb +545 -0
  140. data/test/controller/addresses_render_test.rb +37 -0
  141. data/test/controller/assert_select_test.rb +735 -0
  142. data/test/controller/base_test.rb +217 -0
  143. data/test/controller/benchmark_test.rb +32 -0
  144. data/test/controller/caching_test.rb +743 -0
  145. data/test/controller/capture_test.rb +66 -0
  146. data/test/controller/content_type_test.rb +178 -0
  147. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  148. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  149. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  150. data/test/controller/cookie_test.rb +208 -0
  151. data/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
  152. data/test/controller/dispatcher_test.rb +144 -0
  153. data/test/controller/dom_assertions_test.rb +53 -0
  154. data/test/controller/failsafe_test.rb +60 -0
  155. data/test/controller/fake_controllers.rb +33 -0
  156. data/test/controller/fake_models.rb +19 -0
  157. data/test/controller/filter_params_test.rb +52 -0
  158. data/test/controller/filters_test.rb +885 -0
  159. data/test/controller/flash_test.rb +174 -0
  160. data/test/controller/header_test.rb +14 -0
  161. data/test/controller/helper_test.rb +224 -0
  162. data/test/controller/html-scanner/cdata_node_test.rb +15 -0
  163. data/test/controller/html-scanner/document_test.rb +148 -0
  164. data/test/controller/html-scanner/node_test.rb +89 -0
  165. data/test/controller/html-scanner/sanitizer_test.rb +281 -0
  166. data/test/controller/html-scanner/tag_node_test.rb +238 -0
  167. data/test/controller/html-scanner/text_node_test.rb +50 -0
  168. data/test/controller/html-scanner/tokenizer_test.rb +131 -0
  169. data/test/controller/http_basic_authentication_test.rb +113 -0
  170. data/test/controller/http_digest_authentication_test.rb +254 -0
  171. data/test/controller/integration_test.rb +526 -0
  172. data/test/controller/layout_test.rb +215 -0
  173. data/test/controller/localized_templates_test.rb +24 -0
  174. data/test/controller/logging_test.rb +46 -0
  175. data/test/controller/middleware_stack_test.rb +90 -0
  176. data/test/controller/mime_responds_test.rb +536 -0
  177. data/test/controller/mime_type_test.rb +93 -0
  178. data/test/controller/output_escaping_test.rb +19 -0
  179. data/test/controller/polymorphic_routes_test.rb +297 -0
  180. data/test/controller/rack_test.rb +308 -0
  181. data/test/controller/record_identifier_test.rb +139 -0
  182. data/test/controller/redirect_test.rb +285 -0
  183. data/test/controller/reloader_test.rb +125 -0
  184. data/test/controller/render_test.rb +1783 -0
  185. data/test/controller/request/json_params_parsing_test.rb +65 -0
  186. data/test/controller/request/multipart_params_parsing_test.rb +177 -0
  187. data/test/controller/request/query_string_parsing_test.rb +120 -0
  188. data/test/controller/request/test_request_test.rb +35 -0
  189. data/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
  190. data/test/controller/request/xml_params_parsing_test.rb +103 -0
  191. data/test/controller/request_forgery_protection_test.rb +233 -0
  192. data/test/controller/request_test.rb +395 -0
  193. data/test/controller/rescue_test.rb +541 -0
  194. data/test/controller/resources_test.rb +1393 -0
  195. data/test/controller/routing_test.rb +2592 -0
  196. data/test/controller/selector_test.rb +628 -0
  197. data/test/controller/send_file_test.rb +171 -0
  198. data/test/controller/session/abstract_store_test.rb +64 -0
  199. data/test/controller/session/cookie_store_test.rb +354 -0
  200. data/test/controller/session/mem_cache_store_test.rb +187 -0
  201. data/test/controller/session/test_session_test.rb +58 -0
  202. data/test/controller/test_test.rb +700 -0
  203. data/test/controller/translation_test.rb +26 -0
  204. data/test/controller/url_rewriter_test.rb +395 -0
  205. data/test/controller/verification_test.rb +270 -0
  206. data/test/controller/view_paths_test.rb +141 -0
  207. data/test/controller/webservice_test.rb +260 -0
  208. data/test/fixtures/_top_level_partial.html.erb +1 -0
  209. data/test/fixtures/_top_level_partial_only.erb +1 -0
  210. data/test/fixtures/addresses/list.erb +1 -0
  211. data/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  212. data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  213. data/test/fixtures/companies.yml +24 -0
  214. data/test/fixtures/company.rb +10 -0
  215. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  216. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  217. data/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  218. data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  219. data/test/fixtures/customers/_customer.html.erb +1 -0
  220. data/test/fixtures/db_definitions/sqlite.sql +49 -0
  221. data/test/fixtures/developer.rb +9 -0
  222. data/test/fixtures/developers/_developer.erb +1 -0
  223. data/test/fixtures/developers.yml +21 -0
  224. data/test/fixtures/developers_projects.yml +13 -0
  225. data/test/fixtures/failsafe/500.html +1 -0
  226. data/test/fixtures/fun/games/_game.erb +1 -0
  227. data/test/fixtures/fun/games/hello_world.erb +1 -0
  228. data/test/fixtures/fun/serious/games/_game.erb +1 -0
  229. data/test/fixtures/functional_caching/_partial.erb +3 -0
  230. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  231. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  232. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  233. data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  234. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  235. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  236. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  237. data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  238. data/test/fixtures/helpers/abc_helper.rb +5 -0
  239. data/test/fixtures/helpers/fun/games_helper.rb +3 -0
  240. data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  241. data/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  242. data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  243. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  244. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  245. data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  246. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  247. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  248. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  249. data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  250. data/test/fixtures/layouts/_column.html.erb +2 -0
  251. data/test/fixtures/layouts/block_with_layout.erb +3 -0
  252. data/test/fixtures/layouts/builder.builder +3 -0
  253. data/test/fixtures/layouts/default_html.html.erb +1 -0
  254. data/test/fixtures/layouts/partial_with_layout.erb +3 -0
  255. data/test/fixtures/layouts/standard.erb +1 -0
  256. data/test/fixtures/layouts/talk_from_action.erb +2 -0
  257. data/test/fixtures/layouts/xhr.html.erb +2 -0
  258. data/test/fixtures/layouts/yield.erb +2 -0
  259. data/test/fixtures/localized/hello_world.de.html +1 -0
  260. data/test/fixtures/localized/hello_world.en.html +1 -0
  261. data/test/fixtures/mascot.rb +3 -0
  262. data/test/fixtures/mascots/_mascot.html.erb +1 -0
  263. data/test/fixtures/mascots.yml +4 -0
  264. data/test/fixtures/multipart/binary_file +0 -0
  265. data/test/fixtures/multipart/boundary_problem_file +10 -0
  266. data/test/fixtures/multipart/bracketed_param +5 -0
  267. data/test/fixtures/multipart/empty +10 -0
  268. data/test/fixtures/multipart/hello.txt +1 -0
  269. data/test/fixtures/multipart/large_text_file +10 -0
  270. data/test/fixtures/multipart/mixed_files +0 -0
  271. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  272. data/test/fixtures/multipart/none +9 -0
  273. data/test/fixtures/multipart/single_parameter +5 -0
  274. data/test/fixtures/multipart/text_file +10 -0
  275. data/test/fixtures/override/test/hello_world.erb +1 -0
  276. data/test/fixtures/override2/layouts/test/sub.erb +1 -0
  277. data/test/fixtures/post_test/layouts/post.html.erb +1 -0
  278. data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  279. data/test/fixtures/post_test/post/index.html.erb +1 -0
  280. data/test/fixtures/post_test/post/index.iphone.erb +1 -0
  281. data/test/fixtures/post_test/super_post/index.html.erb +1 -0
  282. data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  283. data/test/fixtures/project.rb +3 -0
  284. data/test/fixtures/projects/_project.erb +1 -0
  285. data/test/fixtures/projects.yml +7 -0
  286. data/test/fixtures/public/404.html +1 -0
  287. data/test/fixtures/public/500.da.html +1 -0
  288. data/test/fixtures/public/500.html +1 -0
  289. data/test/fixtures/public/absolute/test.css +23 -0
  290. data/test/fixtures/public/absolute/test.js +63 -0
  291. data/test/fixtures/public/images/rails.png +0 -0
  292. data/test/fixtures/public/javascripts/application.js +1 -0
  293. data/test/fixtures/public/javascripts/bank.js +1 -0
  294. data/test/fixtures/public/javascripts/controls.js +1 -0
  295. data/test/fixtures/public/javascripts/dragdrop.js +1 -0
  296. data/test/fixtures/public/javascripts/effects.js +1 -0
  297. data/test/fixtures/public/javascripts/prototype.js +1 -0
  298. data/test/fixtures/public/javascripts/robber.js +1 -0
  299. data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  300. data/test/fixtures/public/javascripts/version.1.0.js +1 -0
  301. data/test/fixtures/public/stylesheets/bank.css +1 -0
  302. data/test/fixtures/public/stylesheets/robber.css +1 -0
  303. data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  304. data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  305. data/test/fixtures/quiz/questions/_question.html.erb +1 -0
  306. data/test/fixtures/replies/_reply.erb +1 -0
  307. data/test/fixtures/replies.yml +15 -0
  308. data/test/fixtures/reply.rb +7 -0
  309. data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  310. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  311. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  312. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  313. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  314. data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  315. data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  316. data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  317. data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  318. data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  319. data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  320. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  321. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  322. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  323. data/test/fixtures/scope/test/modgreet.erb +1 -0
  324. data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +10 -0
  325. data/test/fixtures/shared.html.erb +1 -0
  326. data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  327. data/test/fixtures/test/_counter.html.erb +1 -0
  328. data/test/fixtures/test/_customer.erb +1 -0
  329. data/test/fixtures/test/_customer_counter.erb +1 -0
  330. data/test/fixtures/test/_customer_counter_with_as.erb +1 -0
  331. data/test/fixtures/test/_customer_greeting.erb +1 -0
  332. data/test/fixtures/test/_customer_with_var.erb +1 -0
  333. data/test/fixtures/test/_form.erb +1 -0
  334. data/test/fixtures/test/_from_helper.erb +1 -0
  335. data/test/fixtures/test/_hash_greeting.erb +1 -0
  336. data/test/fixtures/test/_hash_object.erb +2 -0
  337. data/test/fixtures/test/_hello.builder +1 -0
  338. data/test/fixtures/test/_labelling_form.erb +1 -0
  339. data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  340. data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  341. data/test/fixtures/test/_local_inspector.html.erb +1 -0
  342. data/test/fixtures/test/_one.html.erb +1 -0
  343. data/test/fixtures/test/_partial.erb +1 -0
  344. data/test/fixtures/test/_partial.html.erb +1 -0
  345. data/test/fixtures/test/_partial.js.erb +1 -0
  346. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  347. data/test/fixtures/test/_partial_only.erb +1 -0
  348. data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  349. data/test/fixtures/test/_person.erb +2 -0
  350. data/test/fixtures/test/_raise.html.erb +1 -0
  351. data/test/fixtures/test/_two.html.erb +1 -0
  352. data/test/fixtures/test/_utf8_partial.html.erb +1 -0
  353. data/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
  354. data/test/fixtures/test/action_talk_to_layout.erb +2 -0
  355. data/test/fixtures/test/array_translation.erb +1 -0
  356. data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  357. data/test/fixtures/test/capturing.erb +4 -0
  358. data/test/fixtures/test/content_for.erb +2 -0
  359. data/test/fixtures/test/content_for_concatenated.erb +3 -0
  360. data/test/fixtures/test/content_for_with_parameter.erb +2 -0
  361. data/test/fixtures/test/delete_with_js.rjs +2 -0
  362. data/test/fixtures/test/dont_pick_me +1 -0
  363. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  364. data/test/fixtures/test/enum_rjs_test.rjs +6 -0
  365. data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  366. data/test/fixtures/test/formatted_xml_erb.builder +1 -0
  367. data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  368. data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  369. data/test/fixtures/test/greeting.erb +1 -0
  370. data/test/fixtures/test/greeting.js.rjs +1 -0
  371. data/test/fixtures/test/hello.builder +4 -0
  372. data/test/fixtures/test/hello_world.da.html.erb +1 -0
  373. data/test/fixtures/test/hello_world.erb +1 -0
  374. data/test/fixtures/test/hello_world.erb~ +1 -0
  375. data/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  376. data/test/fixtures/test/hello_world_container.builder +3 -0
  377. data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  378. data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  379. data/test/fixtures/test/hello_xml_world.builder +11 -0
  380. data/test/fixtures/test/hyphen-ated.erb +1 -0
  381. data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  382. data/test/fixtures/test/list.erb +1 -0
  383. data/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  384. data/test/fixtures/test/malformed/malformed.erb~ +1 -0
  385. data/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  386. data/test/fixtures/test/nested_layout.erb +3 -0
  387. data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  388. data/test/fixtures/test/potential_conflicts.erb +4 -0
  389. data/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
  390. data/test/fixtures/test/render_file_from_template.html.erb +1 -0
  391. data/test/fixtures/test/render_file_with_ivar.erb +1 -0
  392. data/test/fixtures/test/render_file_with_locals.erb +1 -0
  393. data/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
  394. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  395. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  396. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
  397. data/test/fixtures/test/render_to_string_test.erb +1 -0
  398. data/test/fixtures/test/scoped_array_translation.erb +1 -0
  399. data/test/fixtures/test/sub_template_raise.html.erb +1 -0
  400. data/test/fixtures/test/template.erb +1 -0
  401. data/test/fixtures/test/translation.erb +1 -0
  402. data/test/fixtures/test/update_element_with_capture.erb +9 -0
  403. data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  404. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  405. data/test/fixtures/test/utf8.html.erb +4 -0
  406. data/test/fixtures/test/utf8_magic.html.erb +5 -0
  407. data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
  408. data/test/fixtures/topic.rb +3 -0
  409. data/test/fixtures/topics/_topic.html.erb +1 -0
  410. data/test/fixtures/topics.yml +22 -0
  411. data/test/template/active_record_helper_i18n_test.rb +51 -0
  412. data/test/template/active_record_helper_test.rb +302 -0
  413. data/test/template/asset_tag_helper_test.rb +770 -0
  414. data/test/template/atom_feed_helper_test.rb +315 -0
  415. data/test/template/benchmark_helper_test.rb +86 -0
  416. data/test/template/compiled_templates_test.rb +204 -0
  417. data/test/template/date_helper_i18n_test.rb +121 -0
  418. data/test/template/date_helper_test.rb +2603 -0
  419. data/test/template/erb_util_test.rb +36 -0
  420. data/test/template/form_helper_test.rb +1447 -0
  421. data/test/template/form_options_helper_i18n_test.rb +27 -0
  422. data/test/template/form_options_helper_test.rb +811 -0
  423. data/test/template/form_tag_helper_test.rb +356 -0
  424. data/test/template/javascript_helper_test.rb +106 -0
  425. data/test/template/number_helper_i18n_test.rb +69 -0
  426. data/test/template/number_helper_test.rb +132 -0
  427. data/test/template/prototype_helper_test.rb +639 -0
  428. data/test/template/raw_output_helper_test.rb +21 -0
  429. data/test/template/record_tag_helper_test.rb +58 -0
  430. data/test/template/render_test.rb +329 -0
  431. data/test/template/sanitize_helper_test.rb +57 -0
  432. data/test/template/scriptaculous_helper_test.rb +90 -0
  433. data/test/template/tag_helper_test.rb +98 -0
  434. data/test/template/template_test.rb +32 -0
  435. data/test/template/test_test.rb +54 -0
  436. data/test/template/text_helper_test.rb +597 -0
  437. data/test/template/translation_helper_test.rb +95 -0
  438. data/test/template/url_helper_test.rb +641 -0
  439. data/test/testing_sandbox.rb +15 -0
  440. data/test/view/test_case_test.rb +176 -0
  441. metadata +519 -0
@@ -0,0 +1,141 @@
1
+ require 'abstract_unit'
2
+
3
+ class ViewLoadPathsTest < ActionController::TestCase
4
+ class TestController < ActionController::Base
5
+ def self.controller_path() "test" end
6
+ def rescue_action(e) raise end
7
+
8
+ before_filter :add_view_path, :only => :hello_world_at_request_time
9
+
10
+ def hello_world() end
11
+ def hello_world_at_request_time() render(:action => 'hello_world') end
12
+
13
+ private
14
+ def add_view_path
15
+ prepend_view_path "#{FIXTURE_LOAD_PATH}/override"
16
+ end
17
+ end
18
+
19
+ class Test::SubController < ActionController::Base
20
+ layout 'test/sub'
21
+ def hello_world; render(:template => 'test/hello_world'); end
22
+ end
23
+
24
+ def setup
25
+ TestController.view_paths = nil
26
+
27
+ @request = ActionController::TestRequest.new
28
+ @response = ActionController::TestResponse.new
29
+
30
+ @controller = TestController.new
31
+ # Following is needed in order to setup @controller.template object properly
32
+ @controller.send :initialize_template_class, @response
33
+ @controller.send :assign_shortcuts, @request, @response
34
+
35
+ # Track the last warning.
36
+ @old_behavior = ActiveSupport::Deprecation.behavior
37
+ @last_message = nil
38
+ ActiveSupport::Deprecation.behavior = Proc.new { |message, callback| @last_message = message }
39
+ end
40
+
41
+ def teardown
42
+ ActiveSupport::Deprecation.behavior = @old_behavior
43
+ end
44
+
45
+ def test_template_load_path_was_set_correctly
46
+ assert_equal [FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
47
+ end
48
+
49
+ def test_controller_appends_view_path_correctly
50
+ @controller.append_view_path 'foo'
51
+ assert_equal [FIXTURE_LOAD_PATH, 'foo'], @controller.view_paths.map(&:to_s)
52
+
53
+ @controller.append_view_path(%w(bar baz))
54
+ assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s)
55
+
56
+ @controller.append_view_path(FIXTURE_LOAD_PATH)
57
+ assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
58
+ end
59
+
60
+ def test_controller_prepends_view_path_correctly
61
+ @controller.prepend_view_path 'baz'
62
+ assert_equal ['baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
63
+
64
+ @controller.prepend_view_path(%w(foo bar))
65
+ assert_equal ['foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
66
+
67
+ @controller.prepend_view_path(FIXTURE_LOAD_PATH)
68
+ assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
69
+ end
70
+
71
+ def test_template_appends_view_path_correctly
72
+ @controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
73
+ class_view_paths = TestController.view_paths
74
+
75
+ @controller.append_view_path 'foo'
76
+ assert_equal [FIXTURE_LOAD_PATH, 'foo'], @controller.view_paths.map(&:to_s)
77
+
78
+ @controller.append_view_path(%w(bar baz))
79
+ assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s)
80
+ assert_equal class_view_paths, TestController.view_paths
81
+ end
82
+
83
+ def test_template_prepends_view_path_correctly
84
+ @controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
85
+ class_view_paths = TestController.view_paths
86
+
87
+ @controller.prepend_view_path 'baz'
88
+ assert_equal ['baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
89
+
90
+ @controller.prepend_view_path(%w(foo bar))
91
+ assert_equal ['foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
92
+ assert_equal class_view_paths, TestController.view_paths
93
+ end
94
+
95
+ def test_view_paths
96
+ get :hello_world
97
+ assert_response :success
98
+ assert_equal "Hello world!", @response.body
99
+ end
100
+
101
+ def test_view_paths_override
102
+ TestController.prepend_view_path "#{FIXTURE_LOAD_PATH}/override"
103
+ get :hello_world
104
+ assert_response :success
105
+ assert_equal "Hello overridden world!", @response.body
106
+ end
107
+
108
+ def test_view_paths_override_for_layouts_in_controllers_with_a_module
109
+ @controller = Test::SubController.new
110
+ Test::SubController.view_paths = [ "#{FIXTURE_LOAD_PATH}/override", FIXTURE_LOAD_PATH, "#{FIXTURE_LOAD_PATH}/override2" ]
111
+ get :hello_world
112
+ assert_response :success
113
+ assert_equal "layout: Hello overridden world!", @response.body
114
+ end
115
+
116
+ def test_view_paths_override_at_request_time
117
+ get :hello_world_at_request_time
118
+ assert_response :success
119
+ assert_equal "Hello overridden world!", @response.body
120
+ end
121
+
122
+ def test_inheritance
123
+ original_load_paths = ActionController::Base.view_paths
124
+
125
+ self.class.class_eval %{
126
+ class A < ActionController::Base; end
127
+ class B < A; end
128
+ class C < ActionController::Base; end
129
+ }
130
+
131
+ A.view_paths = ['a/path']
132
+
133
+ assert_equal ['a/path'], A.view_paths.map(&:to_s)
134
+ assert_equal A.view_paths, B.view_paths
135
+ assert_equal original_load_paths, C.view_paths
136
+
137
+ C.view_paths = []
138
+ assert_nothing_raised { C.view_paths << 'c/path' }
139
+ assert_equal ['c/path'], C.view_paths.map(&:to_s)
140
+ end
141
+ end
@@ -0,0 +1,260 @@
1
+ require 'abstract_unit'
2
+
3
+ class WebServiceTest < ActionController::IntegrationTest
4
+ class TestController < ActionController::Base
5
+ def assign_parameters
6
+ if params[:full]
7
+ render :text => dump_params_keys
8
+ else
9
+ render :text => (params.keys - ['controller', 'action']).sort.join(", ")
10
+ end
11
+ end
12
+
13
+ def dump_params_keys(hash = params)
14
+ hash.keys.sort.inject("") do |s, k|
15
+ value = hash[k]
16
+ value = Hash === value ? "(#{dump_params_keys(value)})" : ""
17
+ s << ", " unless s.empty?
18
+ s << "#{k}#{value}"
19
+ end
20
+ end
21
+
22
+ def rescue_action(e) raise end
23
+ end
24
+
25
+ def setup
26
+ @controller = TestController.new
27
+ @default_param_parsers = ActionController::Base.param_parsers.dup
28
+ end
29
+
30
+ def teardown
31
+ ActionController::Base.param_parsers = @default_param_parsers
32
+ end
33
+
34
+ def test_check_parameters
35
+ with_test_route_set do
36
+ get "/"
37
+ assert_equal '', @controller.response.body
38
+ end
39
+ end
40
+
41
+ def test_post_xml
42
+ with_test_route_set do
43
+ post "/", '<entry attributed="true"><summary>content...</summary></entry>',
44
+ {'CONTENT_TYPE' => 'application/xml'}
45
+
46
+ assert_equal 'entry', @controller.response.body
47
+ assert @controller.params.has_key?(:entry)
48
+ assert_equal 'content...', @controller.params["entry"]['summary']
49
+ assert_equal 'true', @controller.params["entry"]['attributed']
50
+ end
51
+ end
52
+
53
+ def test_put_xml
54
+ with_test_route_set do
55
+ put "/", '<entry attributed="true"><summary>content...</summary></entry>',
56
+ {'CONTENT_TYPE' => 'application/xml'}
57
+
58
+ assert_equal 'entry', @controller.response.body
59
+ assert @controller.params.has_key?(:entry)
60
+ assert_equal 'content...', @controller.params["entry"]['summary']
61
+ assert_equal 'true', @controller.params["entry"]['attributed']
62
+ end
63
+ end
64
+
65
+ def test_put_xml_using_a_type_node
66
+ with_test_route_set do
67
+ put "/", '<type attributed="true"><summary>content...</summary></type>',
68
+ {'CONTENT_TYPE' => 'application/xml'}
69
+
70
+ assert_equal 'type', @controller.response.body
71
+ assert @controller.params.has_key?(:type)
72
+ assert_equal 'content...', @controller.params["type"]['summary']
73
+ assert_equal 'true', @controller.params["type"]['attributed']
74
+ end
75
+ end
76
+
77
+ def test_put_xml_using_a_type_node_and_attribute
78
+ with_test_route_set do
79
+ put "/", '<type attributed="true"><summary type="boolean">false</summary></type>',
80
+ {'CONTENT_TYPE' => 'application/xml'}
81
+
82
+ assert_equal 'type', @controller.response.body
83
+ assert @controller.params.has_key?(:type)
84
+ assert_equal false, @controller.params["type"]['summary']
85
+ assert_equal 'true', @controller.params["type"]['attributed']
86
+ end
87
+ end
88
+
89
+ def test_post_xml_using_a_type_node
90
+ with_test_route_set do
91
+ post "/", '<font attributed="true"><type>arial</type></font>',
92
+ {'CONTENT_TYPE' => 'application/xml'}
93
+
94
+ assert_equal 'font', @controller.response.body
95
+ assert @controller.params.has_key?(:font)
96
+ assert_equal 'arial', @controller.params['font']['type']
97
+ assert_equal 'true', @controller.params["font"]['attributed']
98
+ end
99
+ end
100
+
101
+ def test_post_xml_using_a_root_node_named_type
102
+ with_test_route_set do
103
+ post "/", '<type type="integer">33</type>',
104
+ {'CONTENT_TYPE' => 'application/xml'}
105
+
106
+ assert @controller.params.has_key?(:type)
107
+ assert_equal 33, @controller.params['type']
108
+ end
109
+ end
110
+
111
+ def test_post_xml_using_an_attributted_node_named_type
112
+ with_test_route_set do
113
+ ActionController::Base.param_parsers[Mime::XML] = Proc.new { |data| Hash.from_xml(data)['request'].with_indifferent_access }
114
+ post "/", '<request><type type="string">Arial,12</type><z>3</z></request>',
115
+ {'CONTENT_TYPE' => 'application/xml'}
116
+
117
+ assert_equal 'type, z', @controller.response.body
118
+ assert @controller.params.has_key?(:type)
119
+ assert_equal 'Arial,12', @controller.params['type'], @controller.params.inspect
120
+ assert_equal '3', @controller.params['z'], @controller.params.inspect
121
+ end
122
+ end
123
+
124
+ def test_register_and_use_yaml
125
+ with_test_route_set do
126
+ ActionController::Base.param_parsers[Mime::YAML] = Proc.new { |d| YAML.load(d) }
127
+ post "/", {"entry" => "loaded from yaml"}.to_yaml,
128
+ {'CONTENT_TYPE' => 'application/x-yaml'}
129
+
130
+ assert_equal 'entry', @controller.response.body
131
+ assert @controller.params.has_key?(:entry)
132
+ assert_equal 'loaded from yaml', @controller.params["entry"]
133
+ end
134
+ end
135
+
136
+ def test_register_and_use_yaml_as_symbol
137
+ with_test_route_set do
138
+ ActionController::Base.param_parsers[Mime::YAML] = :yaml
139
+ post "/", {"entry" => "loaded from yaml"}.to_yaml,
140
+ {'CONTENT_TYPE' => 'application/x-yaml'}
141
+
142
+ assert_equal 'entry', @controller.response.body
143
+ assert @controller.params.has_key?(:entry)
144
+ assert_equal 'loaded from yaml', @controller.params["entry"]
145
+ end
146
+ end
147
+
148
+ def test_register_and_use_xml_simple
149
+ with_test_route_set do
150
+ ActionController::Base.param_parsers[Mime::XML] = Proc.new { |data| Hash.from_xml(data)['request'].with_indifferent_access }
151
+ post "/", '<request><summary>content...</summary><title>SimpleXml</title></request>',
152
+ {'CONTENT_TYPE' => 'application/xml'}
153
+
154
+ assert_equal 'summary, title', @controller.response.body
155
+ assert @controller.params.has_key?(:summary)
156
+ assert @controller.params.has_key?(:title)
157
+ assert_equal 'content...', @controller.params["summary"]
158
+ assert_equal 'SimpleXml', @controller.params["title"]
159
+ end
160
+ end
161
+
162
+ def test_use_xml_ximple_with_empty_request
163
+ with_test_route_set do
164
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
165
+ assert_nothing_raised { post "/", "", {'CONTENT_TYPE' => 'application/xml'} }
166
+ assert_equal "", @controller.response.body
167
+ end
168
+ end
169
+
170
+ def test_dasherized_keys_as_xml
171
+ with_test_route_set do
172
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
173
+ post "/?full=1", "<first-key>\n<sub-key>...</sub-key>\n</first-key>",
174
+ {'CONTENT_TYPE' => 'application/xml'}
175
+ assert_equal 'action, controller, first_key(sub_key), full', @controller.response.body
176
+ assert_equal "...", @controller.params[:first_key][:sub_key]
177
+ end
178
+ end
179
+
180
+ def test_typecast_as_xml
181
+ with_test_route_set do
182
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
183
+ xml = <<-XML
184
+ <data>
185
+ <a type="integer">15</a>
186
+ <b type="boolean">false</b>
187
+ <c type="boolean">true</c>
188
+ <d type="date">2005-03-17</d>
189
+ <e type="datetime">2005-03-17T21:41:07Z</e>
190
+ <f>unparsed</f>
191
+ <g type="integer">1</g>
192
+ <g>hello</g>
193
+ <g type="date">1974-07-25</g>
194
+ </data>
195
+ XML
196
+ post "/", xml, {'CONTENT_TYPE' => 'application/xml'}
197
+
198
+ params = @controller.params
199
+ assert_equal 15, params[:data][:a]
200
+ assert_equal false, params[:data][:b]
201
+ assert_equal true, params[:data][:c]
202
+ assert_equal Date.new(2005,3,17), params[:data][:d]
203
+ assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e]
204
+ assert_equal "unparsed", params[:data][:f]
205
+ assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g]
206
+ end
207
+ end
208
+
209
+ def test_entities_unescaped_as_xml_simple
210
+ with_test_route_set do
211
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
212
+ xml = <<-XML
213
+ <data>&lt;foo &quot;bar&apos;s&quot; &amp; friends&gt;</data>
214
+ XML
215
+ post "/", xml, {'CONTENT_TYPE' => 'application/xml'}
216
+ assert_equal %(<foo "bar's" & friends>), @controller.params[:data]
217
+ end
218
+ end
219
+
220
+ def test_typecast_as_yaml
221
+ with_test_route_set do
222
+ ActionController::Base.param_parsers[Mime::YAML] = :yaml
223
+ yaml = <<-YAML
224
+ ---
225
+ data:
226
+ a: 15
227
+ b: false
228
+ c: true
229
+ d: 2005-03-17
230
+ e: 2005-03-17T21:41:07Z
231
+ f: unparsed
232
+ g:
233
+ - 1
234
+ - hello
235
+ - 1974-07-25
236
+ YAML
237
+ post "/", yaml, {'CONTENT_TYPE' => 'application/x-yaml'}
238
+ params = @controller.params
239
+ assert_equal 15, params[:data][:a]
240
+ assert_equal false, params[:data][:b]
241
+ assert_equal true, params[:data][:c]
242
+ assert_equal Date.new(2005,3,17), params[:data][:d]
243
+ assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e]
244
+ assert_equal "unparsed", params[:data][:f]
245
+ assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g]
246
+ end
247
+ end
248
+
249
+ private
250
+ def with_test_route_set
251
+ with_routing do |set|
252
+ set.draw do |map|
253
+ map.with_options :controller => "web_service_test/test" do |c|
254
+ c.connect "/", :action => "assign_parameters"
255
+ end
256
+ end
257
+ yield
258
+ end
259
+ end
260
+ end
@@ -0,0 +1 @@
1
+ top level partial html
@@ -0,0 +1 @@
1
+ top level partial
@@ -0,0 +1 @@
1
+ We only need to get this far!
@@ -0,0 +1,3 @@
1
+ module FooHelper
2
+ def baz() end
3
+ end
@@ -0,0 +1 @@
1
+ <%= greeting %> bad customer: <%= bad_customer.name %><%= bad_customer_counter %>
@@ -0,0 +1,24 @@
1
+ thirty_seven_signals:
2
+ id: 1
3
+ name: 37Signals
4
+ rating: 4
5
+
6
+ TextDrive:
7
+ id: 2
8
+ name: TextDrive
9
+ rating: 4
10
+
11
+ PlanetArgon:
12
+ id: 3
13
+ name: Planet Argon
14
+ rating: 4
15
+
16
+ Google:
17
+ id: 4
18
+ name: Google
19
+ rating: 4
20
+
21
+ Ionist:
22
+ id: 5
23
+ name: Ioni.st
24
+ rating: 4
@@ -0,0 +1,10 @@
1
+ class Company < ActiveRecord::Base
2
+ has_one :mascot
3
+ attr_protected :rating
4
+ set_sequence_name :companies_nonstd_seq
5
+
6
+ validates_presence_of :name
7
+ def validate
8
+ errors.add('rating', 'rating should not be 2') if rating == 2
9
+ end
10
+ end
@@ -0,0 +1 @@
1
+ <%= 'hello world!' %>
@@ -0,0 +1 @@
1
+ page.alert 'hello world!'
@@ -0,0 +1 @@
1
+ xml.p "Hello world!"
@@ -0,0 +1 @@
1
+ <%= greeting %>: <%= customer.name %>
@@ -0,0 +1,49 @@
1
+ CREATE TABLE 'companies' (
2
+ 'id' INTEGER PRIMARY KEY NOT NULL,
3
+ 'name' TEXT DEFAULT NULL,
4
+ 'rating' INTEGER DEFAULT 1
5
+ );
6
+
7
+ CREATE TABLE 'replies' (
8
+ 'id' INTEGER PRIMARY KEY NOT NULL,
9
+ 'content' text,
10
+ 'created_at' datetime,
11
+ 'updated_at' datetime,
12
+ 'topic_id' integer,
13
+ 'developer_id' integer
14
+ );
15
+
16
+ CREATE TABLE 'topics' (
17
+ 'id' INTEGER PRIMARY KEY NOT NULL,
18
+ 'title' varchar(255),
19
+ 'subtitle' varchar(255),
20
+ 'content' text,
21
+ 'created_at' datetime,
22
+ 'updated_at' datetime
23
+ );
24
+
25
+ CREATE TABLE 'developers' (
26
+ 'id' INTEGER PRIMARY KEY NOT NULL,
27
+ 'name' TEXT DEFAULT NULL,
28
+ 'salary' INTEGER DEFAULT 70000,
29
+ 'created_at' DATETIME DEFAULT NULL,
30
+ 'updated_at' DATETIME DEFAULT NULL
31
+ );
32
+
33
+ CREATE TABLE 'projects' (
34
+ 'id' INTEGER PRIMARY KEY NOT NULL,
35
+ 'name' TEXT DEFAULT NULL
36
+ );
37
+
38
+ CREATE TABLE 'developers_projects' (
39
+ 'developer_id' INTEGER NOT NULL,
40
+ 'project_id' INTEGER NOT NULL,
41
+ 'joined_on' DATE DEFAULT NULL,
42
+ 'access_level' INTEGER DEFAULT 1
43
+ );
44
+
45
+ CREATE TABLE 'mascots' (
46
+ 'id' INTEGER PRIMARY KEY NOT NULL,
47
+ 'company_id' INTEGER NOT NULL,
48
+ 'name' TEXT DEFAULT NULL
49
+ );
@@ -0,0 +1,9 @@
1
+ class Developer < ActiveRecord::Base
2
+ has_and_belongs_to_many :projects
3
+ has_many :replies
4
+ has_many :topics, :through => :replies
5
+ end
6
+
7
+ class DeVeLoPeR < ActiveRecord::Base
8
+ set_table_name "developers"
9
+ end
@@ -0,0 +1 @@
1
+ <%= developer.name %>
@@ -0,0 +1,21 @@
1
+ david:
2
+ id: 1
3
+ name: David
4
+ salary: 80000
5
+
6
+ jamis:
7
+ id: 2
8
+ name: Jamis
9
+ salary: 150000
10
+
11
+ <% for digit in 3..10 %>
12
+ dev_<%= digit %>:
13
+ id: <%= digit %>
14
+ name: fixture_<%= digit %>
15
+ salary: 100000
16
+ <% end %>
17
+
18
+ poor_jamis:
19
+ id: 11
20
+ name: Jamis
21
+ salary: 9000
@@ -0,0 +1,13 @@
1
+ david_action_controller:
2
+ developer_id: 1
3
+ project_id: 2
4
+ joined_on: 2004-10-10
5
+
6
+ david_active_record:
7
+ developer_id: 1
8
+ project_id: 1
9
+ joined_on: 2004-10-10
10
+
11
+ jamis_active_record:
12
+ developer_id: 2
13
+ project_id: 1
@@ -0,0 +1 @@
1
+ hello <%= "my" %> world
@@ -0,0 +1 @@
1
+ <%= game.name %>
@@ -0,0 +1 @@
1
+ Living in a nested world
@@ -0,0 +1 @@
1
+ <%= game.name %>
@@ -0,0 +1,3 @@
1
+ <% cache do %>
2
+ Fragment caching in a partial
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <body>
2
+ <% cache do %><p>ERB</p><% end %>
3
+ </body>
@@ -0,0 +1,6 @@
1
+ page.assign 'title', 'Hey'
2
+ cache do
3
+ page['element_1'].visual_effect :highlight
4
+ page['element_2'].visual_effect :highlight
5
+ end
6
+ page.assign 'footer', 'Bye'
@@ -0,0 +1,5 @@
1
+ xml.body do
2
+ cache do
3
+ xml.p "Builder"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ Hello
2
+ <% cache do %>This bit's fragment cached<% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'partial' %>
@@ -0,0 +1,2 @@
1
+ <%= render :inline => 'Some inline content' %>
2
+ <% cache do %>Some cached content<% end %>
@@ -0,0 +1 @@
1
+ page.replace_html 'notices', :partial => 'partial'
@@ -0,0 +1 @@
1
+ <%= greeting %> good customer: <%= good_customer.name %><%= good_customer_counter %>
@@ -0,0 +1,5 @@
1
+ module AbcHelper
2
+ def bare_a() end
3
+ def bare_b() end
4
+ def bare_c() end
5
+ end
@@ -0,0 +1,3 @@
1
+ module Fun::GamesHelper
2
+ def stratego() "Iz guuut!" end
3
+ end
@@ -0,0 +1,3 @@
1
+ module Fun::PdfHelper
2
+ def foobar() 'baz' end
3
+ end
@@ -0,0 +1 @@
1
+ abs_path_layout.rhtml <%= yield %>
@@ -0,0 +1 @@
1
+ alt/hello.rhtml
File without changes
@@ -0,0 +1 @@
1
+ controller_name_space/nested.rhtml <%= yield %>
@@ -0,0 +1 @@
1
+ item.rhtml <%= yield %>
@@ -0,0 +1 @@
1
+ layout_test.rhtml <%= yield %>
@@ -0,0 +1 @@
1
+ multiple_extensions.html.erb <%= yield %>