actionpack_csi 2.3.5.p6

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 (429) hide show
  1. data/CHANGELOG +5184 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +409 -0
  4. data/RUNNING_UNIT_TESTS +24 -0
  5. data/Rakefile +160 -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 +160 -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 +1423 -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 +95 -0
  27. data/lib/action_controller/dispatcher.rb +133 -0
  28. data/lib/action_controller/failsafe.rb +86 -0
  29. data/lib/action_controller/filters.rb +680 -0
  30. data/lib/action_controller/flash.rb +171 -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 +692 -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 +493 -0
  48. data/lib/action_controller/request_forgery_protection.rb +113 -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 +239 -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 +502 -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 +181 -0
  61. data/lib/action_controller/session/cookie_store.rb +221 -0
  62. data/lib/action_controller/session/mem_cache_store.rb +51 -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 +216 -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/erb/util.rb +44 -0
  93. data/lib/action_view/helpers/active_record_helper.rb +305 -0
  94. data/lib/action_view/helpers/asset_tag_helper.rb +694 -0
  95. data/lib/action_view/helpers/atom_feed_helper.rb +198 -0
  96. data/lib/action_view/helpers/benchmark_helper.rb +54 -0
  97. data/lib/action_view/helpers/cache_helper.rb +39 -0
  98. data/lib/action_view/helpers/capture_helper.rb +136 -0
  99. data/lib/action_view/helpers/date_helper.rb +988 -0
  100. data/lib/action_view/helpers/debug_helper.rb +38 -0
  101. data/lib/action_view/helpers/form_helper.rb +1074 -0
  102. data/lib/action_view/helpers/form_options_helper.rb +600 -0
  103. data/lib/action_view/helpers/form_tag_helper.rb +487 -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 +259 -0
  111. data/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
  112. data/lib/action_view/helpers/tag_helper.rb +150 -0
  113. data/lib/action_view/helpers/text_helper.rb +587 -0
  114. data/lib/action_view/helpers/translation_helper.rb +39 -0
  115. data/lib/action_view/helpers/url_helper.rb +639 -0
  116. data/lib/action_view/helpers.rb +59 -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 +240 -0
  120. data/lib/action_view/paths.rb +69 -0
  121. data/lib/action_view/reloadable_template.rb +117 -0
  122. data/lib/action_view/renderable.rb +95 -0
  123. data/lib/action_view/renderable_partial.rb +47 -0
  124. data/lib/action_view/safe_buffer.rb +28 -0
  125. data/lib/action_view/template.rb +252 -0
  126. data/lib/action_view/template_error.rb +99 -0
  127. data/lib/action_view/template_handler.rb +34 -0
  128. data/lib/action_view/template_handlers/builder.rb +17 -0
  129. data/lib/action_view/template_handlers/erb.rb +22 -0
  130. data/lib/action_view/template_handlers/rjs.rb +13 -0
  131. data/lib/action_view/template_handlers.rb +48 -0
  132. data/lib/action_view/test_case.rb +162 -0
  133. data/lib/action_view.rb +58 -0
  134. data/lib/actionpack.rb +2 -0
  135. data/test/abstract_unit.rb +61 -0
  136. data/test/active_record_unit.rb +104 -0
  137. data/test/activerecord/active_record_store_test.rb +174 -0
  138. data/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
  139. data/test/adv_attr_test.rb +20 -0
  140. data/test/controller/action_pack_assertions_test.rb +543 -0
  141. data/test/controller/addresses_render_test.rb +37 -0
  142. data/test/controller/assert_select_test.rb +734 -0
  143. data/test/controller/base_test.rb +217 -0
  144. data/test/controller/benchmark_test.rb +32 -0
  145. data/test/controller/caching_test.rb +729 -0
  146. data/test/controller/capture_test.rb +66 -0
  147. data/test/controller/content_type_test.rb +168 -0
  148. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  149. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  150. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  151. data/test/controller/cookie_test.rb +134 -0
  152. data/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
  153. data/test/controller/dispatcher_test.rb +144 -0
  154. data/test/controller/dom_assertions_test.rb +53 -0
  155. data/test/controller/failsafe_test.rb +60 -0
  156. data/test/controller/fake_controllers.rb +33 -0
  157. data/test/controller/fake_models.rb +19 -0
  158. data/test/controller/filter_params_test.rb +52 -0
  159. data/test/controller/filters_test.rb +885 -0
  160. data/test/controller/flash_test.rb +147 -0
  161. data/test/controller/header_test.rb +14 -0
  162. data/test/controller/helper_test.rb +224 -0
  163. data/test/controller/html-scanner/cdata_node_test.rb +15 -0
  164. data/test/controller/html-scanner/document_test.rb +148 -0
  165. data/test/controller/html-scanner/node_test.rb +89 -0
  166. data/test/controller/html-scanner/sanitizer_test.rb +274 -0
  167. data/test/controller/html-scanner/tag_node_test.rb +238 -0
  168. data/test/controller/html-scanner/text_node_test.rb +50 -0
  169. data/test/controller/html-scanner/tokenizer_test.rb +131 -0
  170. data/test/controller/http_basic_authentication_test.rb +113 -0
  171. data/test/controller/http_digest_authentication_test.rb +254 -0
  172. data/test/controller/integration_test.rb +483 -0
  173. data/test/controller/layout_test.rb +215 -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/polymorphic_routes_test.rb +297 -0
  179. data/test/controller/rack_test.rb +311 -0
  180. data/test/controller/record_identifier_test.rb +139 -0
  181. data/test/controller/redirect_test.rb +285 -0
  182. data/test/controller/reloader_test.rb +124 -0
  183. data/test/controller/render_test.rb +1762 -0
  184. data/test/controller/request/json_params_parsing_test.rb +65 -0
  185. data/test/controller/request/multipart_params_parsing_test.rb +162 -0
  186. data/test/controller/request/query_string_parsing_test.rb +120 -0
  187. data/test/controller/request/test_request_test.rb +35 -0
  188. data/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
  189. data/test/controller/request/xml_params_parsing_test.rb +103 -0
  190. data/test/controller/request_forgery_protection_test.rb +265 -0
  191. data/test/controller/request_test.rb +395 -0
  192. data/test/controller/rescue_test.rb +536 -0
  193. data/test/controller/resources_test.rb +1393 -0
  194. data/test/controller/routing_test.rb +2591 -0
  195. data/test/controller/selector_test.rb +628 -0
  196. data/test/controller/send_file_test.rb +171 -0
  197. data/test/controller/session/cookie_store_test.rb +216 -0
  198. data/test/controller/session/mem_cache_store_test.rb +127 -0
  199. data/test/controller/session/test_session_test.rb +58 -0
  200. data/test/controller/test_test.rb +700 -0
  201. data/test/controller/translation_test.rb +26 -0
  202. data/test/controller/url_rewriter_test.rb +385 -0
  203. data/test/controller/verification_test.rb +270 -0
  204. data/test/controller/view_paths_test.rb +141 -0
  205. data/test/controller/webservice_test.rb +273 -0
  206. data/test/fixtures/_top_level_partial.html.erb +1 -0
  207. data/test/fixtures/_top_level_partial_only.erb +1 -0
  208. data/test/fixtures/addresses/list.erb +1 -0
  209. data/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  210. data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  211. data/test/fixtures/companies.yml +24 -0
  212. data/test/fixtures/company.rb +10 -0
  213. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  214. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  215. data/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  216. data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  217. data/test/fixtures/customers/_customer.html.erb +1 -0
  218. data/test/fixtures/db_definitions/sqlite.sql +49 -0
  219. data/test/fixtures/developer.rb +9 -0
  220. data/test/fixtures/developers/_developer.erb +1 -0
  221. data/test/fixtures/developers.yml +21 -0
  222. data/test/fixtures/developers_projects.yml +13 -0
  223. data/test/fixtures/failsafe/500.html +1 -0
  224. data/test/fixtures/fun/games/_game.erb +1 -0
  225. data/test/fixtures/fun/games/hello_world.erb +1 -0
  226. data/test/fixtures/fun/serious/games/_game.erb +1 -0
  227. data/test/fixtures/functional_caching/_partial.erb +3 -0
  228. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  229. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  230. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  231. data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  232. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  233. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  234. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  235. data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  236. data/test/fixtures/helpers/abc_helper.rb +5 -0
  237. data/test/fixtures/helpers/fun/games_helper.rb +3 -0
  238. data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  239. data/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  240. data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  241. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  242. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  243. data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  244. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  245. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  246. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  247. data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  248. data/test/fixtures/layouts/_column.html.erb +2 -0
  249. data/test/fixtures/layouts/block_with_layout.erb +3 -0
  250. data/test/fixtures/layouts/builder.builder +3 -0
  251. data/test/fixtures/layouts/default_html.html.erb +1 -0
  252. data/test/fixtures/layouts/partial_with_layout.erb +3 -0
  253. data/test/fixtures/layouts/standard.erb +1 -0
  254. data/test/fixtures/layouts/talk_from_action.erb +2 -0
  255. data/test/fixtures/layouts/xhr.html.erb +2 -0
  256. data/test/fixtures/layouts/yield.erb +2 -0
  257. data/test/fixtures/mascot.rb +3 -0
  258. data/test/fixtures/mascots/_mascot.html.erb +1 -0
  259. data/test/fixtures/mascots.yml +4 -0
  260. data/test/fixtures/multipart/binary_file +0 -0
  261. data/test/fixtures/multipart/boundary_problem_file +10 -0
  262. data/test/fixtures/multipart/bracketed_param +5 -0
  263. data/test/fixtures/multipart/empty +10 -0
  264. data/test/fixtures/multipart/hello.txt +1 -0
  265. data/test/fixtures/multipart/large_text_file +10 -0
  266. data/test/fixtures/multipart/mixed_files +0 -0
  267. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  268. data/test/fixtures/multipart/none +9 -0
  269. data/test/fixtures/multipart/single_parameter +5 -0
  270. data/test/fixtures/multipart/text_file +10 -0
  271. data/test/fixtures/override/test/hello_world.erb +1 -0
  272. data/test/fixtures/override2/layouts/test/sub.erb +1 -0
  273. data/test/fixtures/post_test/layouts/post.html.erb +1 -0
  274. data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  275. data/test/fixtures/post_test/post/index.html.erb +1 -0
  276. data/test/fixtures/post_test/post/index.iphone.erb +1 -0
  277. data/test/fixtures/post_test/super_post/index.html.erb +1 -0
  278. data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  279. data/test/fixtures/project.rb +3 -0
  280. data/test/fixtures/projects/_project.erb +1 -0
  281. data/test/fixtures/projects.yml +7 -0
  282. data/test/fixtures/public/404.html +1 -0
  283. data/test/fixtures/public/500.da.html +1 -0
  284. data/test/fixtures/public/500.html +1 -0
  285. data/test/fixtures/public/absolute/test.css +23 -0
  286. data/test/fixtures/public/absolute/test.js +63 -0
  287. data/test/fixtures/public/images/rails.png +0 -0
  288. data/test/fixtures/public/javascripts/application.js +1 -0
  289. data/test/fixtures/public/javascripts/bank.js +1 -0
  290. data/test/fixtures/public/javascripts/controls.js +1 -0
  291. data/test/fixtures/public/javascripts/dragdrop.js +1 -0
  292. data/test/fixtures/public/javascripts/effects.js +1 -0
  293. data/test/fixtures/public/javascripts/prototype.js +1 -0
  294. data/test/fixtures/public/javascripts/robber.js +1 -0
  295. data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  296. data/test/fixtures/public/javascripts/version.1.0.js +1 -0
  297. data/test/fixtures/public/stylesheets/bank.css +1 -0
  298. data/test/fixtures/public/stylesheets/robber.css +1 -0
  299. data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  300. data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  301. data/test/fixtures/quiz/questions/_question.html.erb +1 -0
  302. data/test/fixtures/replies/_reply.erb +1 -0
  303. data/test/fixtures/replies.yml +15 -0
  304. data/test/fixtures/reply.rb +7 -0
  305. data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  306. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  307. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  308. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  309. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  310. data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  311. data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  312. data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  313. data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  314. data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  315. data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  316. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  317. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  318. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  319. data/test/fixtures/scope/test/modgreet.erb +1 -0
  320. data/test/fixtures/shared.html.erb +1 -0
  321. data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  322. data/test/fixtures/test/_counter.html.erb +1 -0
  323. data/test/fixtures/test/_customer.erb +1 -0
  324. data/test/fixtures/test/_customer_counter.erb +1 -0
  325. data/test/fixtures/test/_customer_greeting.erb +1 -0
  326. data/test/fixtures/test/_customer_with_var.erb +1 -0
  327. data/test/fixtures/test/_form.erb +1 -0
  328. data/test/fixtures/test/_from_helper.erb +1 -0
  329. data/test/fixtures/test/_hash_greeting.erb +1 -0
  330. data/test/fixtures/test/_hash_object.erb +2 -0
  331. data/test/fixtures/test/_hello.builder +1 -0
  332. data/test/fixtures/test/_labelling_form.erb +1 -0
  333. data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  334. data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  335. data/test/fixtures/test/_local_inspector.html.erb +1 -0
  336. data/test/fixtures/test/_one.html.erb +1 -0
  337. data/test/fixtures/test/_partial.erb +1 -0
  338. data/test/fixtures/test/_partial.html.erb +1 -0
  339. data/test/fixtures/test/_partial.js.erb +1 -0
  340. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  341. data/test/fixtures/test/_partial_only.erb +1 -0
  342. data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  343. data/test/fixtures/test/_person.erb +2 -0
  344. data/test/fixtures/test/_raise.html.erb +1 -0
  345. data/test/fixtures/test/_two.html.erb +1 -0
  346. data/test/fixtures/test/action_talk_to_layout.erb +2 -0
  347. data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  348. data/test/fixtures/test/capturing.erb +4 -0
  349. data/test/fixtures/test/content_for.erb +2 -0
  350. data/test/fixtures/test/content_for_concatenated.erb +3 -0
  351. data/test/fixtures/test/content_for_with_parameter.erb +2 -0
  352. data/test/fixtures/test/delete_with_js.rjs +2 -0
  353. data/test/fixtures/test/dont_pick_me +1 -0
  354. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  355. data/test/fixtures/test/enum_rjs_test.rjs +6 -0
  356. data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  357. data/test/fixtures/test/formatted_xml_erb.builder +1 -0
  358. data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  359. data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  360. data/test/fixtures/test/greeting.erb +1 -0
  361. data/test/fixtures/test/greeting.js.rjs +1 -0
  362. data/test/fixtures/test/hello.builder +4 -0
  363. data/test/fixtures/test/hello_world.da.html.erb +1 -0
  364. data/test/fixtures/test/hello_world.erb +1 -0
  365. data/test/fixtures/test/hello_world.erb~ +1 -0
  366. data/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  367. data/test/fixtures/test/hello_world_container.builder +3 -0
  368. data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  369. data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  370. data/test/fixtures/test/hello_xml_world.builder +11 -0
  371. data/test/fixtures/test/hyphen-ated.erb +1 -0
  372. data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  373. data/test/fixtures/test/list.erb +1 -0
  374. data/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  375. data/test/fixtures/test/malformed/malformed.erb~ +1 -0
  376. data/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  377. data/test/fixtures/test/nested_layout.erb +3 -0
  378. data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  379. data/test/fixtures/test/potential_conflicts.erb +4 -0
  380. data/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
  381. data/test/fixtures/test/render_file_from_template.html.erb +1 -0
  382. data/test/fixtures/test/render_file_with_ivar.erb +1 -0
  383. data/test/fixtures/test/render_file_with_locals.erb +1 -0
  384. data/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
  385. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  386. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  387. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
  388. data/test/fixtures/test/render_to_string_test.erb +1 -0
  389. data/test/fixtures/test/sub_template_raise.html.erb +1 -0
  390. data/test/fixtures/test/template.erb +1 -0
  391. data/test/fixtures/test/update_element_with_capture.erb +9 -0
  392. data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  393. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  394. data/test/fixtures/test/utf8.html.erb +2 -0
  395. data/test/fixtures/topic.rb +3 -0
  396. data/test/fixtures/topics/_topic.html.erb +1 -0
  397. data/test/fixtures/topics.yml +22 -0
  398. data/test/template/active_record_helper_i18n_test.rb +44 -0
  399. data/test/template/active_record_helper_test.rb +302 -0
  400. data/test/template/asset_tag_helper_test.rb +771 -0
  401. data/test/template/atom_feed_helper_test.rb +315 -0
  402. data/test/template/benchmark_helper_test.rb +86 -0
  403. data/test/template/compiled_templates_test.rb +204 -0
  404. data/test/template/date_helper_i18n_test.rb +121 -0
  405. data/test/template/date_helper_test.rb +2485 -0
  406. data/test/template/erb_util_test.rb +24 -0
  407. data/test/template/form_helper_test.rb +1393 -0
  408. data/test/template/form_options_helper_i18n_test.rb +27 -0
  409. data/test/template/form_options_helper_test.rb +807 -0
  410. data/test/template/form_tag_helper_test.rb +344 -0
  411. data/test/template/javascript_helper_test.rb +106 -0
  412. data/test/template/number_helper_i18n_test.rb +69 -0
  413. data/test/template/number_helper_test.rb +132 -0
  414. data/test/template/prototype_helper_test.rb +639 -0
  415. data/test/template/raw_output_helper_test.rb +21 -0
  416. data/test/template/record_tag_helper_test.rb +58 -0
  417. data/test/template/render_test.rb +290 -0
  418. data/test/template/sanitize_helper_test.rb +57 -0
  419. data/test/template/scriptaculous_helper_test.rb +90 -0
  420. data/test/template/tag_helper_test.rb +98 -0
  421. data/test/template/template_test.rb +32 -0
  422. data/test/template/test_test.rb +54 -0
  423. data/test/template/text_helper_test.rb +543 -0
  424. data/test/template/translation_helper_test.rb +32 -0
  425. data/test/template/url_helper_test.rb +622 -0
  426. data/test/testing_sandbox.rb +15 -0
  427. data/test/view/safe_buffer_test.rb +36 -0
  428. data/test/view/test_case_test.rb +176 -0
  429. metadata +531 -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,273 @@
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_post_xml_using_a_disallowed_type_attribute
125
+ $stderr = StringIO.new
126
+ with_test_route_set do
127
+ post '/', '<foo type="symbol">value</foo>', 'CONTENT_TYPE' => 'application/xml'
128
+ assert_response 500
129
+
130
+ post '/', '<foo type="yaml">value</foo>', 'CONTENT_TYPE' => 'application/xml'
131
+ assert_response 500
132
+ end
133
+ ensure
134
+ $stderr = STDERR
135
+ end
136
+
137
+ def test_register_and_use_yaml
138
+ with_test_route_set do
139
+ ActionController::Base.param_parsers[Mime::YAML] = Proc.new { |d| YAML.load(d) }
140
+ post "/", {"entry" => "loaded from yaml"}.to_yaml,
141
+ {'CONTENT_TYPE' => 'application/x-yaml'}
142
+
143
+ assert_equal 'entry', @controller.response.body
144
+ assert @controller.params.has_key?(:entry)
145
+ assert_equal 'loaded from yaml', @controller.params["entry"]
146
+ end
147
+ end
148
+
149
+ def test_register_and_use_yaml_as_symbol
150
+ with_test_route_set do
151
+ ActionController::Base.param_parsers[Mime::YAML] = :yaml
152
+ post "/", {"entry" => "loaded from yaml"}.to_yaml,
153
+ {'CONTENT_TYPE' => 'application/x-yaml'}
154
+
155
+ assert_equal 'entry', @controller.response.body
156
+ assert @controller.params.has_key?(:entry)
157
+ assert_equal 'loaded from yaml', @controller.params["entry"]
158
+ end
159
+ end
160
+
161
+ def test_register_and_use_xml_simple
162
+ with_test_route_set do
163
+ ActionController::Base.param_parsers[Mime::XML] = Proc.new { |data| Hash.from_xml(data)['request'].with_indifferent_access }
164
+ post "/", '<request><summary>content...</summary><title>SimpleXml</title></request>',
165
+ {'CONTENT_TYPE' => 'application/xml'}
166
+
167
+ assert_equal 'summary, title', @controller.response.body
168
+ assert @controller.params.has_key?(:summary)
169
+ assert @controller.params.has_key?(:title)
170
+ assert_equal 'content...', @controller.params["summary"]
171
+ assert_equal 'SimpleXml', @controller.params["title"]
172
+ end
173
+ end
174
+
175
+ def test_use_xml_ximple_with_empty_request
176
+ with_test_route_set do
177
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
178
+ assert_nothing_raised { post "/", "", {'CONTENT_TYPE' => 'application/xml'} }
179
+ assert_equal "", @controller.response.body
180
+ end
181
+ end
182
+
183
+ def test_dasherized_keys_as_xml
184
+ with_test_route_set do
185
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
186
+ post "/?full=1", "<first-key>\n<sub-key>...</sub-key>\n</first-key>",
187
+ {'CONTENT_TYPE' => 'application/xml'}
188
+ assert_equal 'action, controller, first_key(sub_key), full', @controller.response.body
189
+ assert_equal "...", @controller.params[:first_key][:sub_key]
190
+ end
191
+ end
192
+
193
+ def test_typecast_as_xml
194
+ with_test_route_set do
195
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
196
+ xml = <<-XML
197
+ <data>
198
+ <a type="integer">15</a>
199
+ <b type="boolean">false</b>
200
+ <c type="boolean">true</c>
201
+ <d type="date">2005-03-17</d>
202
+ <e type="datetime">2005-03-17T21:41:07Z</e>
203
+ <f>unparsed</f>
204
+ <g type="integer">1</g>
205
+ <g>hello</g>
206
+ <g type="date">1974-07-25</g>
207
+ </data>
208
+ XML
209
+ post "/", xml, {'CONTENT_TYPE' => 'application/xml'}
210
+
211
+ params = @controller.params
212
+ assert_equal 15, params[:data][:a]
213
+ assert_equal false, params[:data][:b]
214
+ assert_equal true, params[:data][:c]
215
+ assert_equal Date.new(2005,3,17), params[:data][:d]
216
+ assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e]
217
+ assert_equal "unparsed", params[:data][:f]
218
+ assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g]
219
+ end
220
+ end
221
+
222
+ def test_entities_unescaped_as_xml_simple
223
+ with_test_route_set do
224
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
225
+ xml = <<-XML
226
+ <data>&lt;foo &quot;bar&apos;s&quot; &amp; friends&gt;</data>
227
+ XML
228
+ post "/", xml, {'CONTENT_TYPE' => 'application/xml'}
229
+ assert_equal %(<foo "bar's" & friends>), @controller.params[:data]
230
+ end
231
+ end
232
+
233
+ def test_typecast_as_yaml
234
+ with_test_route_set do
235
+ ActionController::Base.param_parsers[Mime::YAML] = :yaml
236
+ yaml = <<-YAML
237
+ ---
238
+ data:
239
+ a: 15
240
+ b: false
241
+ c: true
242
+ d: 2005-03-17
243
+ e: 2005-03-17T21:41:07Z
244
+ f: unparsed
245
+ g:
246
+ - 1
247
+ - hello
248
+ - 1974-07-25
249
+ YAML
250
+ post "/", yaml, {'CONTENT_TYPE' => 'application/x-yaml'}
251
+ params = @controller.params
252
+ assert_equal 15, params[:data][:a]
253
+ assert_equal false, params[:data][:b]
254
+ assert_equal true, params[:data][:c]
255
+ assert_equal Date.new(2005,3,17), params[:data][:d]
256
+ assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e]
257
+ assert_equal "unparsed", params[:data][:f]
258
+ assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g]
259
+ end
260
+ end
261
+
262
+ private
263
+ def with_test_route_set
264
+ with_routing do |set|
265
+ set.draw do |map|
266
+ map.with_options :controller => "web_service_test/test" do |c|
267
+ c.connect "/", :action => "assign_parameters"
268
+ end
269
+ end
270
+ yield
271
+ end
272
+ end
273
+ 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 %>