radiant 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of radiant might be problematic. Click here for more details.

Files changed (1442) hide show
  1. data/CHANGELOG +70 -1
  2. data/CONTRIBUTORS +22 -5
  3. data/INSTALL +36 -0
  4. data/LICENSE +16 -4
  5. data/README +17 -54
  6. data/Rakefile +6 -5
  7. data/app/controllers/admin/{model_controller.rb → abstract_model_controller.rb} +32 -21
  8. data/app/controllers/admin/export_controller.rb +1 -3
  9. data/app/controllers/admin/extension_controller.rb +10 -0
  10. data/app/controllers/admin/layout_controller.rb +1 -3
  11. data/app/controllers/admin/page_controller.rb +58 -56
  12. data/app/controllers/admin/snippet_controller.rb +1 -4
  13. data/app/controllers/admin/user_controller.rb +3 -5
  14. data/app/controllers/admin/welcome_controller.rb +8 -10
  15. data/app/controllers/application.rb +13 -7
  16. data/app/controllers/site_controller.rb +14 -8
  17. data/app/helpers/admin/export_helper.rb +1 -1
  18. data/app/helpers/admin/extension_helper.rb +2 -0
  19. data/app/helpers/admin/page_helper.rb +29 -4
  20. data/app/helpers/application_helper.rb +30 -13
  21. data/app/models/archive_day_index_page.rb +28 -0
  22. data/app/models/archive_finder.rb +7 -4
  23. data/app/models/archive_month_index_page.rb +28 -0
  24. data/app/models/archive_page.rb +36 -0
  25. data/app/models/archive_year_index_page.rb +28 -0
  26. data/app/{behaviors/env_behavior.rb → models/env_dump_page.rb} +5 -6
  27. data/app/models/file_not_found_page.rb +28 -0
  28. data/app/models/layout.rb +4 -1
  29. data/app/models/page.rb +193 -30
  30. data/app/models/page_context.rb +6 -493
  31. data/app/models/page_part.rb +5 -1
  32. data/app/models/radiant/config.rb +18 -5
  33. data/app/models/radiant/extension_meta.rb +5 -0
  34. data/app/models/response_cache.rb +89 -28
  35. data/app/models/snippet.rb +5 -2
  36. data/app/models/standard_tags.rb +601 -0
  37. data/app/models/status.rb +2 -2
  38. data/app/models/text_filter.rb +20 -6
  39. data/app/models/user.rb +3 -0
  40. data/app/views/admin/extension/index.rhtml +45 -0
  41. data/app/views/admin/layout/{new.rhtml → edit.rhtml} +6 -4
  42. data/app/views/admin/layout/index.rhtml +3 -3
  43. data/app/views/admin/layout/remove.rhtml +1 -1
  44. data/app/views/admin/page/_meta_row.rhtml +4 -0
  45. data/app/views/admin/page/_node.rhtml +9 -9
  46. data/app/views/admin/page/_part.rhtml +3 -2
  47. data/app/views/admin/page/_tag_reference.rhtml +4 -0
  48. data/app/views/admin/page/{new.rhtml → edit.rhtml} +223 -164
  49. data/app/views/admin/page/filter_reference.rjs +5 -0
  50. data/app/views/admin/page/index.rhtml +3 -168
  51. data/app/views/admin/page/tag_reference.rjs +5 -0
  52. data/app/views/admin/snippet/{new.rhtml → edit.rhtml} +2 -1
  53. data/app/views/admin/snippet/index.rhtml +3 -3
  54. data/app/views/admin/user/{new.rhtml → edit.rhtml} +7 -1
  55. data/app/views/admin/user/index.rhtml +2 -2
  56. data/app/views/layouts/application.rhtml +45 -37
  57. data/bin/radiant +44 -421
  58. data/config/boot.rb +14 -60
  59. data/config/database.mysql.yml +5 -0
  60. data/config/database.postgresql.yml +5 -0
  61. data/config/database.sqlite.yml +11 -15
  62. data/config/database.sqlserver.yml +20 -0
  63. data/config/environment.rb +13 -18
  64. data/config/environments/production.rb +1 -3
  65. data/config/environments/test.rb +2 -0
  66. data/config/routes.rb +8 -0
  67. data/db/migrate/001_create_radiant_tables.rb +6 -6
  68. data/db/migrate/002_insert_initial_data.rb +5 -45
  69. data/db/migrate/006_integer_columns_to_boolean.rb +26 -1
  70. data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
  71. data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
  72. data/db/migrate/012_create_extension_meta.rb +13 -0
  73. data/db/migrate/013_add_notes_field_to_user.rb +9 -0
  74. data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
  75. data/db/migrate/015_add_optimistic_locking.rb +15 -0
  76. data/db/schema.rb +54 -43
  77. data/db/templates/simple-blog.yml +3 -3
  78. data/db/templates/styled-blog.yml +3 -3
  79. data/lib/annotatable.rb +52 -0
  80. data/lib/archive_index_tags_and_methods.rb +57 -0
  81. data/lib/generators/extension/USAGE +28 -0
  82. data/lib/generators/extension/extension_generator.rb +38 -0
  83. data/lib/generators/extension/templates/README +3 -0
  84. data/lib/generators/extension/templates/Rakefile +25 -0
  85. data/lib/generators/extension/templates/extension.rb +21 -0
  86. data/lib/generators/extension/templates/functional_test.rb +15 -0
  87. data/lib/generators/extension/templates/migration.rb +9 -0
  88. data/lib/generators/extension/templates/tasks.rake +17 -0
  89. data/lib/generators/extension/templates/test_helper.rb +18 -0
  90. data/lib/generators/extension_controller/USAGE +34 -0
  91. data/lib/generators/extension_controller/extension_controller_generator.rb +26 -0
  92. data/lib/generators/extension_controller/templates/controller.rb +14 -0
  93. data/lib/generators/extension_controller/templates/functional_test.rb +17 -0
  94. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  95. data/lib/generators/extension_controller/templates/view.rhtml +2 -0
  96. data/lib/generators/extension_model/USAGE +34 -0
  97. data/lib/generators/extension_model/extension_model_generator.rb +26 -0
  98. data/lib/generators/extension_model/templates/fixtures.yml +11 -0
  99. data/lib/generators/extension_model/templates/migration.rb +13 -0
  100. data/lib/generators/extension_model/templates/model.rb +2 -0
  101. data/lib/generators/extension_model/templates/unit_test.rb +10 -0
  102. data/lib/generators/instance/instance_generator.rb +116 -0
  103. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  104. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  105. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  106. data/lib/generators/instance/templates/databases/sqlserver.yml +20 -0
  107. data/lib/generators/instance/templates/instance_boot.rb +41 -0
  108. data/lib/generators/instance/templates/instance_environment.rb +6 -0
  109. data/lib/generators/instance/templates/instance_generate +16 -0
  110. data/lib/generators/instance/templates/instance_rakefile +3 -0
  111. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  112. data/lib/inheritable_class_attributes.rb +1 -1
  113. data/lib/login_system.rb +2 -2
  114. data/lib/method_observer.rb +50 -0
  115. data/lib/plugins/active_record_extensions/init.rb +1 -0
  116. data/lib/plugins/active_record_extensions/lib/active_record_extensions.rb +18 -0
  117. data/lib/plugins/extension_patches/init.rb +5 -0
  118. data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +49 -0
  119. data/lib/plugins/extension_patches/lib/generator_base_extension.rb +24 -0
  120. data/lib/plugins/extension_patches/lib/mailer_view_paths_extension.rb +88 -0
  121. data/lib/plugins/extension_patches/lib/routing_extension.rb +31 -0
  122. data/lib/plugins/extension_patches/lib/view_paths_extension.rb +23 -0
  123. data/lib/plugins/object_extensions/init.rb +1 -0
  124. data/lib/plugins/object_extensions/lib/object_extensions.rb +5 -0
  125. data/lib/plugins/response_cache_timeout/init.rb +3 -0
  126. data/lib/plugins/string_extensions/init.rb +1 -0
  127. data/lib/plugins/string_extensions/lib/string_extensions.rb +11 -0
  128. data/lib/radiant.rb +9 -3
  129. data/lib/radiant/admin_ui.rb +82 -0
  130. data/lib/radiant/extension.rb +77 -0
  131. data/lib/radiant/extension_loader.rb +107 -0
  132. data/lib/radiant/extension_migrator.rb +47 -0
  133. data/lib/radiant/initializer.rb +66 -0
  134. data/lib/radiant/setup.rb +209 -0
  135. data/lib/radiant/taggable.rb +74 -0
  136. data/lib/simpleton.rb +21 -0
  137. data/lib/tasks/database.rake +32 -0
  138. data/lib/tasks/environments.rake +11 -0
  139. data/lib/tasks/extensions.rake +27 -0
  140. data/lib/tasks/framework.rake +123 -0
  141. data/lib/tasks/instance.rake +23 -0
  142. data/lib/tasks/release.rake +27 -26
  143. data/lib/tasks/undefine.rake +24 -0
  144. data/log/.keep +0 -0
  145. data/public/images/{add-child.png → admin/add-child.png} +0 -0
  146. data/public/images/{brown-bottom-line.gif → admin/brown-bottom-line.gif} +0 -0
  147. data/public/images/{clear-page-cache.png → admin/clear-page-cache.png} +0 -0
  148. data/public/images/{collapse.png → admin/collapse.png} +0 -0
  149. data/public/images/{expand.png → admin/expand.png} +0 -0
  150. data/public/images/{layout.png → admin/layout.png} +0 -0
  151. data/public/images/{minus.png → admin/minus.png} +0 -0
  152. data/public/images/{new-homepage.png → admin/new-homepage.png} +0 -0
  153. data/public/images/{new-layout.png → admin/new-layout.png} +0 -0
  154. data/public/images/{new-snippet.png → admin/new-snippet.png} +0 -0
  155. data/public/images/{new-user.png → admin/new-user.png} +0 -0
  156. data/public/images/{page.png → admin/page.png} +0 -0
  157. data/public/images/{plus.png → admin/plus.png} +0 -0
  158. data/public/images/{remove-disabled.png → admin/remove-disabled.png} +0 -0
  159. data/public/images/{remove.png → admin/remove.png} +0 -0
  160. data/public/images/{snippet.png → admin/snippet.png} +0 -0
  161. data/public/images/{spinner.gif → admin/spinner.gif} +0 -0
  162. data/public/images/{view-site.gif → admin/view-site.gif} +0 -0
  163. data/public/images/{virtual-page.png → admin/virtual-page.png} +0 -0
  164. data/public/javascripts/controls.js +41 -23
  165. data/public/javascripts/dragdrop.js +105 -76
  166. data/public/javascripts/effects.js +293 -163
  167. data/public/javascripts/pngfix.js +1 -40
  168. data/public/javascripts/prototype.js +679 -300
  169. data/public/javascripts/sitemap.js +176 -0
  170. data/public/javascripts/tag_reference_search.js +30 -0
  171. data/public/stylesheets/{admin.css → admin/main.css} +167 -21
  172. data/script/process/inspector +3 -0
  173. data/test/fixtures/extensions/basic/app/controllers/basic_extension_controller.rb +7 -0
  174. data/test/fixtures/extensions/basic/app/models/basic_extension_mailer.rb +4 -0
  175. data/test/fixtures/extensions/basic/app/models/basic_extension_model.rb +2 -0
  176. data/test/fixtures/extensions/basic/app/views/basic_extension/index.rhtml +1 -0
  177. data/test/fixtures/extensions/basic/app/views/basic_extension/override.rhtml +1 -0
  178. data/test/fixtures/extensions/basic/app/views/basic_extension_mailer/message.rhtml +1 -0
  179. data/test/fixtures/extensions/basic/basic_extension.rb +17 -0
  180. data/test/fixtures/extensions/basic/db/migrate/001_create_initial_schema.rb +8 -0
  181. data/test/fixtures/extensions/basic/db/migrate/002_modify_initial_schema.rb +8 -0
  182. data/test/fixtures/extensions/overriding/app/views/basic_extension/override.rhtml +1 -0
  183. data/test/fixtures/extensions/overriding/overriding_extension.rb +11 -0
  184. data/test/fixtures/pages.yml +14 -12
  185. data/test/fixtures/sample.txt +1 -0
  186. data/test/fixtures/snippets.yml +9 -1
  187. data/test/functional/admin/abstract_model_controller_test.rb +125 -0
  188. data/test/functional/admin/export_controller_test.rb +3 -3
  189. data/test/functional/admin/extension_controller_test.rb +40 -0
  190. data/test/functional/admin/layout_controller_test.rb +3 -3
  191. data/test/functional/admin/page_controller_test.rb +54 -6
  192. data/test/functional/admin/user_controller_test.rb +6 -6
  193. data/test/functional/admin/welcome_controller_test.rb +6 -6
  194. data/test/functional/application_controller_test.rb +11 -11
  195. data/test/functional/extension_initialization_test.rb +94 -0
  196. data/test/functional/login_system_test.rb +45 -72
  197. data/test/functional/site_controller_test.rb +20 -13
  198. data/test/helpers/archive_index_test_helper.rb +2 -0
  199. data/test/helpers/extension_fixture_test_helper.rb +40 -0
  200. data/test/helpers/extension_tag_test_helper.rb +17 -0
  201. data/test/helpers/page_test_helper.rb +33 -1
  202. data/test/helpers/render_test_helper.rb +57 -0
  203. data/test/helpers/routing_test_helper.rb +19 -0
  204. data/test/test_helper.rb +26 -7
  205. data/test/unit/admin_ui_test.rb +93 -0
  206. data/test/unit/annotatable_test.rb +76 -0
  207. data/test/unit/{behaviors/archive_day_index_behavior_test.rb → archive_day_index_page_test.rb} +4 -3
  208. data/test/unit/{behaviors/archive_month_index_behavior_test.rb → archive_month_index_page_test.rb} +5 -4
  209. data/test/unit/{behaviors/archive_behavior_test.rb → archive_page_test.rb} +3 -2
  210. data/test/unit/{behaviors/archive_year_index_behavior_test.rb → archive_year_index_page_test.rb} +5 -4
  211. data/test/unit/extension_migrator_test.rb +17 -0
  212. data/test/unit/extension_test.rb +42 -0
  213. data/test/unit/{behaviors/page_missing_behavior_test.rb → file_not_found_page_test.rb} +4 -4
  214. data/test/unit/method_observer_test.rb +53 -0
  215. data/test/unit/page_context_test.rb +8 -356
  216. data/test/unit/page_test.rb +250 -64
  217. data/test/unit/radiant/config_test.rb +11 -0
  218. data/test/unit/radiant/taggable_test.rb +105 -0
  219. data/test/unit/response_cache_test.rb +69 -15
  220. data/test/unit/simpleton_test.rb +42 -0
  221. data/test/unit/standard_tags_test.rb +424 -0
  222. data/test/unit/text_filter_test.rb +31 -3
  223. data/test/unit/user_test.rb +1 -2
  224. data/vendor/bluecloth/CHANGES +366 -0
  225. data/vendor/bluecloth/LICENSE +340 -0
  226. data/vendor/bluecloth/README +99 -0
  227. data/vendor/bluecloth/bin/bluecloth +83 -0
  228. data/vendor/bluecloth/install.rb +150 -0
  229. data/vendor/bluecloth/lib/bluecloth.rb +1144 -0
  230. data/vendor/bluecloth/test.rb +117 -0
  231. data/vendor/bluecloth/tests/00_Class.tests.rb +71 -0
  232. data/vendor/bluecloth/tests/05_Markdown.tests.rb +1527 -0
  233. data/vendor/bluecloth/tests/10_Bug.tests.rb +57 -0
  234. data/vendor/bluecloth/tests/15_Contrib.tests.rb +132 -0
  235. data/vendor/bluecloth/tests/bctestcase.rb +274 -0
  236. data/vendor/bluecloth/tests/data/antsugar.txt +34 -0
  237. data/vendor/bluecloth/tests/data/ml-announce.txt +17 -0
  238. data/vendor/bluecloth/tests/data/re-overflow.txt +67 -0
  239. data/vendor/bluecloth/tests/data/re-overflow2.txt +281 -0
  240. data/vendor/bluecloth/utils.rb +553 -0
  241. data/vendor/extensions/markdown_filter/README +1 -0
  242. data/vendor/extensions/markdown_filter/Rakefile +25 -0
  243. data/vendor/extensions/markdown_filter/lib/markdown_filter.rb +9 -0
  244. data/vendor/extensions/markdown_filter/lib/smarty_pants_filter.rb +9 -0
  245. data/vendor/extensions/markdown_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  246. data/vendor/extensions/markdown_filter/markdown.html +123 -0
  247. data/vendor/extensions/markdown_filter/markdown_filter_extension.rb +10 -0
  248. data/vendor/extensions/markdown_filter/smartypants.html +47 -0
  249. data/vendor/extensions/markdown_filter/test/test_helper.rb +10 -0
  250. data/vendor/extensions/markdown_filter/test/unit/markdown_filter_test.rb +18 -0
  251. data/vendor/extensions/markdown_filter/test/unit/smarty_pants_filter_test.rb +14 -0
  252. data/vendor/extensions/textile_filter/README +1 -0
  253. data/vendor/extensions/textile_filter/Rakefile +25 -0
  254. data/vendor/extensions/textile_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  255. data/vendor/extensions/textile_filter/lib/textile_filter.rb +8 -0
  256. data/vendor/extensions/textile_filter/test/test_helper.rb +10 -0
  257. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +13 -0
  258. data/vendor/extensions/textile_filter/textile.html +115 -0
  259. data/vendor/extensions/textile_filter/textile_filter_extension.rb +9 -0
  260. data/vendor/highline/AUTHORS +2 -0
  261. data/vendor/highline/CHANGELOG +183 -0
  262. data/vendor/highline/COPYING +340 -0
  263. data/vendor/highline/INSTALL +35 -0
  264. data/vendor/highline/LICENSE +7 -0
  265. data/vendor/highline/README +63 -0
  266. data/vendor/highline/Rakefile +82 -0
  267. data/vendor/highline/TODO +6 -0
  268. data/vendor/highline/examples/ansi_colors.rb +38 -0
  269. data/vendor/highline/examples/asking_for_arrays.rb +18 -0
  270. data/vendor/highline/examples/basic_usage.rb +75 -0
  271. data/vendor/highline/examples/color_scheme.rb +32 -0
  272. data/vendor/highline/examples/menus.rb +65 -0
  273. data/vendor/highline/examples/overwrite.rb +19 -0
  274. data/vendor/highline/examples/page_and_wrap.rb +322 -0
  275. data/vendor/highline/examples/password.rb +7 -0
  276. data/vendor/highline/examples/trapping_eof.rb +22 -0
  277. data/vendor/highline/examples/using_readline.rb +17 -0
  278. data/vendor/highline/lib/highline.rb +704 -0
  279. data/vendor/highline/lib/highline/color_scheme.rb +120 -0
  280. data/vendor/highline/lib/highline/import.rb +43 -0
  281. data/vendor/highline/lib/highline/menu.rb +395 -0
  282. data/vendor/highline/lib/highline/question.rb +462 -0
  283. data/vendor/highline/lib/highline/system_extensions.rb +125 -0
  284. data/vendor/highline/setup.rb +1360 -0
  285. data/vendor/highline/site/highline.css +65 -0
  286. data/vendor/highline/site/images/logo.png +0 -0
  287. data/vendor/highline/site/index.html +59 -0
  288. data/vendor/highline/test/tc_color_scheme.rb +56 -0
  289. data/vendor/highline/test/tc_highline.rb +780 -0
  290. data/vendor/highline/test/tc_import.rb +54 -0
  291. data/vendor/highline/test/tc_menu.rb +429 -0
  292. data/vendor/highline/test/ts_all.rb +15 -0
  293. data/vendor/plugins/default_order/README +35 -0
  294. data/vendor/plugins/default_order/Rakefile +22 -0
  295. data/vendor/plugins/default_order/init.rb +1 -0
  296. data/vendor/plugins/default_order/lib/default_order.rb +32 -0
  297. data/vendor/plugins/default_order/test/default_order_test.rb +5 -0
  298. data/vendor/radius/CHANGELOG +25 -0
  299. data/vendor/radius/QUICKSTART +323 -0
  300. data/vendor/radius/README +97 -0
  301. data/vendor/radius/ROADMAP +12 -0
  302. data/vendor/radius/Rakefile +86 -0
  303. data/vendor/radius/lib/radius.rb +497 -0
  304. data/vendor/radius/test/radius_test.rb +321 -0
  305. data/vendor/rails/actionmailer/CHANGELOG +297 -0
  306. data/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  307. data/vendor/rails/actionmailer/README +145 -0
  308. data/vendor/rails/actionmailer/Rakefile +95 -0
  309. data/vendor/rails/actionmailer/install.rb +30 -0
  310. data/vendor/rails/actionmailer/lib/action_mailer.rb +50 -0
  311. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  312. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +582 -0
  313. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +111 -0
  314. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +19 -0
  315. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +113 -0
  316. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +51 -0
  317. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +59 -0
  318. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +8 -0
  319. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb +1466 -0
  320. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +3 -0
  321. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/address.rb +242 -0
  322. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb +39 -0
  323. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/base64.rb +71 -0
  324. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/config.rb +69 -0
  325. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/encode.rb +467 -0
  326. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb +552 -0
  327. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/header.rb +914 -0
  328. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/info.rb +35 -0
  329. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/loader.rb +1 -0
  330. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb +447 -0
  331. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mailbox.rb +433 -0
  332. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mbox.rb +1 -0
  333. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb +280 -0
  334. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb +135 -0
  335. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/parser.rb +1522 -0
  336. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/port.rb +377 -0
  337. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb +131 -0
  338. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner.rb +41 -0
  339. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner_r.rb +263 -0
  340. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/stringio.rb +277 -0
  341. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/tmail.rb +1 -0
  342. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/utils.rb +238 -0
  343. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  344. data/vendor/rails/actionmailer/test/abstract_unit.rb +30 -0
  345. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.rhtml +1 -0
  346. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.rhtml +1 -0
  347. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.rhtml +1 -0
  348. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.rhtml +5 -0
  349. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_test_helper.rhtml +1 -0
  350. data/vendor/rails/actionmailer/test/fixtures/helpers/test_helper.rb +5 -0
  351. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +1 -0
  352. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml +0 -0
  353. data/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  354. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  355. data/vendor/rails/actionmailer/test/fixtures/raw_email11 +34 -0
  356. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  357. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  358. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  359. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  360. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  361. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  362. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  363. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  364. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  365. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  366. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  367. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  368. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.rhtml +1 -0
  369. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.rhtml +3 -0
  370. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +1 -0
  371. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +10 -0
  372. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +2 -0
  373. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +1 -0
  374. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.rhtml +3 -0
  375. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.rhtml +3 -0
  376. data/vendor/rails/actionmailer/test/mail_helper_test.rb +91 -0
  377. data/vendor/rails/actionmailer/test/mail_render_test.rb +79 -0
  378. data/vendor/rails/actionmailer/test/mail_service_test.rb +816 -0
  379. data/vendor/rails/actionmailer/test/quoting_test.rb +57 -0
  380. data/vendor/rails/actionmailer/test/tmail_test.rb +13 -0
  381. data/vendor/rails/actionmailer/test/url_test.rb +68 -0
  382. data/vendor/rails/actionpack/CHANGELOG +3138 -0
  383. data/vendor/rails/actionpack/MIT-LICENSE +21 -0
  384. data/vendor/rails/actionpack/README +469 -0
  385. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +25 -0
  386. data/vendor/rails/actionpack/Rakefile +154 -0
  387. data/vendor/rails/actionpack/examples/address_book/index.rhtml +33 -0
  388. data/vendor/rails/actionpack/examples/address_book/layout.rhtml +8 -0
  389. data/vendor/rails/actionpack/examples/address_book_controller.cgi +9 -0
  390. data/vendor/rails/actionpack/examples/address_book_controller.fcgi +6 -0
  391. data/vendor/rails/actionpack/examples/address_book_controller.rb +52 -0
  392. data/vendor/rails/actionpack/examples/address_book_controller.rbx +4 -0
  393. data/vendor/rails/actionpack/examples/benchmark.rb +52 -0
  394. data/vendor/rails/actionpack/examples/benchmark_with_ar.fcgi +89 -0
  395. data/vendor/rails/actionpack/examples/blog_controller.cgi +53 -0
  396. data/vendor/rails/actionpack/examples/debate/index.rhtml +14 -0
  397. data/vendor/rails/actionpack/examples/debate/new_topic.rhtml +22 -0
  398. data/vendor/rails/actionpack/examples/debate/topic.rhtml +32 -0
  399. data/vendor/rails/actionpack/examples/debate_controller.cgi +57 -0
  400. data/vendor/rails/actionpack/install.rb +30 -0
  401. data/vendor/rails/actionpack/lib/action_controller.rb +83 -0
  402. data/vendor/rails/actionpack/lib/action_controller/assertions.rb +82 -0
  403. data/vendor/rails/actionpack/lib/action_controller/assertions/deprecated_assertions.rb +228 -0
  404. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +25 -0
  405. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +12 -0
  406. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +140 -0
  407. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +98 -0
  408. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +571 -0
  409. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +117 -0
  410. data/vendor/rails/actionpack/lib/action_controller/base.rb +1231 -0
  411. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +89 -0
  412. data/vendor/rails/actionpack/lib/action_controller/caching.rb +616 -0
  413. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_ext.rb +36 -0
  414. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb +211 -0
  415. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie_performance_fix.rb +125 -0
  416. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb +95 -0
  417. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/session_performance_fix.rb +30 -0
  418. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +231 -0
  419. data/vendor/rails/actionpack/lib/action_controller/components.rb +182 -0
  420. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +78 -0
  421. data/vendor/rails/actionpack/lib/action_controller/deprecated_dependencies.rb +65 -0
  422. data/vendor/rails/actionpack/lib/action_controller/deprecated_redirects.rb +17 -0
  423. data/vendor/rails/actionpack/lib/action_controller/deprecated_request_methods.rb +34 -0
  424. data/vendor/rails/actionpack/lib/action_controller/filters.rb +667 -0
  425. data/vendor/rails/actionpack/lib/action_controller/flash.rb +182 -0
  426. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +131 -0
  427. data/vendor/rails/actionpack/lib/action_controller/integration.rb +552 -0
  428. data/vendor/rails/actionpack/lib/action_controller/layout.rb +313 -0
  429. data/vendor/rails/actionpack/lib/action_controller/macros/auto_complete.rb +53 -0
  430. data/vendor/rails/actionpack/lib/action_controller/macros/in_place_editing.rb +33 -0
  431. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +181 -0
  432. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +200 -0
  433. data/vendor/rails/actionpack/lib/action_controller/pagination.rb +402 -0
  434. data/vendor/rails/actionpack/lib/action_controller/request.rb +265 -0
  435. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +142 -0
  436. data/vendor/rails/actionpack/lib/action_controller/resources.rb +405 -0
  437. data/vendor/rails/actionpack/lib/action_controller/response.rb +35 -0
  438. data/vendor/rails/actionpack/lib/action_controller/routing.rb +1340 -0
  439. data/vendor/rails/actionpack/lib/action_controller/scaffolding.rb +189 -0
  440. data/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +335 -0
  441. data/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +32 -0
  442. data/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +35 -0
  443. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +105 -0
  444. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +142 -0
  445. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  446. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +138 -0
  447. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml +44 -0
  448. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.rhtml +26 -0
  449. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml +11 -0
  450. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml +29 -0
  451. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.rhtml +2 -0
  452. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.rhtml +10 -0
  453. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.rhtml +21 -0
  454. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.rhtml +2 -0
  455. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml +7 -0
  456. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml +69 -0
  457. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/list.rhtml +27 -0
  458. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/new.rhtml +6 -0
  459. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/show.rhtml +9 -0
  460. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +504 -0
  461. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +108 -0
  462. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +530 -0
  463. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +823 -0
  464. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  465. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  466. data/vendor/rails/actionpack/lib/action_controller/vendor/xml_node.rb +97 -0
  467. data/vendor/rails/actionpack/lib/action_controller/verification.rb +107 -0
  468. data/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  469. data/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  470. data/vendor/rails/actionpack/lib/action_view.rb +32 -0
  471. data/vendor/rails/actionpack/lib/action_view/base.rb +538 -0
  472. data/vendor/rails/actionpack/lib/action_view/compiled_templates.rb +70 -0
  473. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +237 -0
  474. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +218 -0
  475. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +24 -0
  476. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +10 -0
  477. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +128 -0
  478. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +429 -0
  479. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +17 -0
  480. data/vendor/rails/actionpack/lib/action_view/helpers/deprecated_helper.rb +34 -0
  481. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +446 -0
  482. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +363 -0
  483. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +176 -0
  484. data/vendor/rails/actionpack/lib/action_view/helpers/java_script_macros_helper.rb +233 -0
  485. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +193 -0
  486. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +833 -0
  487. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +942 -0
  488. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +1088 -0
  489. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +2515 -0
  490. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +155 -0
  491. data/vendor/rails/actionpack/lib/action_view/helpers/pagination_helper.rb +86 -0
  492. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +876 -0
  493. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +140 -0
  494. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +103 -0
  495. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +406 -0
  496. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +406 -0
  497. data/vendor/rails/actionpack/lib/action_view/partials.rb +128 -0
  498. data/vendor/rails/actionpack/lib/action_view/template_error.rb +110 -0
  499. data/vendor/rails/actionpack/test/abstract_unit.rb +16 -0
  500. data/vendor/rails/actionpack/test/active_record_unit.rb +116 -0
  501. data/vendor/rails/actionpack/test/activerecord/active_record_assertions_test.rb +92 -0
  502. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +142 -0
  503. data/vendor/rails/actionpack/test/activerecord/pagination_test.rb +156 -0
  504. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +610 -0
  505. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +45 -0
  506. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +576 -0
  507. data/vendor/rails/actionpack/test/controller/base_test.rb +136 -0
  508. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +33 -0
  509. data/vendor/rails/actionpack/test/controller/caching_test.rb +228 -0
  510. data/vendor/rails/actionpack/test/controller/capture_test.rb +82 -0
  511. data/vendor/rails/actionpack/test/controller/cgi_test.rb +440 -0
  512. data/vendor/rails/actionpack/test/controller/components_test.rb +151 -0
  513. data/vendor/rails/actionpack/test/controller/content_type_test.rb +139 -0
  514. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  515. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  516. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  517. data/vendor/rails/actionpack/test/controller/cookie_test.rb +88 -0
  518. data/vendor/rails/actionpack/test/controller/custom_handler_test.rb +41 -0
  519. data/vendor/rails/actionpack/test/controller/deprecated_instance_variables_test.rb +48 -0
  520. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +60 -0
  521. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +16 -0
  522. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +42 -0
  523. data/vendor/rails/actionpack/test/controller/filters_test.rb +695 -0
  524. data/vendor/rails/actionpack/test/controller/flash_test.rb +102 -0
  525. data/vendor/rails/actionpack/test/controller/fragment_store_setting_test.rb +45 -0
  526. data/vendor/rails/actionpack/test/controller/helper_test.rb +187 -0
  527. data/vendor/rails/actionpack/test/controller/integration_test.rb +154 -0
  528. data/vendor/rails/actionpack/test/controller/layout_test.rb +187 -0
  529. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +351 -0
  530. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +33 -0
  531. data/vendor/rails/actionpack/test/controller/new_render_test.rb +750 -0
  532. data/vendor/rails/actionpack/test/controller/raw_post_test.rb +68 -0
  533. data/vendor/rails/actionpack/test/controller/redirect_test.rb +156 -0
  534. data/vendor/rails/actionpack/test/controller/render_test.rb +293 -0
  535. data/vendor/rails/actionpack/test/controller/request_test.rb +317 -0
  536. data/vendor/rails/actionpack/test/controller/resources_test.rb +482 -0
  537. data/vendor/rails/actionpack/test/controller/routing_test.rb +1801 -0
  538. data/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  539. data/vendor/rails/actionpack/test/controller/send_file_test.rb +117 -0
  540. data/vendor/rails/actionpack/test/controller/session_management_test.rb +156 -0
  541. data/vendor/rails/actionpack/test/controller/test_test.rb +495 -0
  542. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +115 -0
  543. data/vendor/rails/actionpack/test/controller/verification_test.rb +227 -0
  544. data/vendor/rails/actionpack/test/controller/webservice_test.rb +248 -0
  545. data/vendor/rails/actionpack/test/fixtures/addresses/list.rhtml +1 -0
  546. data/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  547. data/vendor/rails/actionpack/test/fixtures/company.rb +9 -0
  548. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  549. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  550. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  551. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  552. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +42 -0
  553. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_ivar.rhtml +1 -0
  554. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_method.rhtml +1 -0
  555. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_ivar.rhtml +1 -0
  556. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_method.rhtml +1 -0
  557. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_ivar.rhtml +1 -0
  558. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_method.rhtml +1 -0
  559. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_ivar.rhtml +1 -0
  560. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_method.rhtml +1 -0
  561. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_ivar.rhtml +1 -0
  562. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_method.rhtml +1 -0
  563. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_ivar.rhtml +1 -0
  564. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_method.rhtml +1 -0
  565. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_ivar.rhtml +1 -0
  566. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_method.rhtml +1 -0
  567. data/vendor/rails/actionpack/test/fixtures/developer.rb +7 -0
  568. data/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  569. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  570. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.rhtml +1 -0
  571. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  572. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  573. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  574. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  575. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  576. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  577. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  578. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  579. data/vendor/rails/actionpack/test/fixtures/layouts/builder.rxml +3 -0
  580. data/vendor/rails/actionpack/test/fixtures/layouts/standard.rhtml +1 -0
  581. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.rhtml +2 -0
  582. data/vendor/rails/actionpack/test/fixtures/layouts/yield.rhtml +2 -0
  583. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  584. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  585. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  586. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  587. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  588. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  589. data/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  590. data/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  591. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  592. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  593. data/vendor/rails/actionpack/test/fixtures/replies.yml +13 -0
  594. data/vendor/rails/actionpack/test/fixtures/reply.rb +5 -0
  595. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rhtml +1 -0
  596. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rjs +1 -0
  597. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.rhtml +1 -0
  598. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rhtml +1 -0
  599. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rjs +1 -0
  600. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rxml +1 -0
  601. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rhtml +1 -0
  602. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rjs +1 -0
  603. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rxml +1 -0
  604. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.rhtml +1 -0
  605. data/vendor/rails/actionpack/test/fixtures/test/_customer.rhtml +1 -0
  606. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.rhtml +1 -0
  607. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.rhtml +1 -0
  608. data/vendor/rails/actionpack/test/fixtures/test/_hello.rxml +1 -0
  609. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.rhtml +1 -0
  610. data/vendor/rails/actionpack/test/fixtures/test/_person.rhtml +2 -0
  611. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.rhtml +2 -0
  612. data/vendor/rails/actionpack/test/fixtures/test/block_content_for.rhtml +2 -0
  613. data/vendor/rails/actionpack/test/fixtures/test/capturing.rhtml +4 -0
  614. data/vendor/rails/actionpack/test/fixtures/test/content_for.rhtml +2 -0
  615. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  616. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml +1 -0
  617. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  618. data/vendor/rails/actionpack/test/fixtures/test/erb_content_for.rhtml +2 -0
  619. data/vendor/rails/actionpack/test/fixtures/test/greeting.rhtml +1 -0
  620. data/vendor/rails/actionpack/test/fixtures/test/hello.rxml +4 -0
  621. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rhtml +1 -0
  622. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rxml +3 -0
  623. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.rxml +3 -0
  624. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.rhtml +1 -0
  625. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.rxml +11 -0
  626. data/vendor/rails/actionpack/test/fixtures/test/list.rhtml +1 -0
  627. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.rxml +4 -0
  628. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.rhtml +4 -0
  629. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.rhtml +1 -0
  630. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.rhtml +1 -0
  631. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.rhtml +1 -0
  632. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.rhtml +9 -0
  633. data/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  634. data/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  635. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +204 -0
  636. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +232 -0
  637. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +72 -0
  638. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +135 -0
  639. data/vendor/rails/actionpack/test/template/date_helper_test.rb +1322 -0
  640. data/vendor/rails/actionpack/test/template/deprecated_helper_test.rb +36 -0
  641. data/vendor/rails/actionpack/test/template/deprecated_instance_variables_test.rb +43 -0
  642. data/vendor/rails/actionpack/test/template/form_helper_test.rb +499 -0
  643. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +489 -0
  644. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +172 -0
  645. data/vendor/rails/actionpack/test/template/java_script_macros_helper_test.rb +109 -0
  646. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +67 -0
  647. data/vendor/rails/actionpack/test/template/number_helper_test.rb +92 -0
  648. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +466 -0
  649. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  650. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +69 -0
  651. data/vendor/rails/actionpack/test/template/text_helper_test.rb +349 -0
  652. data/vendor/rails/actionpack/test/template/url_helper_test.rb +366 -0
  653. data/vendor/rails/actionpack/test/testing_sandbox.rb +11 -0
  654. data/vendor/rails/actionwebservice/CHANGELOG +279 -0
  655. data/vendor/rails/actionwebservice/MIT-LICENSE +21 -0
  656. data/vendor/rails/actionwebservice/README +364 -0
  657. data/vendor/rails/actionwebservice/Rakefile +171 -0
  658. data/vendor/rails/actionwebservice/TODO +32 -0
  659. data/vendor/rails/actionwebservice/examples/googlesearch/README +143 -0
  660. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_api.rb +50 -0
  661. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_controller.rb +57 -0
  662. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/google_search_service.rb +108 -0
  663. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/search_controller.rb +7 -0
  664. data/vendor/rails/actionwebservice/examples/googlesearch/direct/google_search_api.rb +50 -0
  665. data/vendor/rails/actionwebservice/examples/googlesearch/direct/search_controller.rb +58 -0
  666. data/vendor/rails/actionwebservice/examples/metaWeblog/README +17 -0
  667. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_api.rb +60 -0
  668. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_service.rb +34 -0
  669. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb +67 -0
  670. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb +48 -0
  671. data/vendor/rails/actionwebservice/examples/metaWeblog/controllers/xmlrpc_controller.rb +16 -0
  672. data/vendor/rails/actionwebservice/install.rb +30 -0
  673. data/vendor/rails/actionwebservice/lib/action_web_service.rb +66 -0
  674. data/vendor/rails/actionwebservice/lib/action_web_service/api.rb +249 -0
  675. data/vendor/rails/actionwebservice/lib/action_web_service/base.rb +42 -0
  676. data/vendor/rails/actionwebservice/lib/action_web_service/casting.rb +136 -0
  677. data/vendor/rails/actionwebservice/lib/action_web_service/client.rb +3 -0
  678. data/vendor/rails/actionwebservice/lib/action_web_service/client/base.rb +28 -0
  679. data/vendor/rails/actionwebservice/lib/action_web_service/client/soap_client.rb +113 -0
  680. data/vendor/rails/actionwebservice/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  681. data/vendor/rails/actionwebservice/lib/action_web_service/container.rb +3 -0
  682. data/vendor/rails/actionwebservice/lib/action_web_service/container/action_controller_container.rb +93 -0
  683. data/vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb +86 -0
  684. data/vendor/rails/actionwebservice/lib/action_web_service/container/direct_container.rb +69 -0
  685. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher.rb +2 -0
  686. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +203 -0
  687. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +376 -0
  688. data/vendor/rails/actionwebservice/lib/action_web_service/invocation.rb +202 -0
  689. data/vendor/rails/actionwebservice/lib/action_web_service/protocol.rb +4 -0
  690. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/abstract.rb +112 -0
  691. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/discovery.rb +37 -0
  692. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  693. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol/marshaler.rb +241 -0
  694. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb +110 -0
  695. data/vendor/rails/actionwebservice/lib/action_web_service/scaffolding.rb +283 -0
  696. data/vendor/rails/actionwebservice/lib/action_web_service/struct.rb +68 -0
  697. data/vendor/rails/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb +26 -0
  698. data/vendor/rails/actionwebservice/lib/action_web_service/support/signature_types.rb +222 -0
  699. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.rhtml +65 -0
  700. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.rhtml +6 -0
  701. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.rhtml +29 -0
  702. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.rhtml +30 -0
  703. data/vendor/rails/actionwebservice/lib/action_web_service/test_invoke.rb +110 -0
  704. data/vendor/rails/actionwebservice/lib/action_web_service/version.rb +9 -0
  705. data/vendor/rails/actionwebservice/setup.rb +1379 -0
  706. data/vendor/rails/actionwebservice/test/abstract_client.rb +183 -0
  707. data/vendor/rails/actionwebservice/test/abstract_dispatcher.rb +505 -0
  708. data/vendor/rails/actionwebservice/test/abstract_unit.rb +45 -0
  709. data/vendor/rails/actionwebservice/test/api_test.rb +102 -0
  710. data/vendor/rails/actionwebservice/test/apis/auto_load_api.rb +3 -0
  711. data/vendor/rails/actionwebservice/test/apis/broken_auto_load_api.rb +2 -0
  712. data/vendor/rails/actionwebservice/test/base_test.rb +42 -0
  713. data/vendor/rails/actionwebservice/test/casting_test.rb +86 -0
  714. data/vendor/rails/actionwebservice/test/client_soap_test.rb +152 -0
  715. data/vendor/rails/actionwebservice/test/client_xmlrpc_test.rb +151 -0
  716. data/vendor/rails/actionwebservice/test/container_test.rb +73 -0
  717. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_soap_test.rb +137 -0
  718. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  719. data/vendor/rails/actionwebservice/test/fixtures/db_definitions/mysql.sql +7 -0
  720. data/vendor/rails/actionwebservice/test/fixtures/users.yml +10 -0
  721. data/vendor/rails/actionwebservice/test/gencov +3 -0
  722. data/vendor/rails/actionwebservice/test/invocation_test.rb +185 -0
  723. data/vendor/rails/actionwebservice/test/run +6 -0
  724. data/vendor/rails/actionwebservice/test/scaffolded_controller_test.rb +146 -0
  725. data/vendor/rails/actionwebservice/test/struct_test.rb +52 -0
  726. data/vendor/rails/actionwebservice/test/test_invoke_test.rb +112 -0
  727. data/vendor/rails/activerecord/CHANGELOG +3043 -0
  728. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  729. data/vendor/rails/activerecord/README +360 -0
  730. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +64 -0
  731. data/vendor/rails/activerecord/Rakefile +226 -0
  732. data/vendor/rails/activerecord/benchmarks/benchmark.rb +26 -0
  733. data/vendor/rails/activerecord/benchmarks/mysql_benchmark.rb +19 -0
  734. data/vendor/rails/activerecord/examples/associations.png +0 -0
  735. data/vendor/rails/activerecord/examples/associations.rb +87 -0
  736. data/vendor/rails/activerecord/examples/shared_setup.rb +15 -0
  737. data/vendor/rails/activerecord/examples/validation.rb +85 -0
  738. data/vendor/rails/activerecord/install.rb +30 -0
  739. data/vendor/rails/activerecord/lib/active_record.rb +85 -0
  740. data/vendor/rails/activerecord/lib/active_record/acts/list.rb +244 -0
  741. data/vendor/rails/activerecord/lib/active_record/acts/nested_set.rb +211 -0
  742. data/vendor/rails/activerecord/lib/active_record/acts/tree.rb +89 -0
  743. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +191 -0
  744. data/vendor/rails/activerecord/lib/active_record/associations.rb +1627 -0
  745. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +190 -0
  746. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +158 -0
  747. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +56 -0
  748. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +50 -0
  749. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +169 -0
  750. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +210 -0
  751. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +247 -0
  752. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +80 -0
  753. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +75 -0
  754. data/vendor/rails/activerecord/lib/active_record/base.rb +2164 -0
  755. data/vendor/rails/activerecord/lib/active_record/calculations.rb +270 -0
  756. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +367 -0
  757. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +279 -0
  758. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +130 -0
  759. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +58 -0
  760. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +343 -0
  761. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +303 -0
  762. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +161 -0
  763. data/vendor/rails/activerecord/lib/active_record/connection_adapters/db2_adapter.rb +228 -0
  764. data/vendor/rails/activerecord/lib/active_record/connection_adapters/firebird_adapter.rb +728 -0
  765. data/vendor/rails/activerecord/lib/active_record/connection_adapters/frontbase_adapter.rb +861 -0
  766. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +414 -0
  767. data/vendor/rails/activerecord/lib/active_record/connection_adapters/openbase_adapter.rb +350 -0
  768. data/vendor/rails/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb +689 -0
  769. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +584 -0
  770. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +407 -0
  771. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb +591 -0
  772. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sybase_adapter.rb +662 -0
  773. data/vendor/rails/activerecord/lib/active_record/deprecated_associations.rb +104 -0
  774. data/vendor/rails/activerecord/lib/active_record/deprecated_finders.rb +44 -0
  775. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +628 -0
  776. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +106 -0
  777. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  778. data/vendor/rails/activerecord/lib/active_record/migration.rb +394 -0
  779. data/vendor/rails/activerecord/lib/active_record/observer.rb +178 -0
  780. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +64 -0
  781. data/vendor/rails/activerecord/lib/active_record/reflection.rb +222 -0
  782. data/vendor/rails/activerecord/lib/active_record/schema.rb +58 -0
  783. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +149 -0
  784. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +51 -0
  785. data/vendor/rails/activerecord/lib/active_record/transactions.rb +136 -0
  786. data/vendor/rails/activerecord/lib/active_record/validations.rb +843 -0
  787. data/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +362 -0
  788. data/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +1214 -0
  789. data/vendor/rails/activerecord/lib/active_record/vendor/simple.rb +693 -0
  790. data/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  791. data/vendor/rails/activerecord/lib/active_record/wrappers/yaml_wrapper.rb +15 -0
  792. data/vendor/rails/activerecord/lib/active_record/wrappings.rb +58 -0
  793. data/vendor/rails/activerecord/lib/active_record/xml_serialization.rb +308 -0
  794. data/vendor/rails/activerecord/test/aaa_create_tables_test.rb +59 -0
  795. data/vendor/rails/activerecord/test/abstract_unit.rb +77 -0
  796. data/vendor/rails/activerecord/test/active_schema_test_mysql.rb +31 -0
  797. data/vendor/rails/activerecord/test/adapter_test.rb +87 -0
  798. data/vendor/rails/activerecord/test/adapter_test_sqlserver.rb +81 -0
  799. data/vendor/rails/activerecord/test/aggregations_test.rb +95 -0
  800. data/vendor/rails/activerecord/test/all.sh +8 -0
  801. data/vendor/rails/activerecord/test/ar_schema_test.rb +33 -0
  802. data/vendor/rails/activerecord/test/association_inheritance_reload.rb +14 -0
  803. data/vendor/rails/activerecord/test/associations/callbacks_test.rb +126 -0
  804. data/vendor/rails/activerecord/test/associations/cascaded_eager_loading_test.rb +138 -0
  805. data/vendor/rails/activerecord/test/associations/eager_test.rb +393 -0
  806. data/vendor/rails/activerecord/test/associations/extension_test.rb +42 -0
  807. data/vendor/rails/activerecord/test/associations/join_model_test.rb +497 -0
  808. data/vendor/rails/activerecord/test/associations_test.rb +1809 -0
  809. data/vendor/rails/activerecord/test/attribute_methods_test.rb +49 -0
  810. data/vendor/rails/activerecord/test/base_test.rb +1586 -0
  811. data/vendor/rails/activerecord/test/binary_test.rb +37 -0
  812. data/vendor/rails/activerecord/test/calculations_test.rb +219 -0
  813. data/vendor/rails/activerecord/test/callbacks_test.rb +377 -0
  814. data/vendor/rails/activerecord/test/class_inheritable_attributes_test.rb +32 -0
  815. data/vendor/rails/activerecord/test/column_alias_test.rb +17 -0
  816. data/vendor/rails/activerecord/test/connection_test_firebird.rb +8 -0
  817. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  818. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  819. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  820. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +24 -0
  821. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  822. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  823. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +23 -0
  824. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +34 -0
  825. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +34 -0
  826. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  827. data/vendor/rails/activerecord/test/connections/native_sqlserver/connection.rb +23 -0
  828. data/vendor/rails/activerecord/test/connections/native_sqlserver_odbc/connection.rb +25 -0
  829. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  830. data/vendor/rails/activerecord/test/copy_table_sqlite.rb +64 -0
  831. data/vendor/rails/activerecord/test/datatype_test_postgresql.rb +52 -0
  832. data/vendor/rails/activerecord/test/default_test_firebird.rb +16 -0
  833. data/vendor/rails/activerecord/test/defaults_test.rb +60 -0
  834. data/vendor/rails/activerecord/test/deprecated_associations_test.rb +396 -0
  835. data/vendor/rails/activerecord/test/deprecated_finder_test.rb +151 -0
  836. data/vendor/rails/activerecord/test/empty_date_time_test.rb +25 -0
  837. data/vendor/rails/activerecord/test/finder_test.rb +504 -0
  838. data/vendor/rails/activerecord/test/fixtures/accounts.yml +28 -0
  839. data/vendor/rails/activerecord/test/fixtures/author.rb +99 -0
  840. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  841. data/vendor/rails/activerecord/test/fixtures/authors.yml +7 -0
  842. data/vendor/rails/activerecord/test/fixtures/auto_id.rb +4 -0
  843. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_numeric_first_char +1 -0
  844. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_spaces +1 -0
  845. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/blank_line +3 -0
  846. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/duplicate_attributes +3 -0
  847. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/missing_value +1 -0
  848. data/vendor/rails/activerecord/test/fixtures/binary.rb +2 -0
  849. data/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  850. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  851. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  852. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  853. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  854. data/vendor/rails/activerecord/test/fixtures/categorization.rb +5 -0
  855. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  856. data/vendor/rails/activerecord/test/fixtures/category.rb +20 -0
  857. data/vendor/rails/activerecord/test/fixtures/column_name.rb +3 -0
  858. data/vendor/rails/activerecord/test/fixtures/comment.rb +23 -0
  859. data/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  860. data/vendor/rails/activerecord/test/fixtures/companies.yml +55 -0
  861. data/vendor/rails/activerecord/test/fixtures/company.rb +107 -0
  862. data/vendor/rails/activerecord/test/fixtures/company_in_module.rb +59 -0
  863. data/vendor/rails/activerecord/test/fixtures/computer.rb +3 -0
  864. data/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  865. data/vendor/rails/activerecord/test/fixtures/course.rb +3 -0
  866. data/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  867. data/vendor/rails/activerecord/test/fixtures/customer.rb +55 -0
  868. data/vendor/rails/activerecord/test/fixtures/customers.yml +17 -0
  869. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.drop.sql +32 -0
  870. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.sql +231 -0
  871. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.drop.sql +2 -0
  872. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.sql +5 -0
  873. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.drop.sql +63 -0
  874. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.sql +304 -0
  875. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.drop.sql +2 -0
  876. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.sql +6 -0
  877. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.drop.sql +32 -0
  878. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.sql +268 -0
  879. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.drop.sql +1 -0
  880. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.sql +4 -0
  881. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.drop.sql +32 -0
  882. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.sql +234 -0
  883. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.drop.sql +2 -0
  884. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.sql +5 -0
  885. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.drop.sql +2 -0
  886. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.sql +302 -0
  887. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.drop.sql +2 -0
  888. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.sql +7 -0
  889. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.drop.sql +65 -0
  890. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.sql +325 -0
  891. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.drop.sql +2 -0
  892. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.sql +6 -0
  893. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.drop.sql +37 -0
  894. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.sql +263 -0
  895. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.drop.sql +2 -0
  896. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.sql +5 -0
  897. data/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb +60 -0
  898. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.drop.sql +32 -0
  899. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.sql +215 -0
  900. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.drop.sql +2 -0
  901. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.sql +5 -0
  902. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql +34 -0
  903. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.sql +243 -0
  904. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.drop.sql +2 -0
  905. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.sql +5 -0
  906. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.drop.sql +34 -0
  907. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.sql +218 -0
  908. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.drop.sql +4 -0
  909. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.sql +5 -0
  910. data/vendor/rails/activerecord/test/fixtures/default.rb +2 -0
  911. data/vendor/rails/activerecord/test/fixtures/developer.rb +52 -0
  912. data/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  913. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  914. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_action_controller +3 -0
  915. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_active_record +3 -0
  916. data/vendor/rails/activerecord/test/fixtures/developers_projects/jamis_active_record +2 -0
  917. data/vendor/rails/activerecord/test/fixtures/edge.rb +5 -0
  918. data/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  919. data/vendor/rails/activerecord/test/fixtures/entrant.rb +3 -0
  920. data/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  921. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  922. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  923. data/vendor/rails/activerecord/test/fixtures/flowers.jpg +0 -0
  924. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  925. data/vendor/rails/activerecord/test/fixtures/joke.rb +6 -0
  926. data/vendor/rails/activerecord/test/fixtures/keyboard.rb +3 -0
  927. data/vendor/rails/activerecord/test/fixtures/legacy_thing.rb +3 -0
  928. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  929. data/vendor/rails/activerecord/test/fixtures/migrations/1_people_have_last_names.rb +9 -0
  930. data/vendor/rails/activerecord/test/fixtures/migrations/2_we_need_reminders.rb +12 -0
  931. data/vendor/rails/activerecord/test/fixtures/migrations/3_innocent_jointable.rb +12 -0
  932. data/vendor/rails/activerecord/test/fixtures/migrations_with_decimal/1_give_me_big_numbers.rb +15 -0
  933. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/1_people_have_last_names.rb +9 -0
  934. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/2_we_need_reminders.rb +12 -0
  935. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_foo.rb +7 -0
  936. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_innocent_jointable.rb +12 -0
  937. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1000_people_have_middle_names.rb +9 -0
  938. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1_people_have_last_names.rb +9 -0
  939. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/3_we_need_reminders.rb +12 -0
  940. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/4_innocent_jointable.rb +12 -0
  941. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkey.rb +3 -0
  942. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  943. data/vendor/rails/activerecord/test/fixtures/mixin.rb +63 -0
  944. data/vendor/rails/activerecord/test/fixtures/mixins.yml +127 -0
  945. data/vendor/rails/activerecord/test/fixtures/movie.rb +5 -0
  946. data/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  947. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  948. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  949. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  950. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  951. data/vendor/rails/activerecord/test/fixtures/order.rb +4 -0
  952. data/vendor/rails/activerecord/test/fixtures/people.yml +3 -0
  953. data/vendor/rails/activerecord/test/fixtures/person.rb +4 -0
  954. data/vendor/rails/activerecord/test/fixtures/post.rb +58 -0
  955. data/vendor/rails/activerecord/test/fixtures/posts.yml +48 -0
  956. data/vendor/rails/activerecord/test/fixtures/project.rb +27 -0
  957. data/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  958. data/vendor/rails/activerecord/test/fixtures/reader.rb +4 -0
  959. data/vendor/rails/activerecord/test/fixtures/readers.yml +4 -0
  960. data/vendor/rails/activerecord/test/fixtures/reply.rb +37 -0
  961. data/vendor/rails/activerecord/test/fixtures/subject.rb +4 -0
  962. data/vendor/rails/activerecord/test/fixtures/subscriber.rb +6 -0
  963. data/vendor/rails/activerecord/test/fixtures/subscribers/first +2 -0
  964. data/vendor/rails/activerecord/test/fixtures/subscribers/second +2 -0
  965. data/vendor/rails/activerecord/test/fixtures/tag.rb +7 -0
  966. data/vendor/rails/activerecord/test/fixtures/tagging.rb +6 -0
  967. data/vendor/rails/activerecord/test/fixtures/taggings.yml +18 -0
  968. data/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  969. data/vendor/rails/activerecord/test/fixtures/task.rb +3 -0
  970. data/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  971. data/vendor/rails/activerecord/test/fixtures/topic.rb +25 -0
  972. data/vendor/rails/activerecord/test/fixtures/topics.yml +22 -0
  973. data/vendor/rails/activerecord/test/fixtures/vertex.rb +9 -0
  974. data/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  975. data/vendor/rails/activerecord/test/fixtures_test.rb +401 -0
  976. data/vendor/rails/activerecord/test/inheritance_test.rb +205 -0
  977. data/vendor/rails/activerecord/test/lifecycle_test.rb +137 -0
  978. data/vendor/rails/activerecord/test/locking_test.rb +190 -0
  979. data/vendor/rails/activerecord/test/method_scoping_test.rb +416 -0
  980. data/vendor/rails/activerecord/test/migration_test.rb +768 -0
  981. data/vendor/rails/activerecord/test/migration_test_firebird.rb +124 -0
  982. data/vendor/rails/activerecord/test/mixin_nested_set_test.rb +196 -0
  983. data/vendor/rails/activerecord/test/mixin_test.rb +550 -0
  984. data/vendor/rails/activerecord/test/modules_test.rb +34 -0
  985. data/vendor/rails/activerecord/test/multiple_db_test.rb +60 -0
  986. data/vendor/rails/activerecord/test/pk_test.rb +104 -0
  987. data/vendor/rails/activerecord/test/readonly_test.rb +107 -0
  988. data/vendor/rails/activerecord/test/reflection_test.rb +159 -0
  989. data/vendor/rails/activerecord/test/schema_authorization_test_postgresql.rb +75 -0
  990. data/vendor/rails/activerecord/test/schema_dumper_test.rb +96 -0
  991. data/vendor/rails/activerecord/test/schema_test_postgresql.rb +64 -0
  992. data/vendor/rails/activerecord/test/synonym_test_oracle.rb +17 -0
  993. data/vendor/rails/activerecord/test/table_name_test_sqlserver.rb +23 -0
  994. data/vendor/rails/activerecord/test/threaded_connections_test.rb +48 -0
  995. data/vendor/rails/activerecord/test/transactions_test.rb +230 -0
  996. data/vendor/rails/activerecord/test/unconnected_test.rb +32 -0
  997. data/vendor/rails/activerecord/test/validations_test.rb +1097 -0
  998. data/vendor/rails/activerecord/test/xml_serialization_test.rb +125 -0
  999. data/vendor/rails/activesupport/CHANGELOG +703 -0
  1000. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1001. data/vendor/rails/activesupport/README +43 -0
  1002. data/vendor/rails/activesupport/Rakefile +82 -0
  1003. data/vendor/rails/activesupport/install.rb +30 -0
  1004. data/vendor/rails/activesupport/lib/active_support.rb +44 -0
  1005. data/vendor/rails/activesupport/lib/active_support/binding_of_caller.rb +84 -0
  1006. data/vendor/rails/activesupport/lib/active_support/breakpoint.rb +528 -0
  1007. data/vendor/rails/activesupport/lib/active_support/caching_tools.rb +62 -0
  1008. data/vendor/rails/activesupport/lib/active_support/clean_logger.rb +38 -0
  1009. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +1 -0
  1010. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +7 -0
  1011. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +72 -0
  1012. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +55 -0
  1013. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +3 -0
  1014. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/formatting.rb +7 -0
  1015. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +50 -0
  1016. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1017. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  1018. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +3 -0
  1019. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +48 -0
  1020. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1021. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +24 -0
  1022. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +6 -0
  1023. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +39 -0
  1024. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +62 -0
  1025. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +33 -0
  1026. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +13 -0
  1027. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +155 -0
  1028. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +11 -0
  1029. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +88 -0
  1030. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +53 -0
  1031. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +25 -0
  1032. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +7 -0
  1033. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +24 -0
  1034. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +21 -0
  1035. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +4 -0
  1036. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1037. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +15 -0
  1038. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +51 -0
  1039. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1040. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1041. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +16 -0
  1042. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +7 -0
  1043. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +58 -0
  1044. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +31 -0
  1045. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +48 -0
  1046. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +41 -0
  1047. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +11 -0
  1048. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +21 -0
  1049. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +13 -0
  1050. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +17 -0
  1051. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +7 -0
  1052. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1053. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +72 -0
  1054. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +2 -0
  1055. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +47 -0
  1056. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +34 -0
  1057. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1058. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1059. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1060. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +5 -0
  1061. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +21 -0
  1062. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +15 -0
  1063. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +58 -0
  1064. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +19 -0
  1065. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +153 -0
  1066. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +17 -0
  1067. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +20 -0
  1068. data/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +42 -0
  1069. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +12 -0
  1070. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +17 -0
  1071. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +191 -0
  1072. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +33 -0
  1073. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +539 -0
  1074. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +202 -0
  1075. data/vendor/rails/activesupport/lib/active_support/inflections.rb +52 -0
  1076. data/vendor/rails/activesupport/lib/active_support/inflector.rb +275 -0
  1077. data/vendor/rails/activesupport/lib/active_support/json.rb +48 -0
  1078. data/vendor/rails/activesupport/lib/active_support/json/encoders.rb +25 -0
  1079. data/vendor/rails/activesupport/lib/active_support/json/encoders/core.rb +68 -0
  1080. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +7 -0
  1081. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +129 -0
  1082. data/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +149 -0
  1083. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +9 -0
  1084. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +454 -0
  1085. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +43 -0
  1086. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  1087. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +44 -0
  1088. data/vendor/rails/activesupport/lib/active_support/reloadable.rb +60 -0
  1089. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +180 -0
  1090. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1091. data/vendor/rails/activesupport/lib/active_support/vendor/builder.rb +13 -0
  1092. data/vendor/rails/activesupport/lib/active_support/vendor/builder/blankslate.rb +63 -0
  1093. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xchar.rb +112 -0
  1094. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlbase.rb +145 -0
  1095. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlevents.rb +63 -0
  1096. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlmarkup.rb +327 -0
  1097. data/vendor/rails/activesupport/lib/active_support/vendor/xml_simple.rb +1021 -0
  1098. data/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  1099. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +38 -0
  1100. data/vendor/rails/activesupport/test/abstract_unit.rb +7 -0
  1101. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  1102. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  1103. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  1104. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  1105. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  1106. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  1107. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  1108. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  1109. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  1110. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  1111. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  1112. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  1113. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  1114. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  1115. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  1116. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  1117. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1118. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1119. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1120. data/vendor/rails/activesupport/test/caching_tools_test.rb +79 -0
  1121. data/vendor/rails/activesupport/test/clean_logger_test.rb +80 -0
  1122. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +182 -0
  1123. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +11 -0
  1124. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1125. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1126. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +208 -0
  1127. data/vendor/rails/activesupport/test/core_ext/class_test.rb +36 -0
  1128. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +20 -0
  1129. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +61 -0
  1130. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +64 -0
  1131. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +472 -0
  1132. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1133. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1134. data/vendor/rails/activesupport/test/core_ext/load_error_tests.rb +16 -0
  1135. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default.rb +30 -0
  1136. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1137. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1138. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +31 -0
  1139. data/vendor/rails/activesupport/test/core_ext/module_test.rb +221 -0
  1140. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +24 -0
  1141. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +57 -0
  1142. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +151 -0
  1143. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1144. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1145. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +13 -0
  1146. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +152 -0
  1147. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1148. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +335 -0
  1149. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1150. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1151. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1152. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1153. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1154. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1155. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1156. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1157. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1158. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1159. data/vendor/rails/activesupport/test/dependencies_test.rb +741 -0
  1160. data/vendor/rails/activesupport/test/deprecation_test.rb +151 -0
  1161. data/vendor/rails/activesupport/test/inflector_test.rb +404 -0
  1162. data/vendor/rails/activesupport/test/json.rb +87 -0
  1163. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +164 -0
  1164. data/vendor/rails/activesupport/test/multibyte_conformance.rb +141 -0
  1165. data/vendor/rails/activesupport/test/multibyte_handler_test.rb +274 -0
  1166. data/vendor/rails/activesupport/test/option_merger_test.rb +50 -0
  1167. data/vendor/rails/activesupport/test/ordered_options_test.rb +80 -0
  1168. data/vendor/rails/activesupport/test/reloadable_test.rb +123 -0
  1169. data/vendor/rails/activesupport/test/time_zone_test.rb +91 -0
  1170. data/vendor/rails/activesupport/test/whiny_nil_test.rb +38 -0
  1171. data/vendor/rails/cleanlogs.sh +1 -0
  1172. data/vendor/rails/pushgems.rb +15 -0
  1173. data/vendor/rails/railties/CHANGELOG +1366 -0
  1174. data/vendor/rails/railties/MIT-LICENSE +20 -0
  1175. data/vendor/rails/railties/README +182 -0
  1176. data/vendor/rails/railties/Rakefile +334 -0
  1177. data/vendor/rails/railties/bin/about +3 -0
  1178. data/vendor/rails/railties/bin/breakpointer +3 -0
  1179. data/vendor/rails/railties/bin/console +3 -0
  1180. data/vendor/rails/railties/bin/destroy +3 -0
  1181. data/vendor/rails/railties/bin/generate +3 -0
  1182. data/vendor/rails/railties/bin/performance/benchmarker +3 -0
  1183. data/vendor/rails/railties/bin/performance/profiler +3 -0
  1184. data/vendor/rails/railties/bin/plugin +3 -0
  1185. data/vendor/rails/railties/bin/process/inspector +3 -0
  1186. data/vendor/rails/railties/bin/process/reaper +3 -0
  1187. data/vendor/rails/railties/bin/process/spawner +3 -0
  1188. data/vendor/rails/railties/bin/rails +19 -0
  1189. data/vendor/rails/railties/bin/runner +3 -0
  1190. data/vendor/rails/railties/bin/server +3 -0
  1191. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +123 -0
  1192. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  1193. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  1194. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  1195. data/vendor/rails/railties/configs/apache.conf +40 -0
  1196. data/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  1197. data/vendor/rails/railties/configs/databases/mysql.yml +48 -0
  1198. data/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  1199. data/vendor/rails/railties/configs/databases/postgresql.yml +44 -0
  1200. data/vendor/rails/railties/configs/databases/sqlite2.yml +16 -0
  1201. data/vendor/rails/railties/configs/databases/sqlite3.yml +19 -0
  1202. data/vendor/rails/railties/configs/empty.log +0 -0
  1203. data/vendor/rails/railties/configs/lighttpd.conf +54 -0
  1204. data/vendor/rails/railties/configs/routes.rb +23 -0
  1205. data/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  1206. data/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  1207. data/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  1208. data/vendor/rails/railties/environments/boot.rb +45 -0
  1209. data/vendor/rails/railties/environments/development.rb +21 -0
  1210. data/vendor/rails/railties/environments/environment.rb +60 -0
  1211. data/vendor/rails/railties/environments/production.rb +18 -0
  1212. data/vendor/rails/railties/environments/test.rb +19 -0
  1213. data/vendor/rails/railties/fresh_rakefile +10 -0
  1214. data/vendor/rails/railties/helpers/application.rb +7 -0
  1215. data/vendor/rails/railties/helpers/application_helper.rb +3 -0
  1216. data/vendor/rails/railties/helpers/test_helper.rb +28 -0
  1217. data/vendor/rails/railties/html/404.html +30 -0
  1218. data/vendor/rails/railties/html/500.html +30 -0
  1219. data/vendor/rails/railties/html/favicon.ico +0 -0
  1220. data/vendor/rails/railties/html/images/rails.png +0 -0
  1221. data/vendor/rails/railties/html/index.html +277 -0
  1222. data/vendor/rails/railties/html/javascripts/application.js +2 -0
  1223. data/vendor/rails/railties/html/javascripts/controls.js +833 -0
  1224. data/vendor/rails/railties/html/javascripts/dragdrop.js +942 -0
  1225. data/vendor/rails/railties/html/javascripts/effects.js +1088 -0
  1226. data/vendor/rails/railties/html/javascripts/prototype.js +2515 -0
  1227. data/vendor/rails/railties/html/robots.txt +1 -0
  1228. data/vendor/rails/railties/lib/binding_of_caller.rb +85 -0
  1229. data/vendor/rails/railties/lib/breakpoint.rb +553 -0
  1230. data/vendor/rails/railties/lib/breakpoint_client.rb +196 -0
  1231. data/vendor/rails/railties/lib/code_statistics.rb +107 -0
  1232. data/vendor/rails/railties/lib/commands.rb +17 -0
  1233. data/vendor/rails/railties/lib/commands/about.rb +2 -0
  1234. data/vendor/rails/railties/lib/commands/breakpointer.rb +1 -0
  1235. data/vendor/rails/railties/lib/commands/console.rb +25 -0
  1236. data/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  1237. data/vendor/rails/railties/lib/commands/generate.rb +6 -0
  1238. data/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  1239. data/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  1240. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  1241. data/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  1242. data/vendor/rails/railties/lib/commands/plugin.rb +918 -0
  1243. data/vendor/rails/railties/lib/commands/process/inspector.rb +68 -0
  1244. data/vendor/rails/railties/lib/commands/process/reaper.rb +149 -0
  1245. data/vendor/rails/railties/lib/commands/process/spawner.rb +209 -0
  1246. data/vendor/rails/railties/lib/commands/process/spinner.rb +57 -0
  1247. data/vendor/rails/railties/lib/commands/runner.rb +48 -0
  1248. data/vendor/rails/railties/lib/commands/server.rb +39 -0
  1249. data/vendor/rails/railties/lib/commands/servers/base.rb +19 -0
  1250. data/vendor/rails/railties/lib/commands/servers/lighttpd.rb +94 -0
  1251. data/vendor/rails/railties/lib/commands/servers/mongrel.rb +65 -0
  1252. data/vendor/rails/railties/lib/commands/servers/webrick.rb +59 -0
  1253. data/vendor/rails/railties/lib/commands/update.rb +4 -0
  1254. data/vendor/rails/railties/lib/console_app.rb +27 -0
  1255. data/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  1256. data/vendor/rails/railties/lib/console_with_helpers.rb +23 -0
  1257. data/vendor/rails/railties/lib/dispatcher.rb +173 -0
  1258. data/vendor/rails/railties/lib/fcgi_handler.rb +225 -0
  1259. data/vendor/rails/railties/lib/initializer.rb +702 -0
  1260. data/vendor/rails/railties/lib/rails/version.rb +9 -0
  1261. data/vendor/rails/railties/lib/rails_generator.rb +43 -0
  1262. data/vendor/rails/railties/lib/rails_generator/base.rb +261 -0
  1263. data/vendor/rails/railties/lib/rails_generator/commands.rb +581 -0
  1264. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +42 -0
  1265. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +16 -0
  1266. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +160 -0
  1267. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +30 -0
  1268. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
  1269. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +10 -0
  1270. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +18 -0
  1271. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  1272. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.rhtml +2 -0
  1273. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +14 -0
  1274. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  1275. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  1276. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +18 -0
  1277. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +34 -0
  1278. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +3 -0
  1279. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +13 -0
  1280. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +37 -0
  1281. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +3 -0
  1282. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +14 -0
  1283. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +7 -0
  1284. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +7 -0
  1285. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +26 -0
  1286. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +38 -0
  1287. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +11 -0
  1288. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +13 -0
  1289. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
  1290. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +10 -0
  1291. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +15 -0
  1292. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  1293. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  1294. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +10 -0
  1295. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +35 -0
  1296. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +38 -0
  1297. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +4 -0
  1298. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
  1299. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  1300. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  1301. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  1302. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  1303. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  1304. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  1305. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  1306. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  1307. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +76 -0
  1308. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/USAGE +18 -0
  1309. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  1310. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml +11 -0
  1311. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +20 -0
  1312. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  1313. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/migration.rb +13 -0
  1314. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/model.rb +2 -0
  1315. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb +10 -0
  1316. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +32 -0
  1317. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +193 -0
  1318. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +58 -0
  1319. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +3 -0
  1320. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +1 -0
  1321. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +102 -0
  1322. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  1323. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +17 -0
  1324. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +74 -0
  1325. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +9 -0
  1326. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +27 -0
  1327. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +8 -0
  1328. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +8 -0
  1329. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/USAGE +29 -0
  1330. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/scaffold_resource_generator.rb +92 -0
  1331. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb +79 -0
  1332. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml +11 -0
  1333. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb +57 -0
  1334. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb +2 -0
  1335. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/layout.rhtml +17 -0
  1336. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb +13 -0
  1337. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb +2 -0
  1338. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/style.css +74 -0
  1339. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb +10 -0
  1340. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml +19 -0
  1341. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml +24 -0
  1342. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml +18 -0
  1343. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml +10 -0
  1344. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +15 -0
  1345. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  1346. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  1347. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/USAGE +28 -0
  1348. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +5 -0
  1349. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/controller.rb +8 -0
  1350. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +19 -0
  1351. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/web_service_generator.rb +29 -0
  1352. data/vendor/rails/railties/lib/rails_generator/lookup.rb +209 -0
  1353. data/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  1354. data/vendor/rails/railties/lib/rails_generator/options.rb +143 -0
  1355. data/vendor/rails/railties/lib/rails_generator/scripts.rb +83 -0
  1356. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +7 -0
  1357. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  1358. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  1359. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  1360. data/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  1361. data/vendor/rails/railties/lib/railties_path.rb +1 -0
  1362. data/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  1363. data/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  1364. data/vendor/rails/railties/lib/tasks/databases.rake +187 -0
  1365. data/vendor/rails/railties/lib/tasks/framework.rake +112 -0
  1366. data/vendor/rails/railties/lib/tasks/log.rake +9 -0
  1367. data/vendor/rails/railties/lib/tasks/misc.rake +4 -0
  1368. data/vendor/rails/railties/lib/tasks/pre_namespace_aliases.rake +53 -0
  1369. data/vendor/rails/railties/lib/tasks/rails.rb +8 -0
  1370. data/vendor/rails/railties/lib/tasks/statistics.rake +18 -0
  1371. data/vendor/rails/railties/lib/tasks/testing.rake +120 -0
  1372. data/vendor/rails/railties/lib/test_help.rb +19 -0
  1373. data/vendor/rails/railties/lib/webrick_server.rb +166 -0
  1374. data/vendor/rails/railties/test/abstract_unit.rb +20 -0
  1375. data/vendor/rails/railties/test/dispatcher_test.rb +141 -0
  1376. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +294 -0
  1377. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1378. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1379. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1380. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1381. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1382. data/vendor/rails/railties/test/initializer_test.rb +33 -0
  1383. data/vendor/rails/railties/test/mocks/dispatcher.rb +13 -0
  1384. data/vendor/rails/railties/test/mocks/fcgi.rb +15 -0
  1385. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1386. data/vendor/rails/railties/test/mocks/stubbed_breakpoint.rb +2 -0
  1387. data/vendor/rails/railties/test/mocks/stubbed_kernel.rb +5 -0
  1388. data/vendor/rails/railties/test/plugin_test.rb +111 -0
  1389. data/vendor/rails/railties/test/rails_generator_test.rb +127 -0
  1390. data/vendor/rails/railties/test/rails_info_controller_test.rb +48 -0
  1391. data/vendor/rails/railties/test/rails_info_test.rb +98 -0
  1392. data/vendor/rails/release.rb +25 -0
  1393. data/vendor/redcloth/Rakefile +196 -0
  1394. data/vendor/redcloth/bin/redcloth +3 -0
  1395. data/vendor/redcloth/lib/rctodb.rb +1107 -0
  1396. data/vendor/redcloth/lib/redcloth.rb +1130 -0
  1397. data/vendor/redcloth/run-tests.rb +28 -0
  1398. data/vendor/redcloth/setup.rb +1376 -0
  1399. data/vendor/redcloth/tests/code.yml +105 -0
  1400. data/vendor/redcloth/tests/images.yml +171 -0
  1401. data/vendor/redcloth/tests/instiki.yml +39 -0
  1402. data/vendor/redcloth/tests/links.yml +155 -0
  1403. data/vendor/redcloth/tests/lists.yml +77 -0
  1404. data/vendor/redcloth/tests/markdown.yml +218 -0
  1405. data/vendor/redcloth/tests/poignant.yml +64 -0
  1406. data/vendor/redcloth/tests/table.yml +198 -0
  1407. data/vendor/redcloth/tests/textism.yml +406 -0
  1408. data/vendor/rubypants/README +114 -0
  1409. data/vendor/rubypants/Rakefile +84 -0
  1410. data/vendor/rubypants/install.rb +9 -0
  1411. data/vendor/rubypants/rubypants.rb +490 -0
  1412. data/vendor/rubypants/test_rubypants.rb +162 -0
  1413. metadata +1701 -114
  1414. data/app/behaviors/archive_behavior.rb +0 -42
  1415. data/app/behaviors/archive_day_index_behavior.rb +0 -30
  1416. data/app/behaviors/archive_month_index_behavior.rb +0 -30
  1417. data/app/behaviors/archive_year_index_behavior.rb +0 -30
  1418. data/app/behaviors/page_missing_behavior.rb +0 -31
  1419. data/app/filters/markdown_filter.rb +0 -9
  1420. data/app/filters/textile_filter.rb +0 -9
  1421. data/app/models/behavior.rb +0 -194
  1422. data/db/development_structure.sql +0 -80
  1423. data/lib/advanced_delegation.rb +0 -21
  1424. data/lib/archive_index_behavior_tags_and_methods.rb +0 -48
  1425. data/lib/generators/behavior/USAGE +0 -16
  1426. data/lib/generators/behavior/behavior_generator.rb +0 -22
  1427. data/lib/generators/behavior/templates/model.rb.template +0 -9
  1428. data/lib/generators/behavior/templates/unit_test.rb.template +0 -16
  1429. data/lib/generators/filter/USAGE +0 -16
  1430. data/lib/generators/filter/filter_generator.rb +0 -22
  1431. data/lib/generators/filter/templates/model.rb.template +0 -8
  1432. data/lib/generators/filter/templates/unit_test.rb.template +0 -7
  1433. data/lib/plugins/index_quoting_fix/init.rb +0 -32
  1434. data/lib/registerable.rb +0 -70
  1435. data/script/setup_database +0 -297
  1436. data/test/functional/admin/model_controller_test.rb +0 -152
  1437. data/test/helpers/behavior_render_test_helper.rb +0 -34
  1438. data/test/helpers/behavior_test_helper.rb +0 -47
  1439. data/test/unit/behavior_test.rb +0 -196
  1440. data/test/unit/filters/markdown_filter_test.rb +0 -14
  1441. data/test/unit/filters/textile_filter_test.rb +0 -14
  1442. data/test/unit/registerable_test.rb +0 -68
@@ -0,0 +1,49 @@
1
+ require 'abstract_unit'
2
+
3
+ class AttributeMethodsTest < Test::Unit::TestCase
4
+ def setup
5
+ @old_suffixes = ActiveRecord::Base.send(:attribute_method_suffixes).dup
6
+ @target = Class.new(ActiveRecord::Base)
7
+ @target.table_name = 'topics'
8
+ end
9
+
10
+ def teardown
11
+ ActiveRecord::Base.send(:attribute_method_suffixes).clear
12
+ ActiveRecord::Base.attribute_method_suffix *@old_suffixes
13
+ end
14
+
15
+
16
+ def test_match_attribute_method_query_returns_match_data
17
+ assert_not_nil md = @target.match_attribute_method?('title=')
18
+ assert_equal 'title', md.pre_match
19
+ assert_equal ['='], md.captures
20
+
21
+ %w(_hello_world ist! _maybe?).each do |suffix|
22
+ @target.class_eval "def attribute#{suffix}(*args) args end"
23
+ @target.attribute_method_suffix suffix
24
+
25
+ assert_not_nil md = @target.match_attribute_method?("title#{suffix}")
26
+ assert_equal 'title', md.pre_match
27
+ assert_equal [suffix], md.captures
28
+ end
29
+ end
30
+
31
+ def test_declared_attribute_method_affects_respond_to_and_method_missing
32
+ topic = @target.new(:title => 'Budget')
33
+ assert topic.respond_to?('title')
34
+ assert_equal 'Budget', topic.title
35
+ assert !topic.respond_to?('title_hello_world')
36
+ assert_raise(NoMethodError) { topic.title_hello_world }
37
+
38
+ %w(_hello_world _it! _candidate= able?).each do |suffix|
39
+ @target.class_eval "def attribute#{suffix}(*args) args end"
40
+ @target.attribute_method_suffix suffix
41
+
42
+ meth = "title#{suffix}"
43
+ assert topic.respond_to?(meth)
44
+ assert_equal ['title'], topic.send(meth)
45
+ assert_equal ['title', 'a'], topic.send(meth, 'a')
46
+ assert_equal ['title', 1, 2, 3], topic.send(meth, 1, 2, 3)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,1586 @@
1
+ require 'abstract_unit'
2
+ require 'fixtures/topic'
3
+ require 'fixtures/reply'
4
+ require 'fixtures/company'
5
+ require 'fixtures/customer'
6
+ require 'fixtures/developer'
7
+ require 'fixtures/project'
8
+ require 'fixtures/default'
9
+ require 'fixtures/auto_id'
10
+ require 'fixtures/column_name'
11
+ require 'fixtures/subscriber'
12
+ require 'fixtures/keyboard'
13
+ require 'fixtures/post'
14
+
15
+ class Category < ActiveRecord::Base; end
16
+ class Smarts < ActiveRecord::Base; end
17
+ class CreditCard < ActiveRecord::Base
18
+ class PinNumber < ActiveRecord::Base
19
+ class CvvCode < ActiveRecord::Base; end
20
+ class SubCvvCode < CvvCode; end
21
+ end
22
+ class SubPinNumber < PinNumber; end
23
+ class Brand < Category; end
24
+ end
25
+ class MasterCreditCard < ActiveRecord::Base; end
26
+ class Post < ActiveRecord::Base; end
27
+ class Computer < ActiveRecord::Base; end
28
+ class NonExistentTable < ActiveRecord::Base; end
29
+ class TestOracleDefault < ActiveRecord::Base; end
30
+
31
+ class LoosePerson < ActiveRecord::Base
32
+ self.table_name = 'people'
33
+ self.abstract_class = true
34
+ attr_protected :credit_rating, :administrator
35
+ end
36
+
37
+ class LooseDescendant < LoosePerson
38
+ attr_protected :phone_number
39
+ end
40
+
41
+ class TightPerson < ActiveRecord::Base
42
+ self.table_name = 'people'
43
+ attr_accessible :name, :address
44
+ end
45
+
46
+ class TightDescendant < TightPerson
47
+ attr_accessible :phone_number
48
+ end
49
+
50
+ class Booleantest < ActiveRecord::Base; end
51
+
52
+ class Task < ActiveRecord::Base
53
+ attr_protected :starting
54
+ end
55
+
56
+ class BasicsTest < Test::Unit::TestCase
57
+ fixtures :topics, :companies, :developers, :projects, :computers, :accounts
58
+
59
+ def test_table_exists
60
+ assert !NonExistentTable.table_exists?
61
+ assert Topic.table_exists?
62
+ end
63
+
64
+ def test_set_attributes
65
+ topic = Topic.find(1)
66
+ topic.attributes = { "title" => "Budget", "author_name" => "Jason" }
67
+ topic.save
68
+ assert_equal("Budget", topic.title)
69
+ assert_equal("Jason", topic.author_name)
70
+ assert_equal(topics(:first).author_email_address, Topic.find(1).author_email_address)
71
+ end
72
+
73
+ def test_integers_as_nil
74
+ test = AutoId.create('value' => '')
75
+ assert_nil AutoId.find(test.id).value
76
+ end
77
+
78
+ def test_set_attributes_with_block
79
+ topic = Topic.new do |t|
80
+ t.title = "Budget"
81
+ t.author_name = "Jason"
82
+ end
83
+
84
+ assert_equal("Budget", topic.title)
85
+ assert_equal("Jason", topic.author_name)
86
+ end
87
+
88
+ def test_respond_to?
89
+ topic = Topic.find(1)
90
+ assert topic.respond_to?("title")
91
+ assert topic.respond_to?("title?")
92
+ assert topic.respond_to?("title=")
93
+ assert topic.respond_to?(:title)
94
+ assert topic.respond_to?(:title?)
95
+ assert topic.respond_to?(:title=)
96
+ assert topic.respond_to?("author_name")
97
+ assert topic.respond_to?("attribute_names")
98
+ assert !topic.respond_to?("nothingness")
99
+ assert !topic.respond_to?(:nothingness)
100
+ end
101
+
102
+ def test_array_content
103
+ topic = Topic.new
104
+ topic.content = %w( one two three )
105
+ topic.save
106
+
107
+ assert_equal(%w( one two three ), Topic.find(topic.id).content)
108
+ end
109
+
110
+ def test_hash_content
111
+ topic = Topic.new
112
+ topic.content = { "one" => 1, "two" => 2 }
113
+ topic.save
114
+
115
+ assert_equal 2, Topic.find(topic.id).content["two"]
116
+
117
+ topic.content["three"] = 3
118
+ topic.save
119
+
120
+ assert_equal 3, Topic.find(topic.id).content["three"]
121
+ end
122
+
123
+ def test_update_array_content
124
+ topic = Topic.new
125
+ topic.content = %w( one two three )
126
+
127
+ topic.content.push "four"
128
+ assert_equal(%w( one two three four ), topic.content)
129
+
130
+ topic.save
131
+
132
+ topic = Topic.find(topic.id)
133
+ topic.content << "five"
134
+ assert_equal(%w( one two three four five ), topic.content)
135
+ end
136
+
137
+ def test_case_sensitive_attributes_hash
138
+ # DB2 is not case-sensitive
139
+ return true if current_adapter?(:DB2Adapter)
140
+
141
+ assert_equal @loaded_fixtures['computers']['workstation'].to_hash, Computer.find(:first).attributes
142
+ end
143
+
144
+ def test_create
145
+ topic = Topic.new
146
+ topic.title = "New Topic"
147
+ topic.save
148
+ topic_reloaded = Topic.find(topic.id)
149
+ assert_equal("New Topic", topic_reloaded.title)
150
+ end
151
+
152
+ def test_save!
153
+ topic = Topic.new(:title => "New Topic")
154
+ assert topic.save!
155
+
156
+ reply = Reply.new
157
+ assert_raise(ActiveRecord::RecordInvalid) { reply.save! }
158
+ end
159
+
160
+ def test_save_null_string_attributes
161
+ topic = Topic.find(1)
162
+ topic.attributes = { "title" => "null", "author_name" => "null" }
163
+ topic.save!
164
+ topic.reload
165
+ assert_equal("null", topic.title)
166
+ assert_equal("null", topic.author_name)
167
+ end
168
+
169
+ def test_save_nil_string_attributes
170
+ topic = Topic.find(1)
171
+ topic.title = nil
172
+ topic.save!
173
+ topic.reload
174
+ assert_nil topic.title
175
+ end
176
+
177
+ def test_hashes_not_mangled
178
+ new_topic = { :title => "New Topic" }
179
+ new_topic_values = { :title => "AnotherTopic" }
180
+
181
+ topic = Topic.new(new_topic)
182
+ assert_equal new_topic[:title], topic.title
183
+
184
+ topic.attributes= new_topic_values
185
+ assert_equal new_topic_values[:title], topic.title
186
+ end
187
+
188
+ def test_create_many
189
+ topics = Topic.create([ { "title" => "first" }, { "title" => "second" }])
190
+ assert_equal 2, topics.size
191
+ assert_equal "first", topics.first.title
192
+ end
193
+
194
+ def test_create_columns_not_equal_attributes
195
+ topic = Topic.new
196
+ topic.title = 'Another New Topic'
197
+ topic.send :write_attribute, 'does_not_exist', 'test'
198
+ assert_nothing_raised { topic.save }
199
+ end
200
+
201
+ def test_create_through_factory
202
+ topic = Topic.create("title" => "New Topic")
203
+ topicReloaded = Topic.find(topic.id)
204
+ assert_equal(topic, topicReloaded)
205
+ end
206
+
207
+ def test_update
208
+ topic = Topic.new
209
+ topic.title = "Another New Topic"
210
+ topic.written_on = "2003-12-12 23:23:00"
211
+ topic.save
212
+ topicReloaded = Topic.find(topic.id)
213
+ assert_equal("Another New Topic", topicReloaded.title)
214
+
215
+ topicReloaded.title = "Updated topic"
216
+ topicReloaded.save
217
+
218
+ topicReloadedAgain = Topic.find(topic.id)
219
+
220
+ assert_equal("Updated topic", topicReloadedAgain.title)
221
+ end
222
+
223
+ def test_update_columns_not_equal_attributes
224
+ topic = Topic.new
225
+ topic.title = "Still another topic"
226
+ topic.save
227
+
228
+ topicReloaded = Topic.find(topic.id)
229
+ topicReloaded.title = "A New Topic"
230
+ topicReloaded.send :write_attribute, 'does_not_exist', 'test'
231
+ assert_nothing_raised { topicReloaded.save }
232
+ end
233
+
234
+ def test_write_attribute
235
+ topic = Topic.new
236
+ topic.send(:write_attribute, :title, "Still another topic")
237
+ assert_equal "Still another topic", topic.title
238
+
239
+ topic.send(:write_attribute, "title", "Still another topic: part 2")
240
+ assert_equal "Still another topic: part 2", topic.title
241
+ end
242
+
243
+ def test_read_attribute
244
+ topic = Topic.new
245
+ topic.title = "Don't change the topic"
246
+ assert_equal "Don't change the topic", topic.send(:read_attribute, "title")
247
+ assert_equal "Don't change the topic", topic["title"]
248
+
249
+ assert_equal "Don't change the topic", topic.send(:read_attribute, :title)
250
+ assert_equal "Don't change the topic", topic[:title]
251
+ end
252
+
253
+ def test_read_attribute_when_false
254
+ topic = topics(:first)
255
+ topic.approved = false
256
+ assert !topic.approved?, "approved should be false"
257
+ topic.approved = "false"
258
+ assert !topic.approved?, "approved should be false"
259
+ end
260
+
261
+ def test_read_attribute_when_true
262
+ topic = topics(:first)
263
+ topic.approved = true
264
+ assert topic.approved?, "approved should be true"
265
+ topic.approved = "true"
266
+ assert topic.approved?, "approved should be true"
267
+ end
268
+
269
+ def test_read_write_boolean_attribute
270
+ topic = Topic.new
271
+ # puts ""
272
+ # puts "New Topic"
273
+ # puts topic.inspect
274
+ topic.approved = "false"
275
+ # puts "Expecting false"
276
+ # puts topic.inspect
277
+ assert !topic.approved?, "approved should be false"
278
+ topic.approved = "false"
279
+ # puts "Expecting false"
280
+ # puts topic.inspect
281
+ assert !topic.approved?, "approved should be false"
282
+ topic.approved = "true"
283
+ # puts "Expecting true"
284
+ # puts topic.inspect
285
+ assert topic.approved?, "approved should be true"
286
+ topic.approved = "true"
287
+ # puts "Expecting true"
288
+ # puts topic.inspect
289
+ assert topic.approved?, "approved should be true"
290
+ # puts ""
291
+ end
292
+
293
+ def test_reader_generation
294
+ Topic.find(:first).title
295
+ Firm.find(:first).name
296
+ Client.find(:first).name
297
+ if ActiveRecord::Base.generate_read_methods
298
+ assert_readers(Topic, %w(type replies_count))
299
+ assert_readers(Firm, %w(type))
300
+ assert_readers(Client, %w(type ruby_type rating?))
301
+ else
302
+ [Topic, Firm, Client].each {|klass| assert_equal klass.read_methods, {}}
303
+ end
304
+ end
305
+
306
+ def test_reader_for_invalid_column_names
307
+ # column names which aren't legal ruby ids
308
+ topic = Topic.find(:first)
309
+ topic.send(:define_read_method, "mumub-jumbo".to_sym, "mumub-jumbo", nil)
310
+ assert !Topic.read_methods.include?("mumub-jumbo")
311
+ end
312
+
313
+ def test_non_attribute_access_and_assignment
314
+ topic = Topic.new
315
+ assert !topic.respond_to?("mumbo")
316
+ assert_raises(NoMethodError) { topic.mumbo }
317
+ assert_raises(NoMethodError) { topic.mumbo = 5 }
318
+ end
319
+
320
+ def test_preserving_date_objects
321
+ # SQL Server doesn't have a separate column type just for dates, so all are returned as time
322
+ return true if current_adapter?(:SQLServerAdapter)
323
+
324
+ if current_adapter?(:SybaseAdapter)
325
+ # Sybase ctlib does not (yet?) support the date type; use datetime instead.
326
+ assert_kind_of(
327
+ Time, Topic.find(1).last_read,
328
+ "The last_read attribute should be of the Time class"
329
+ )
330
+ else
331
+ assert_kind_of(
332
+ Date, Topic.find(1).last_read,
333
+ "The last_read attribute should be of the Date class"
334
+ )
335
+ end
336
+ end
337
+
338
+ def test_preserving_time_objects
339
+ assert_kind_of(
340
+ Time, Topic.find(1).bonus_time,
341
+ "The bonus_time attribute should be of the Time class"
342
+ )
343
+
344
+ assert_kind_of(
345
+ Time, Topic.find(1).written_on,
346
+ "The written_on attribute should be of the Time class"
347
+ )
348
+
349
+ # For adapters which support microsecond resolution.
350
+ if current_adapter?(:PostgreSQLAdapter)
351
+ assert_equal 11, Topic.find(1).written_on.sec
352
+ assert_equal 223300, Topic.find(1).written_on.usec
353
+ assert_equal 9900, Topic.find(2).written_on.usec
354
+ end
355
+ end
356
+
357
+ def test_destroy
358
+ topic = Topic.find(1)
359
+ assert_equal topic, topic.destroy, 'topic.destroy did not return self'
360
+ assert topic.frozen?, 'topic not frozen after destroy'
361
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(topic.id) }
362
+ end
363
+
364
+ def test_record_not_found_exception
365
+ assert_raises(ActiveRecord::RecordNotFound) { topicReloaded = Topic.find(99999) }
366
+ end
367
+
368
+ def test_initialize_with_attributes
369
+ topic = Topic.new({
370
+ "title" => "initialized from attributes", "written_on" => "2003-12-12 23:23"
371
+ })
372
+
373
+ assert_equal("initialized from attributes", topic.title)
374
+ end
375
+
376
+ def test_initialize_with_invalid_attribute
377
+ begin
378
+ topic = Topic.new({ "title" => "test",
379
+ "last_read(1i)" => "2005", "last_read(2i)" => "2", "last_read(3i)" => "31"})
380
+ rescue ActiveRecord::MultiparameterAssignmentErrors => ex
381
+ assert_equal(1, ex.errors.size)
382
+ assert_equal("last_read", ex.errors[0].attribute)
383
+ end
384
+ end
385
+
386
+ def test_load
387
+ topics = Topic.find(:all, :order => 'id')
388
+ assert_equal(2, topics.size)
389
+ assert_equal(topics(:first).title, topics.first.title)
390
+ end
391
+
392
+ def test_load_with_condition
393
+ topics = Topic.find(:all, :conditions => "author_name = 'Mary'")
394
+
395
+ assert_equal(1, topics.size)
396
+ assert_equal(topics(:second).title, topics.first.title)
397
+ end
398
+
399
+ def test_table_name_guesses
400
+ classes = [Category, Smarts, CreditCard, CreditCard::PinNumber, CreditCard::PinNumber::CvvCode, CreditCard::SubPinNumber, CreditCard::Brand, MasterCreditCard]
401
+
402
+ assert_equal "topics", Topic.table_name
403
+
404
+ assert_equal "categories", Category.table_name
405
+ assert_equal "smarts", Smarts.table_name
406
+ assert_equal "credit_cards", CreditCard.table_name
407
+ assert_equal "credit_card_pin_numbers", CreditCard::PinNumber.table_name
408
+ assert_equal "credit_card_pin_number_cvv_codes", CreditCard::PinNumber::CvvCode.table_name
409
+ assert_equal "credit_card_pin_numbers", CreditCard::SubPinNumber.table_name
410
+ assert_equal "categories", CreditCard::Brand.table_name
411
+ assert_equal "master_credit_cards", MasterCreditCard.table_name
412
+
413
+ ActiveRecord::Base.pluralize_table_names = false
414
+ classes.each(&:reset_table_name)
415
+
416
+ assert_equal "category", Category.table_name
417
+ assert_equal "smarts", Smarts.table_name
418
+ assert_equal "credit_card", CreditCard.table_name
419
+ assert_equal "credit_card_pin_number", CreditCard::PinNumber.table_name
420
+ assert_equal "credit_card_pin_number_cvv_code", CreditCard::PinNumber::CvvCode.table_name
421
+ assert_equal "credit_card_pin_number", CreditCard::SubPinNumber.table_name
422
+ assert_equal "category", CreditCard::Brand.table_name
423
+ assert_equal "master_credit_card", MasterCreditCard.table_name
424
+
425
+ ActiveRecord::Base.pluralize_table_names = true
426
+ classes.each(&:reset_table_name)
427
+
428
+ ActiveRecord::Base.table_name_prefix = "test_"
429
+ Category.reset_table_name
430
+ assert_equal "test_categories", Category.table_name
431
+ ActiveRecord::Base.table_name_suffix = "_test"
432
+ Category.reset_table_name
433
+ assert_equal "test_categories_test", Category.table_name
434
+ ActiveRecord::Base.table_name_prefix = ""
435
+ Category.reset_table_name
436
+ assert_equal "categories_test", Category.table_name
437
+ ActiveRecord::Base.table_name_suffix = ""
438
+ Category.reset_table_name
439
+ assert_equal "categories", Category.table_name
440
+
441
+ ActiveRecord::Base.pluralize_table_names = false
442
+ ActiveRecord::Base.table_name_prefix = "test_"
443
+ Category.reset_table_name
444
+ assert_equal "test_category", Category.table_name
445
+ ActiveRecord::Base.table_name_suffix = "_test"
446
+ Category.reset_table_name
447
+ assert_equal "test_category_test", Category.table_name
448
+ ActiveRecord::Base.table_name_prefix = ""
449
+ Category.reset_table_name
450
+ assert_equal "category_test", Category.table_name
451
+ ActiveRecord::Base.table_name_suffix = ""
452
+ Category.reset_table_name
453
+ assert_equal "category", Category.table_name
454
+
455
+ ActiveRecord::Base.pluralize_table_names = true
456
+ classes.each(&:reset_table_name)
457
+ end
458
+
459
+ def test_destroy_all
460
+ assert_equal 2, Topic.count
461
+
462
+ Topic.destroy_all "author_name = 'Mary'"
463
+ assert_equal 1, Topic.count
464
+ end
465
+
466
+ def test_destroy_many
467
+ assert_equal 3, Client.count
468
+ Client.destroy([2, 3])
469
+ assert_equal 1, Client.count
470
+ end
471
+
472
+ def test_delete_many
473
+ Topic.delete([1, 2])
474
+ assert_equal 0, Topic.count
475
+ end
476
+
477
+ def test_boolean_attributes
478
+ assert ! Topic.find(1).approved?
479
+ assert Topic.find(2).approved?
480
+ end
481
+
482
+ def test_increment_counter
483
+ Topic.increment_counter("replies_count", 1)
484
+ assert_equal 2, Topic.find(1).replies_count
485
+
486
+ Topic.increment_counter("replies_count", 1)
487
+ assert_equal 3, Topic.find(1).replies_count
488
+ end
489
+
490
+ def test_decrement_counter
491
+ Topic.decrement_counter("replies_count", 2)
492
+ assert_equal -1, Topic.find(2).replies_count
493
+
494
+ Topic.decrement_counter("replies_count", 2)
495
+ assert_equal -2, Topic.find(2).replies_count
496
+ end
497
+
498
+ def test_update_all
499
+ # The ADO library doesn't support the number of affected rows
500
+ return true if current_adapter?(:SQLServerAdapter)
501
+
502
+ assert_equal 2, Topic.update_all("content = 'bulk updated!'")
503
+ assert_equal "bulk updated!", Topic.find(1).content
504
+ assert_equal "bulk updated!", Topic.find(2).content
505
+ assert_equal 2, Topic.update_all(['content = ?', 'bulk updated again!'])
506
+ assert_equal "bulk updated again!", Topic.find(1).content
507
+ assert_equal "bulk updated again!", Topic.find(2).content
508
+ end
509
+
510
+ def test_update_many
511
+ topic_data = { 1 => { "content" => "1 updated" }, 2 => { "content" => "2 updated" } }
512
+ updated = Topic.update(topic_data.keys, topic_data.values)
513
+
514
+ assert_equal 2, updated.size
515
+ assert_equal "1 updated", Topic.find(1).content
516
+ assert_equal "2 updated", Topic.find(2).content
517
+ end
518
+
519
+ def test_delete_all
520
+ # The ADO library doesn't support the number of affected rows
521
+ return true if current_adapter?(:SQLServerAdapter)
522
+
523
+ assert_equal 2, Topic.delete_all
524
+ end
525
+
526
+ def test_update_by_condition
527
+ Topic.update_all "content = 'bulk updated!'", ["approved = ?", true]
528
+ assert_equal "Have a nice day", Topic.find(1).content
529
+ assert_equal "bulk updated!", Topic.find(2).content
530
+ end
531
+
532
+ def test_attribute_present
533
+ t = Topic.new
534
+ t.title = "hello there!"
535
+ t.written_on = Time.now
536
+ assert t.attribute_present?("title")
537
+ assert t.attribute_present?("written_on")
538
+ assert !t.attribute_present?("content")
539
+ end
540
+
541
+ def test_attribute_keys_on_new_instance
542
+ t = Topic.new
543
+ assert_equal nil, t.title, "The topics table has a title column, so it should be nil"
544
+ assert_raise(NoMethodError) { t.title2 }
545
+ end
546
+
547
+ def test_class_name
548
+ assert_equal "Firm", ActiveRecord::Base.class_name("firms")
549
+ assert_equal "Category", ActiveRecord::Base.class_name("categories")
550
+ assert_equal "AccountHolder", ActiveRecord::Base.class_name("account_holder")
551
+
552
+ ActiveRecord::Base.pluralize_table_names = false
553
+ assert_equal "Firms", ActiveRecord::Base.class_name( "firms" )
554
+ ActiveRecord::Base.pluralize_table_names = true
555
+
556
+ ActiveRecord::Base.table_name_prefix = "test_"
557
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms" )
558
+ ActiveRecord::Base.table_name_suffix = "_tests"
559
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms_tests" )
560
+ ActiveRecord::Base.table_name_prefix = ""
561
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms_tests" )
562
+ ActiveRecord::Base.table_name_suffix = ""
563
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms" )
564
+ end
565
+
566
+ def test_null_fields
567
+ assert_nil Topic.find(1).parent_id
568
+ assert_nil Topic.create("title" => "Hey you").parent_id
569
+ end
570
+
571
+ def test_default_values
572
+ topic = Topic.new
573
+ assert topic.approved?
574
+ assert_nil topic.written_on
575
+ assert_nil topic.bonus_time
576
+ assert_nil topic.last_read
577
+
578
+ topic.save
579
+
580
+ topic = Topic.find(topic.id)
581
+ assert topic.approved?
582
+ assert_nil topic.last_read
583
+
584
+ # Oracle has some funky default handling, so it requires a bit of
585
+ # extra testing. See ticket #2788.
586
+ if current_adapter?(:OracleAdapter)
587
+ test = TestOracleDefault.new
588
+ assert_equal "X", test.test_char
589
+ assert_equal "hello", test.test_string
590
+ assert_equal 3, test.test_int
591
+ end
592
+ end
593
+
594
+ # Oracle, SQLServer, and Sybase do not have a TIME datatype.
595
+ unless current_adapter?(:SQLServerAdapter, :OracleAdapter, :SybaseAdapter)
596
+ def test_utc_as_time_zone
597
+ Topic.default_timezone = :utc
598
+ attributes = { "bonus_time" => "5:42:00AM" }
599
+ topic = Topic.find(1)
600
+ topic.attributes = attributes
601
+ assert_equal Time.utc(2000, 1, 1, 5, 42, 0), topic.bonus_time
602
+ Topic.default_timezone = :local
603
+ end
604
+
605
+ def test_utc_as_time_zone_and_new
606
+ Topic.default_timezone = :utc
607
+ attributes = { "bonus_time(1i)"=>"2000",
608
+ "bonus_time(2i)"=>"1",
609
+ "bonus_time(3i)"=>"1",
610
+ "bonus_time(4i)"=>"10",
611
+ "bonus_time(5i)"=>"35",
612
+ "bonus_time(6i)"=>"50" }
613
+ topic = Topic.new(attributes)
614
+ assert_equal Time.utc(2000, 1, 1, 10, 35, 50), topic.bonus_time
615
+ Topic.default_timezone = :local
616
+ end
617
+ end
618
+
619
+ def test_default_values_on_empty_strings
620
+ topic = Topic.new
621
+ topic.approved = nil
622
+ topic.last_read = nil
623
+
624
+ topic.save
625
+
626
+ topic = Topic.find(topic.id)
627
+ assert_nil topic.last_read
628
+
629
+ # Sybase adapter does not allow nulls in boolean columns
630
+ if current_adapter?(:SybaseAdapter)
631
+ assert topic.approved == false
632
+ else
633
+ assert_nil topic.approved
634
+ end
635
+ end
636
+
637
+ def test_equality
638
+ assert_equal Topic.find(1), Topic.find(2).topic
639
+ end
640
+
641
+ def test_equality_of_new_records
642
+ assert_not_equal Topic.new, Topic.new
643
+ end
644
+
645
+ def test_hashing
646
+ assert_equal [ Topic.find(1) ], [ Topic.find(2).topic ] & [ Topic.find(1) ]
647
+ end
648
+
649
+ def test_destroy_new_record
650
+ client = Client.new
651
+ client.destroy
652
+ assert client.frozen?
653
+ end
654
+
655
+ def test_destroy_record_with_associations
656
+ client = Client.find(3)
657
+ client.destroy
658
+ assert client.frozen?
659
+ assert_kind_of Firm, client.firm
660
+ assert_raises(TypeError) { client.name = "something else" }
661
+ end
662
+
663
+ def test_update_attribute
664
+ assert !Topic.find(1).approved?
665
+ Topic.find(1).update_attribute("approved", true)
666
+ assert Topic.find(1).approved?
667
+
668
+ Topic.find(1).update_attribute(:approved, false)
669
+ assert !Topic.find(1).approved?
670
+ end
671
+
672
+ def test_update_attributes
673
+ topic = Topic.find(1)
674
+ assert !topic.approved?
675
+ assert_equal "The First Topic", topic.title
676
+
677
+ topic.update_attributes("approved" => true, "title" => "The First Topic Updated")
678
+ topic.reload
679
+ assert topic.approved?
680
+ assert_equal "The First Topic Updated", topic.title
681
+
682
+ topic.update_attributes(:approved => false, :title => "The First Topic")
683
+ topic.reload
684
+ assert !topic.approved?
685
+ assert_equal "The First Topic", topic.title
686
+ end
687
+
688
+ def test_update_attributes!
689
+ reply = Reply.find(2)
690
+ assert_equal "The Second Topic's of the day", reply.title
691
+ assert_equal "Have a nice day", reply.content
692
+
693
+ reply.update_attributes!("title" => "The Second Topic's of the day updated", "content" => "Have a nice evening")
694
+ reply.reload
695
+ assert_equal "The Second Topic's of the day updated", reply.title
696
+ assert_equal "Have a nice evening", reply.content
697
+
698
+ reply.update_attributes!(:title => "The Second Topic's of the day", :content => "Have a nice day")
699
+ reply.reload
700
+ assert_equal "The Second Topic's of the day", reply.title
701
+ assert_equal "Have a nice day", reply.content
702
+
703
+ assert_raise(ActiveRecord::RecordInvalid) { reply.update_attributes!(:title => nil, :content => "Have a nice evening") }
704
+ end
705
+
706
+ def test_mass_assignment_protection
707
+ firm = Firm.new
708
+ firm.attributes = { "name" => "Next Angle", "rating" => 5 }
709
+ assert_equal 1, firm.rating
710
+ end
711
+
712
+ def test_mass_assignment_protection_against_class_attribute_writers
713
+ [:logger, :configurations, :primary_key_prefix_type, :table_name_prefix, :table_name_suffix, :pluralize_table_names, :colorize_logging,
714
+ :default_timezone, :allow_concurrency, :generate_read_methods, :schema_format, :verification_timeout, :lock_optimistically, :record_timestamps].each do |method|
715
+ assert Task.respond_to?(method)
716
+ assert Task.respond_to?("#{method}=")
717
+ assert Task.new.respond_to?(method)
718
+ assert !Task.new.respond_to?("#{method}=")
719
+ end
720
+ end
721
+
722
+ def test_customized_primary_key_remains_protected
723
+ subscriber = Subscriber.new(:nick => 'webster123', :name => 'nice try')
724
+ assert_nil subscriber.id
725
+
726
+ keyboard = Keyboard.new(:key_number => 9, :name => 'nice try')
727
+ assert_nil keyboard.id
728
+ end
729
+
730
+ def test_customized_primary_key_remains_protected_when_refered_to_as_id
731
+ subscriber = Subscriber.new(:id => 'webster123', :name => 'nice try')
732
+ assert_nil subscriber.id
733
+
734
+ keyboard = Keyboard.new(:id => 9, :name => 'nice try')
735
+ assert_nil keyboard.id
736
+ end
737
+
738
+ def test_mass_assignment_protection_on_defaults
739
+ firm = Firm.new
740
+ firm.attributes = { "id" => 5, "type" => "Client" }
741
+ assert_nil firm.id
742
+ assert_equal "Firm", firm[:type]
743
+ end
744
+
745
+ def test_mass_assignment_accessible
746
+ reply = Reply.new("title" => "hello", "content" => "world", "approved" => true)
747
+ reply.save
748
+
749
+ assert reply.approved?
750
+
751
+ reply.approved = false
752
+ reply.save
753
+
754
+ assert !reply.approved?
755
+ end
756
+
757
+ def test_mass_assignment_protection_inheritance
758
+ assert_nil LoosePerson.accessible_attributes
759
+ assert_equal [ :credit_rating, :administrator ], LoosePerson.protected_attributes
760
+
761
+ assert_nil LooseDescendant.accessible_attributes
762
+ assert_equal [ :credit_rating, :administrator, :phone_number ], LooseDescendant.protected_attributes
763
+
764
+ assert_nil TightPerson.protected_attributes
765
+ assert_equal [ :name, :address ], TightPerson.accessible_attributes
766
+
767
+ assert_nil TightDescendant.protected_attributes
768
+ assert_equal [ :name, :address, :phone_number ], TightDescendant.accessible_attributes
769
+ end
770
+
771
+ def test_multiparameter_attributes_on_date
772
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "24" }
773
+ topic = Topic.find(1)
774
+ topic.attributes = attributes
775
+ # note that extra #to_date call allows test to pass for Oracle, which
776
+ # treats dates/times the same
777
+ assert_date_from_db Date.new(2004, 6, 24), topic.last_read.to_date
778
+ end
779
+
780
+ def test_multiparameter_attributes_on_date_with_empty_date
781
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "" }
782
+ topic = Topic.find(1)
783
+ topic.attributes = attributes
784
+ # note that extra #to_date call allows test to pass for Oracle, which
785
+ # treats dates/times the same
786
+ assert_date_from_db Date.new(2004, 6, 1), topic.last_read.to_date
787
+ end
788
+
789
+ def test_multiparameter_attributes_on_date_with_all_empty
790
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "" }
791
+ topic = Topic.find(1)
792
+ topic.attributes = attributes
793
+ assert_nil topic.last_read
794
+ end
795
+
796
+ def test_multiparameter_attributes_on_time
797
+ attributes = {
798
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
799
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
800
+ }
801
+ topic = Topic.find(1)
802
+ topic.attributes = attributes
803
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
804
+ end
805
+
806
+ def test_multiparameter_attributes_on_time_with_empty_seconds
807
+ attributes = {
808
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
809
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => ""
810
+ }
811
+ topic = Topic.find(1)
812
+ topic.attributes = attributes
813
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
814
+ end
815
+
816
+ def test_multiparameter_mass_assignment_protector
817
+ task = Task.new
818
+ time = Time.mktime(2000, 1, 1, 1)
819
+ task.starting = time
820
+ attributes = { "starting(1i)" => "2004", "starting(2i)" => "6", "starting(3i)" => "24" }
821
+ task.attributes = attributes
822
+ assert_equal time, task.starting
823
+ end
824
+
825
+ def test_multiparameter_assignment_of_aggregation
826
+ customer = Customer.new
827
+ address = Address.new("The Street", "The City", "The Country")
828
+ attributes = { "address(1)" => address.street, "address(2)" => address.city, "address(3)" => address.country }
829
+ customer.attributes = attributes
830
+ assert_equal address, customer.address
831
+ end
832
+
833
+ def test_attributes_on_dummy_time
834
+ # Oracle, SQL Server, and Sybase do not have a TIME datatype.
835
+ return true if current_adapter?(:SQLServerAdapter, :OracleAdapter, :SybaseAdapter)
836
+
837
+ attributes = {
838
+ "bonus_time" => "5:42:00AM"
839
+ }
840
+ topic = Topic.find(1)
841
+ topic.attributes = attributes
842
+ assert_equal Time.local(2000, 1, 1, 5, 42, 0), topic.bonus_time
843
+ end
844
+
845
+ def test_boolean
846
+ b_false = Booleantest.create({ "value" => false })
847
+ false_id = b_false.id
848
+ b_true = Booleantest.create({ "value" => true })
849
+ true_id = b_true.id
850
+
851
+ b_false = Booleantest.find(false_id)
852
+ assert !b_false.value?
853
+ b_true = Booleantest.find(true_id)
854
+ assert b_true.value?
855
+ end
856
+
857
+ def test_boolean_cast_from_string
858
+ b_false = Booleantest.create({ "value" => "0" })
859
+ false_id = b_false.id
860
+ b_true = Booleantest.create({ "value" => "1" })
861
+ true_id = b_true.id
862
+
863
+ b_false = Booleantest.find(false_id)
864
+ assert !b_false.value?
865
+ b_true = Booleantest.find(true_id)
866
+ assert b_true.value?
867
+ end
868
+
869
+ def test_clone
870
+ topic = Topic.find(1)
871
+ cloned_topic = nil
872
+ assert_nothing_raised { cloned_topic = topic.clone }
873
+ assert_equal topic.title, cloned_topic.title
874
+ assert cloned_topic.new_record?
875
+
876
+ # test if the attributes have been cloned
877
+ topic.title = "a"
878
+ cloned_topic.title = "b"
879
+ assert_equal "a", topic.title
880
+ assert_equal "b", cloned_topic.title
881
+
882
+ # test if the attribute values have been cloned
883
+ topic.title = {"a" => "b"}
884
+ cloned_topic = topic.clone
885
+ cloned_topic.title["a"] = "c"
886
+ assert_equal "b", topic.title["a"]
887
+
888
+ cloned_topic.save
889
+ assert !cloned_topic.new_record?
890
+ assert cloned_topic.id != topic.id
891
+ end
892
+
893
+ def test_clone_with_aggregate_of_same_name_as_attribute
894
+ dev = DeveloperWithAggregate.find(1)
895
+ assert_kind_of DeveloperSalary, dev.salary
896
+
897
+ clone = nil
898
+ assert_nothing_raised { clone = dev.clone }
899
+ assert_kind_of DeveloperSalary, clone.salary
900
+ assert_equal dev.salary.amount, clone.salary.amount
901
+ assert clone.new_record?
902
+
903
+ # test if the attributes have been cloned
904
+ original_amount = clone.salary.amount
905
+ dev.salary.amount = 1
906
+ assert_equal original_amount, clone.salary.amount
907
+
908
+ assert clone.save
909
+ assert !clone.new_record?
910
+ assert clone.id != dev.id
911
+ end
912
+
913
+ def test_clone_preserves_subtype
914
+ clone = nil
915
+ assert_nothing_raised { clone = Company.find(3).clone }
916
+ assert_kind_of Client, clone
917
+ end
918
+
919
+ def test_bignum
920
+ company = Company.find(1)
921
+ company.rating = 2147483647
922
+ company.save
923
+ company = Company.find(1)
924
+ assert_equal 2147483647, company.rating
925
+ end
926
+
927
+ # TODO: extend defaults tests to other databases!
928
+ if current_adapter?(:PostgreSQLAdapter)
929
+ def test_default
930
+ default = Default.new
931
+
932
+ # fixed dates / times
933
+ assert_equal Date.new(2004, 1, 1), default.fixed_date
934
+ assert_equal Time.local(2004, 1,1,0,0,0,0), default.fixed_time
935
+
936
+ # char types
937
+ assert_equal 'Y', default.char1
938
+ assert_equal 'a varchar field', default.char2
939
+ assert_equal 'a text field', default.char3
940
+ end
941
+
942
+ class Geometric < ActiveRecord::Base; end
943
+ def test_geometric_content
944
+
945
+ # accepted format notes:
946
+ # ()'s aren't required
947
+ # values can be a mix of float or integer
948
+
949
+ g = Geometric.new(
950
+ :a_point => '(5.0, 6.1)',
951
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
952
+ :a_line_segment => '(2.0, 3), (5.5, 7.0)',
953
+ :a_box => '2.0, 3, 5.5, 7.0',
954
+ :a_path => '[(2.0, 3), (5.5, 7.0), (8.5, 11.0)]', # [ ] is an open path
955
+ :a_polygon => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))',
956
+ :a_circle => '<(5.3, 10.4), 2>'
957
+ )
958
+
959
+ assert g.save
960
+
961
+ # Reload and check that we have all the geometric attributes.
962
+ h = Geometric.find(g.id)
963
+
964
+ assert_equal '(5,6.1)', h.a_point
965
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
966
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
967
+ assert_equal '[(2,3),(5.5,7),(8.5,11)]', h.a_path
968
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
969
+ assert_equal '<(5.3,10.4),2>', h.a_circle
970
+
971
+ # use a geometric function to test for an open path
972
+ objs = Geometric.find_by_sql ["select isopen(a_path) from geometrics where id = ?", g.id]
973
+ assert_equal objs[0].isopen, 't'
974
+
975
+ # test alternate formats when defining the geometric types
976
+
977
+ g = Geometric.new(
978
+ :a_point => '5.0, 6.1',
979
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
980
+ :a_line_segment => '((2.0, 3), (5.5, 7.0))',
981
+ :a_box => '(2.0, 3), (5.5, 7.0)',
982
+ :a_path => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))', # ( ) is a closed path
983
+ :a_polygon => '2.0, 3, 5.5, 7.0, 8.5, 11.0',
984
+ :a_circle => '((5.3, 10.4), 2)'
985
+ )
986
+
987
+ assert g.save
988
+
989
+ # Reload and check that we have all the geometric attributes.
990
+ h = Geometric.find(g.id)
991
+
992
+ assert_equal '(5,6.1)', h.a_point
993
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
994
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
995
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_path
996
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
997
+ assert_equal '<(5.3,10.4),2>', h.a_circle
998
+
999
+ # use a geometric function to test for an closed path
1000
+ objs = Geometric.find_by_sql ["select isclosed(a_path) from geometrics where id = ?", g.id]
1001
+ assert_equal objs[0].isclosed, 't'
1002
+ end
1003
+ end
1004
+
1005
+ class NumericData < ActiveRecord::Base
1006
+ self.table_name = 'numeric_data'
1007
+ end
1008
+
1009
+ def test_numeric_fields
1010
+ m = NumericData.new(
1011
+ :bank_balance => 1586.43,
1012
+ :big_bank_balance => BigDecimal("1000234000567.95"),
1013
+ :world_population => 6000000000,
1014
+ :my_house_population => 3
1015
+ )
1016
+ assert m.save
1017
+
1018
+ m1 = NumericData.find(m.id)
1019
+ assert_not_nil m1
1020
+
1021
+ # As with migration_test.rb, we should make world_population >= 2**62
1022
+ # to cover 64-bit platforms and test it is a Bignum, but the main thing
1023
+ # is that it's an Integer.
1024
+ assert_kind_of Integer, m1.world_population
1025
+ assert_equal 6000000000, m1.world_population
1026
+
1027
+ assert_kind_of Fixnum, m1.my_house_population
1028
+ assert_equal 3, m1.my_house_population
1029
+
1030
+ assert_kind_of BigDecimal, m1.bank_balance
1031
+ assert_equal BigDecimal("1586.43"), m1.bank_balance
1032
+
1033
+ assert_kind_of BigDecimal, m1.big_bank_balance
1034
+ assert_equal BigDecimal("1000234000567.95"), m1.big_bank_balance
1035
+ end
1036
+
1037
+ def test_auto_id
1038
+ auto = AutoId.new
1039
+ auto.save
1040
+ assert (auto.id > 0)
1041
+ end
1042
+
1043
+ def quote_column_name(name)
1044
+ "<#{name}>"
1045
+ end
1046
+
1047
+ def test_quote_keys
1048
+ ar = AutoId.new
1049
+ source = {"foo" => "bar", "baz" => "quux"}
1050
+ actual = ar.send(:quote_columns, self, source)
1051
+ inverted = actual.invert
1052
+ assert_equal("<foo>", inverted["bar"])
1053
+ assert_equal("<baz>", inverted["quux"])
1054
+ end
1055
+
1056
+ def test_sql_injection_via_find
1057
+ assert_raises(ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid) do
1058
+ Topic.find("123456 OR id > 0")
1059
+ end
1060
+ end
1061
+
1062
+ def test_column_name_properly_quoted
1063
+ col_record = ColumnName.new
1064
+ col_record.references = 40
1065
+ assert col_record.save
1066
+ col_record.references = 41
1067
+ assert col_record.save
1068
+ assert_not_nil c2 = ColumnName.find(col_record.id)
1069
+ assert_equal(41, c2.references)
1070
+ end
1071
+
1072
+ def test_quoting_arrays
1073
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", topics(:first).replies.collect(&:id) ])
1074
+ assert_equal topics(:first).replies.size, replies.size
1075
+
1076
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", [] ])
1077
+ assert_equal 0, replies.size
1078
+ end
1079
+
1080
+ MyObject = Struct.new :attribute1, :attribute2
1081
+
1082
+ def test_serialized_attribute
1083
+ myobj = MyObject.new('value1', 'value2')
1084
+ topic = Topic.create("content" => myobj)
1085
+ Topic.serialize("content", MyObject)
1086
+ assert_equal(myobj, topic.content)
1087
+ end
1088
+
1089
+ def test_serialized_attribute_with_class_constraint
1090
+ myobj = MyObject.new('value1', 'value2')
1091
+ topic = Topic.create("content" => myobj)
1092
+ Topic.serialize(:content, Hash)
1093
+
1094
+ assert_raise(ActiveRecord::SerializationTypeMismatch) { Topic.find(topic.id).content }
1095
+
1096
+ settings = { "color" => "blue" }
1097
+ Topic.find(topic.id).update_attribute("content", settings)
1098
+ assert_equal(settings, Topic.find(topic.id).content)
1099
+ Topic.serialize(:content)
1100
+ end
1101
+
1102
+ def test_quote
1103
+ author_name = "\\ \001 ' \n \\n \""
1104
+ topic = Topic.create('author_name' => author_name)
1105
+ assert_equal author_name, Topic.find(topic.id).author_name
1106
+ end
1107
+
1108
+ def test_quote_chars
1109
+ str = 'The Narrator'
1110
+ topic = Topic.create(:author_name => str)
1111
+ assert_equal str, topic.author_name
1112
+
1113
+ assert_kind_of ActiveSupport::Multibyte::Chars, str.chars
1114
+ topic = Topic.find_by_author_name(str.chars)
1115
+
1116
+ assert_kind_of Topic, topic
1117
+ assert_equal str, topic.author_name, "The right topic should have been found by name even with name passed as Chars"
1118
+ end
1119
+
1120
+ def test_class_level_destroy
1121
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1122
+ Topic.find(1).replies << should_be_destroyed_reply
1123
+
1124
+ Topic.destroy(1)
1125
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1126
+ assert_raise(ActiveRecord::RecordNotFound) { Reply.find(should_be_destroyed_reply.id) }
1127
+ end
1128
+
1129
+ def test_class_level_delete
1130
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1131
+ Topic.find(1).replies << should_be_destroyed_reply
1132
+
1133
+ Topic.delete(1)
1134
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1135
+ assert_nothing_raised { Reply.find(should_be_destroyed_reply.id) }
1136
+ end
1137
+
1138
+ def test_increment_attribute
1139
+ assert_equal 1, topics(:first).replies_count
1140
+ topics(:first).increment! :replies_count
1141
+ assert_equal 2, topics(:first, :reload).replies_count
1142
+
1143
+ topics(:first).increment(:replies_count).increment!(:replies_count)
1144
+ assert_equal 4, topics(:first, :reload).replies_count
1145
+ end
1146
+
1147
+ def test_increment_nil_attribute
1148
+ assert_nil topics(:first).parent_id
1149
+ topics(:first).increment! :parent_id
1150
+ assert_equal 1, topics(:first).parent_id
1151
+ end
1152
+
1153
+ def test_decrement_attribute
1154
+ topics(:first).increment(:replies_count).increment!(:replies_count)
1155
+ assert_equal 3, topics(:first).replies_count
1156
+
1157
+ topics(:first).decrement!(:replies_count)
1158
+ assert_equal 2, topics(:first, :reload).replies_count
1159
+
1160
+ topics(:first).decrement(:replies_count).decrement!(:replies_count)
1161
+ assert_equal 0, topics(:first, :reload).replies_count
1162
+ end
1163
+
1164
+ def test_toggle_attribute
1165
+ assert !topics(:first).approved?
1166
+ topics(:first).toggle!(:approved)
1167
+ assert topics(:first).approved?
1168
+ topic = topics(:first)
1169
+ topic.toggle(:approved)
1170
+ assert !topic.approved?
1171
+ topic.reload
1172
+ assert topic.approved?
1173
+ end
1174
+
1175
+ def test_reload
1176
+ t1 = Topic.find(1)
1177
+ t2 = Topic.find(1)
1178
+ t1.title = "something else"
1179
+ t1.save
1180
+ t2.reload
1181
+ assert_equal t1.title, t2.title
1182
+ end
1183
+
1184
+ def test_define_attr_method_with_value
1185
+ k = Class.new( ActiveRecord::Base )
1186
+ k.send(:define_attr_method, :table_name, "foo")
1187
+ assert_equal "foo", k.table_name
1188
+ end
1189
+
1190
+ def test_define_attr_method_with_block
1191
+ k = Class.new( ActiveRecord::Base )
1192
+ k.send(:define_attr_method, :primary_key) { "sys_" + original_primary_key }
1193
+ assert_equal "sys_id", k.primary_key
1194
+ end
1195
+
1196
+ def test_set_table_name_with_value
1197
+ k = Class.new( ActiveRecord::Base )
1198
+ k.table_name = "foo"
1199
+ assert_equal "foo", k.table_name
1200
+ k.set_table_name "bar"
1201
+ assert_equal "bar", k.table_name
1202
+ end
1203
+
1204
+ def test_set_table_name_with_block
1205
+ k = Class.new( ActiveRecord::Base )
1206
+ k.set_table_name { "ks" }
1207
+ assert_equal "ks", k.table_name
1208
+ end
1209
+
1210
+ def test_set_primary_key_with_value
1211
+ k = Class.new( ActiveRecord::Base )
1212
+ k.primary_key = "foo"
1213
+ assert_equal "foo", k.primary_key
1214
+ k.set_primary_key "bar"
1215
+ assert_equal "bar", k.primary_key
1216
+ end
1217
+
1218
+ def test_set_primary_key_with_block
1219
+ k = Class.new( ActiveRecord::Base )
1220
+ k.set_primary_key { "sys_" + original_primary_key }
1221
+ assert_equal "sys_id", k.primary_key
1222
+ end
1223
+
1224
+ def test_set_inheritance_column_with_value
1225
+ k = Class.new( ActiveRecord::Base )
1226
+ k.inheritance_column = "foo"
1227
+ assert_equal "foo", k.inheritance_column
1228
+ k.set_inheritance_column "bar"
1229
+ assert_equal "bar", k.inheritance_column
1230
+ end
1231
+
1232
+ def test_set_inheritance_column_with_block
1233
+ k = Class.new( ActiveRecord::Base )
1234
+ k.set_inheritance_column { original_inheritance_column + "_id" }
1235
+ assert_equal "type_id", k.inheritance_column
1236
+ end
1237
+
1238
+ def test_count_with_join
1239
+ res = Post.count_by_sql "SELECT COUNT(*) FROM posts LEFT JOIN comments ON posts.id=comments.post_id WHERE posts.#{QUOTED_TYPE} = 'Post'"
1240
+ res2 = nil
1241
+ assert_deprecated 'count' do
1242
+ res2 = Post.count("posts.#{QUOTED_TYPE} = 'Post'",
1243
+ "LEFT JOIN comments ON posts.id=comments.post_id")
1244
+ end
1245
+ assert_equal res, res2
1246
+
1247
+ res3 = nil
1248
+ assert_nothing_raised do
1249
+ res3 = Post.count(:conditions => "posts.#{QUOTED_TYPE} = 'Post'",
1250
+ :joins => "LEFT JOIN comments ON posts.id=comments.post_id")
1251
+ end
1252
+ assert_equal res, res3
1253
+
1254
+ res4 = Post.count_by_sql "SELECT COUNT(p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1255
+ res5 = nil
1256
+ assert_nothing_raised do
1257
+ res5 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1258
+ :joins => "p, comments co",
1259
+ :select => "p.id")
1260
+ end
1261
+
1262
+ assert_equal res4, res5
1263
+
1264
+ res6 = Post.count_by_sql "SELECT COUNT(DISTINCT p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1265
+ res7 = nil
1266
+ assert_nothing_raised do
1267
+ res7 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1268
+ :joins => "p, comments co",
1269
+ :select => "p.id",
1270
+ :distinct => true)
1271
+ end
1272
+ assert_equal res6, res7
1273
+ end
1274
+
1275
+ def test_clear_association_cache_stored
1276
+ firm = Firm.find(1)
1277
+ assert_kind_of Firm, firm
1278
+
1279
+ firm.clear_association_cache
1280
+ assert_equal Firm.find(1).clients.collect{ |x| x.name }.sort, firm.clients.collect{ |x| x.name }.sort
1281
+ end
1282
+
1283
+ def test_clear_association_cache_new_record
1284
+ firm = Firm.new
1285
+ client_stored = Client.find(3)
1286
+ client_new = Client.new
1287
+ client_new.name = "The Joneses"
1288
+ clients = [ client_stored, client_new ]
1289
+
1290
+ firm.clients << clients
1291
+
1292
+ firm.clear_association_cache
1293
+
1294
+ assert_equal firm.clients.collect{ |x| x.name }.sort, clients.collect{ |x| x.name }.sort
1295
+ end
1296
+
1297
+ def test_interpolate_sql
1298
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo@bar') }
1299
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar) baz') }
1300
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar} baz') }
1301
+ end
1302
+
1303
+ def test_scoped_find_conditions
1304
+ scoped_developers = Developer.with_scope(:find => { :conditions => 'salary > 90000' }) do
1305
+ Developer.find(:all, :conditions => 'id < 5')
1306
+ end
1307
+ assert !scoped_developers.include?(developers(:david)) # David's salary is less than 90,000
1308
+ assert_equal 3, scoped_developers.size
1309
+ end
1310
+
1311
+ def test_scoped_find_limit_offset
1312
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :offset => 2 }) do
1313
+ Developer.find(:all, :order => 'id')
1314
+ end
1315
+ assert !scoped_developers.include?(developers(:david))
1316
+ assert !scoped_developers.include?(developers(:jamis))
1317
+ assert_equal 3, scoped_developers.size
1318
+
1319
+ # Test without scoped find conditions to ensure we get the whole thing
1320
+ developers = Developer.find(:all, :order => 'id')
1321
+ assert_equal Developer.count, developers.size
1322
+ end
1323
+
1324
+ def test_scoped_find_order
1325
+ # Test order in scope
1326
+ scoped_developers = Developer.with_scope(:find => { :limit => 1, :order => 'salary DESC' }) do
1327
+ Developer.find(:all)
1328
+ end
1329
+ assert_equal 'Jamis', scoped_developers.first.name
1330
+ assert scoped_developers.include?(developers(:jamis))
1331
+ # Test scope without order and order in find
1332
+ scoped_developers = Developer.with_scope(:find => { :limit => 1 }) do
1333
+ Developer.find(:all, :order => 'salary DESC')
1334
+ end
1335
+ # Test scope order + find order, find has priority
1336
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :order => 'id DESC' }) do
1337
+ Developer.find(:all, :order => 'salary ASC')
1338
+ end
1339
+ assert scoped_developers.include?(developers(:poor_jamis))
1340
+ assert scoped_developers.include?(developers(:david))
1341
+ assert scoped_developers.include?(developers(:dev_10))
1342
+ # Test without scoped find conditions to ensure we get the right thing
1343
+ developers = Developer.find(:all, :order => 'id', :limit => 1)
1344
+ assert scoped_developers.include?(developers(:david))
1345
+ end
1346
+
1347
+ def test_scoped_find_limit_offset_including_has_many_association
1348
+ topics = Topic.with_scope(:find => {:limit => 1, :offset => 1, :include => :replies}) do
1349
+ Topic.find(:all, :order => "topics.id")
1350
+ end
1351
+ assert_equal 1, topics.size
1352
+ assert_equal 2, topics.first.id
1353
+ end
1354
+
1355
+ def test_scoped_find_order_including_has_many_association
1356
+ developers = Developer.with_scope(:find => { :order => 'developers.salary DESC', :include => :projects }) do
1357
+ Developer.find(:all)
1358
+ end
1359
+ assert developers.size >= 2
1360
+ for i in 1...developers.size
1361
+ assert developers[i-1].salary >= developers[i].salary
1362
+ end
1363
+ end
1364
+
1365
+ def test_abstract_class
1366
+ assert !ActiveRecord::Base.abstract_class?
1367
+ assert LoosePerson.abstract_class?
1368
+ assert !LooseDescendant.abstract_class?
1369
+ end
1370
+
1371
+ def test_base_class
1372
+ assert_equal LoosePerson, LoosePerson.base_class
1373
+ assert_equal LooseDescendant, LooseDescendant.base_class
1374
+ assert_equal TightPerson, TightPerson.base_class
1375
+ assert_equal TightPerson, TightDescendant.base_class
1376
+
1377
+ assert_equal Post, Post.base_class
1378
+ assert_equal Post, SpecialPost.base_class
1379
+ assert_equal Post, StiPost.base_class
1380
+ assert_equal SubStiPost, SubStiPost.base_class
1381
+ end
1382
+
1383
+ def test_descends_from_active_record
1384
+ # Tries to call Object.abstract_class?
1385
+ assert_raise(NoMethodError) do
1386
+ ActiveRecord::Base.descends_from_active_record?
1387
+ end
1388
+
1389
+ # Abstract subclass of AR::Base.
1390
+ assert LoosePerson.descends_from_active_record?
1391
+
1392
+ # Concrete subclass of an abstract class.
1393
+ assert LooseDescendant.descends_from_active_record?
1394
+
1395
+ # Concrete subclass of AR::Base.
1396
+ assert TightPerson.descends_from_active_record?
1397
+
1398
+ # Concrete subclass of a concrete class but has no type column.
1399
+ assert TightDescendant.descends_from_active_record?
1400
+
1401
+ # Concrete subclass of AR::Base.
1402
+ assert Post.descends_from_active_record?
1403
+
1404
+ # Abstract subclass of a concrete class which has a type column.
1405
+ # This is pathological, as you'll never have Sub < Abstract < Concrete.
1406
+ assert !StiPost.descends_from_active_record?
1407
+
1408
+ # Concrete subclasses an abstract class which has a type column.
1409
+ assert !SubStiPost.descends_from_active_record?
1410
+ end
1411
+
1412
+ def test_find_on_abstract_base_class_doesnt_use_type_condition
1413
+ old_class = LooseDescendant
1414
+ Object.send :remove_const, :LooseDescendant
1415
+
1416
+ descendant = old_class.create!
1417
+ assert_not_nil LoosePerson.find(descendant.id), "Should have found instance of LooseDescendant when finding abstract LoosePerson: #{descendant.inspect}"
1418
+ ensure
1419
+ unless Object.const_defined?(:LooseDescendant)
1420
+ Object.const_set :LooseDescendant, old_class
1421
+ end
1422
+ end
1423
+
1424
+ def test_assert_queries
1425
+ query = lambda { ActiveRecord::Base.connection.execute 'select count(*) from developers' }
1426
+ assert_queries(2) { 2.times { query.call } }
1427
+ assert_queries 1, &query
1428
+ assert_no_queries { assert true }
1429
+ end
1430
+
1431
+ def test_to_xml
1432
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true)
1433
+ bonus_time_in_current_timezone = topics(:first).bonus_time.xmlschema
1434
+ written_on_in_current_timezone = topics(:first).written_on.xmlschema
1435
+ last_read_in_current_timezone = topics(:first).last_read.xmlschema
1436
+ assert_equal "<topic>", xml.first(7)
1437
+ assert xml.include?(%(<title>The First Topic</title>))
1438
+ assert xml.include?(%(<author-name>David</author-name>))
1439
+ assert xml.include?(%(<id type="integer">1</id>))
1440
+ assert xml.include?(%(<replies-count type="integer">1</replies-count>))
1441
+ assert xml.include?(%(<written-on type="datetime">#{written_on_in_current_timezone}</written-on>))
1442
+ assert xml.include?(%(<content>Have a nice day</content>))
1443
+ assert xml.include?(%(<author-email-address>david@loudthinking.com</author-email-address>))
1444
+ assert xml.match(%(<parent-id type="integer"></parent-id>))
1445
+ if current_adapter?(:SybaseAdapter, :SQLServerAdapter, :OracleAdapter)
1446
+ assert xml.include?(%(<last-read type="datetime">#{last_read_in_current_timezone}</last-read>))
1447
+ else
1448
+ assert xml.include?(%(<last-read type="date">2004-04-15</last-read>))
1449
+ end
1450
+ # Oracle and DB2 don't have true boolean or time-only fields
1451
+ unless current_adapter?(:OracleAdapter, :DB2Adapter)
1452
+ assert xml.include?(%(<approved type="boolean">false</approved>)), "Approved should be a boolean"
1453
+ assert xml.include?(%(<bonus-time type="datetime">#{bonus_time_in_current_timezone}</bonus-time>))
1454
+ end
1455
+ end
1456
+
1457
+ def test_to_xml_skipping_attributes
1458
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :replies_count])
1459
+ assert_equal "<topic>", xml.first(7)
1460
+ assert !xml.include?(%(<title>The First Topic</title>))
1461
+ assert xml.include?(%(<author-name>David</author-name>))
1462
+
1463
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :author_name, :replies_count])
1464
+ assert !xml.include?(%(<title>The First Topic</title>))
1465
+ assert !xml.include?(%(<author-name>David</author-name>))
1466
+ end
1467
+
1468
+ def test_to_xml_including_has_many_association
1469
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :include => :replies, :except => :replies_count)
1470
+ assert_equal "<topic>", xml.first(7)
1471
+ assert xml.include?(%(<replies><reply>))
1472
+ assert xml.include?(%(<title>The Second Topic's of the day</title>))
1473
+ end
1474
+
1475
+ def test_array_to_xml_including_has_many_association
1476
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :include => :replies)
1477
+ assert xml.include?(%(<replies><reply>))
1478
+ end
1479
+
1480
+ def test_array_to_xml_including_methods
1481
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :methods => [ :topic_id ])
1482
+ assert xml.include?(%(<topic-id type="integer">#{topics(:first).topic_id}</topic-id>)), xml
1483
+ assert xml.include?(%(<topic-id type="integer">#{topics(:second).topic_id}</topic-id>)), xml
1484
+ end
1485
+
1486
+ def test_array_to_xml_including_has_one_association
1487
+ xml = [ companies(:first_firm), companies(:rails_core) ].to_xml(:indent => 0, :skip_instruct => true, :include => :account)
1488
+ assert xml.include?(companies(:first_firm).account.to_xml(:indent => 0, :skip_instruct => true))
1489
+ assert xml.include?(companies(:rails_core).account.to_xml(:indent => 0, :skip_instruct => true))
1490
+ end
1491
+
1492
+ def test_array_to_xml_including_belongs_to_association
1493
+ xml = [ companies(:first_client), companies(:second_client), companies(:another_client) ].to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1494
+ assert xml.include?(companies(:first_client).to_xml(:indent => 0, :skip_instruct => true))
1495
+ assert xml.include?(companies(:second_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1496
+ assert xml.include?(companies(:another_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1497
+ end
1498
+
1499
+ def test_to_xml_including_belongs_to_association
1500
+ xml = companies(:first_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1501
+ assert !xml.include?("<firm>")
1502
+
1503
+ xml = companies(:second_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1504
+ assert xml.include?("<firm>")
1505
+ end
1506
+
1507
+ def test_to_xml_including_multiple_associations
1508
+ xml = companies(:first_firm).to_xml(:indent => 0, :skip_instruct => true, :include => [ :clients, :account ])
1509
+ assert_equal "<firm>", xml.first(6)
1510
+ assert xml.include?(%(<account>))
1511
+ assert xml.include?(%(<clients><client>))
1512
+ end
1513
+
1514
+ def test_to_xml_including_multiple_associations_with_options
1515
+ xml = companies(:first_firm).to_xml(
1516
+ :indent => 0, :skip_instruct => true,
1517
+ :include => { :clients => { :only => :name } }
1518
+ )
1519
+
1520
+ assert_equal "<firm>", xml.first(6)
1521
+ assert xml.include?(%(<client><name>Summit</name></client>))
1522
+ assert xml.include?(%(<clients><client>))
1523
+ end
1524
+
1525
+ def test_to_xml_including_methods
1526
+ xml = Company.new.to_xml(:methods => :arbitrary_method, :skip_instruct => true)
1527
+ assert_equal "<company>", xml.first(9)
1528
+ assert xml.include?(%(<arbitrary-method>I am Jack's profound disappointment</arbitrary-method>))
1529
+ end
1530
+
1531
+ def test_except_attributes
1532
+ assert_equal(
1533
+ %w( author_name type id approved replies_count bonus_time written_on content author_email_address parent_id last_read),
1534
+ topics(:first).attributes(:except => :title).keys
1535
+ )
1536
+
1537
+ assert_equal(
1538
+ %w( replies_count bonus_time written_on content author_email_address parent_id last_read),
1539
+ topics(:first).attributes(:except => [ :title, :id, :type, :approved, :author_name ]).keys
1540
+ )
1541
+ end
1542
+
1543
+ def test_include_attributes
1544
+ assert_equal(%w( title ), topics(:first).attributes(:only => :title).keys)
1545
+ assert_equal(%w( title author_name type id approved ), topics(:first).attributes(:only => [ :title, :id, :type, :approved, :author_name ]).keys)
1546
+ end
1547
+
1548
+ def test_type_name_with_module_should_handle_beginning
1549
+ assert_equal 'ActiveRecord::Person', ActiveRecord::Base.send(:type_name_with_module, 'Person')
1550
+ assert_equal '::Person', ActiveRecord::Base.send(:type_name_with_module, '::Person')
1551
+ end
1552
+
1553
+ def test_to_param_should_return_string
1554
+ assert_kind_of String, Client.find(:first).to_param
1555
+ end
1556
+
1557
+ # FIXME: this test ought to run, but it needs to run sandboxed so that it
1558
+ # doesn't b0rk the current test environment by undefing everything.
1559
+ #
1560
+ #def test_dev_mode_memory_leak
1561
+ # counts = []
1562
+ # 2.times do
1563
+ # require_dependency 'fixtures/company'
1564
+ # Firm.find(:first)
1565
+ # Dependencies.clear
1566
+ # ActiveRecord::Base.reset_subclasses
1567
+ # Dependencies.remove_subclasses_for(ActiveRecord::Base)
1568
+ #
1569
+ # GC.start
1570
+ #
1571
+ # count = 0
1572
+ # ObjectSpace.each_object(Proc) { count += 1 }
1573
+ # counts << count
1574
+ # end
1575
+ # assert counts.last <= counts.first,
1576
+ # "expected last count (#{counts.last}) to be <= first count (#{counts.first})"
1577
+ #end
1578
+
1579
+ private
1580
+ def assert_readers(model, exceptions)
1581
+ expected_readers = Set.new(model.column_names - ['id'])
1582
+ expected_readers += expected_readers.map { |col| "#{col}?" }
1583
+ expected_readers -= exceptions
1584
+ assert_equal expected_readers, model.read_methods
1585
+ end
1586
+ end