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,72 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../../lib/action_view/helpers/benchmark_helper'
3
+
4
+ class BenchmarkHelperTest < Test::Unit::TestCase
5
+ include ActionView::Helpers::BenchmarkHelper
6
+
7
+ class MockLogger
8
+ attr_reader :logged
9
+
10
+ def initialize
11
+ @logged = []
12
+ end
13
+
14
+ def method_missing(method, *args)
15
+ @logged << [method, args]
16
+ end
17
+ end
18
+
19
+ def setup
20
+ @logger = MockLogger.new
21
+ end
22
+
23
+ def test_without_logger_or_block
24
+ @logger = nil
25
+ assert_nothing_raised { benchmark }
26
+ end
27
+
28
+ def test_without_block
29
+ assert_raise(LocalJumpError) { benchmark }
30
+ assert @logger.logged.empty?
31
+ end
32
+
33
+ def test_without_logger
34
+ @logger = nil
35
+ i_was_run = false
36
+ benchmark { i_was_run = true }
37
+ assert !i_was_run
38
+ end
39
+
40
+ def test_defaults
41
+ i_was_run = false
42
+ benchmark { i_was_run = true }
43
+ assert i_was_run
44
+ assert 1, @logger.logged.size
45
+ assert_last_logged
46
+ end
47
+
48
+ def test_with_message
49
+ i_was_run = false
50
+ benchmark('test_run') { i_was_run = true }
51
+ assert i_was_run
52
+ assert 1, @logger.logged.size
53
+ assert_last_logged 'test_run'
54
+ end
55
+
56
+ def test_with_message_and_level
57
+ i_was_run = false
58
+ benchmark('debug_run', :debug) { i_was_run = true }
59
+ assert i_was_run
60
+ assert 1, @logger.logged.size
61
+ assert_last_logged 'debug_run', :debug
62
+ end
63
+
64
+ private
65
+ def assert_last_logged(message = 'Benchmarking', level = :info)
66
+ last = @logger.logged.last
67
+ assert 2, last.size
68
+ assert_equal level, last.first
69
+ assert 1, last[1].size
70
+ assert last[1][0] =~ /^#{message} \(.*\)$/
71
+ end
72
+ end
@@ -0,0 +1,135 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../../lib/action_view/helpers/date_helper'
3
+ require File.dirname(__FILE__) + '/../../lib/action_view/compiled_templates'
4
+ require File.dirname(__FILE__) + "/../abstract_unit"
5
+
6
+ class CompiledTemplateTests < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @ct = ActionView::CompiledTemplates.new
10
+ @v = Class.new
11
+ @v.send :include, @ct
12
+ @a = './test_compile_template_a.rhtml'
13
+ @b = './test_compile_template_b.rhtml'
14
+ @s = './test_compile_template_link.rhtml'
15
+ end
16
+ def teardown
17
+ [@a, @b, @s].each do |f|
18
+ `rm #{f}` if File.exist?(f) || File.symlink?(f)
19
+ end
20
+ end
21
+ attr_reader :ct, :v
22
+
23
+ def test_name_allocation
24
+ hi_world = ct.method_names['hi world']
25
+ hi_sexy = ct.method_names['hi sexy']
26
+ wish_upon_a_star = ct.method_names['I love seeing decent error messages']
27
+
28
+ assert_equal hi_world, ct.method_names['hi world']
29
+ assert_equal hi_sexy, ct.method_names['hi sexy']
30
+ assert_equal wish_upon_a_star, ct.method_names['I love seeing decent error messages']
31
+ assert_equal 3, [hi_world, hi_sexy, wish_upon_a_star].uniq.length
32
+ end
33
+
34
+ def test_wrap_source
35
+ assert_equal(
36
+ "def aliased_assignment(value)\nself.value = value\nend",
37
+ @ct.wrap_source(:aliased_assignment, [:value], 'self.value = value')
38
+ )
39
+
40
+ assert_equal(
41
+ "def simple()\nnil\nend",
42
+ @ct.wrap_source(:simple, [], 'nil')
43
+ )
44
+ end
45
+
46
+ def test_compile_source_single_method
47
+ selector = ct.compile_source('doubling method', [:a], 'a + a')
48
+ assert_equal 2, @v.new.send(selector, 1)
49
+ assert_equal 4, @v.new.send(selector, 2)
50
+ assert_equal -4, @v.new.send(selector, -2)
51
+ assert_equal 0, @v.new.send(selector, 0)
52
+ selector
53
+ end
54
+
55
+ def test_compile_source_two_method
56
+ sel1 = test_compile_source_single_method # compile the method in the other test
57
+ sel2 = ct.compile_source('doubling method', [:a, :b], 'a + b + a + b')
58
+ assert_not_equal sel1, sel2
59
+
60
+ assert_equal 2, @v.new.send(sel1, 1)
61
+ assert_equal 4, @v.new.send(sel1, 2)
62
+
63
+ assert_equal 6, @v.new.send(sel2, 1, 2)
64
+ assert_equal 32, @v.new.send(sel2, 15, 1)
65
+ end
66
+
67
+ def test_mtime
68
+ t1 = Time.now
69
+ test_compile_source_single_method
70
+ assert (t1..Time.now).include?(ct.mtime('doubling method', [:a]))
71
+ end
72
+
73
+ def test_compile_time
74
+ `echo '#{@a}' > #{@a}; echo '#{@b}' > #{@b}; ln -s #{@a} #{@s}`
75
+
76
+ v = ActionView::Base.new
77
+ v.base_path = '.'
78
+ v.cache_template_loading = false;
79
+
80
+ sleep 1
81
+ t = Time.now
82
+ v.compile_and_render_template(:rhtml, '', @a)
83
+ v.compile_and_render_template(:rhtml, '', @b)
84
+ v.compile_and_render_template(:rhtml, '', @s)
85
+ a_n = v.method_names[@a]
86
+ b_n = v.method_names[@b]
87
+ s_n = v.method_names[@s]
88
+ # all of the files have changed since last compile
89
+ assert v.compile_time[a_n] > t
90
+ assert v.compile_time[b_n] > t
91
+ assert v.compile_time[s_n] > t
92
+
93
+ sleep 1
94
+ t = Time.now
95
+ v.compile_and_render_template(:rhtml, '', @a)
96
+ v.compile_and_render_template(:rhtml, '', @b)
97
+ v.compile_and_render_template(:rhtml, '', @s)
98
+ # none of the files have changed since last compile
99
+ assert v.compile_time[a_n] < t
100
+ assert v.compile_time[b_n] < t
101
+ assert v.compile_time[s_n] < t
102
+
103
+ `rm #{@s}; ln -s #{@b} #{@s}`
104
+ v.compile_and_render_template(:rhtml, '', @a)
105
+ v.compile_and_render_template(:rhtml, '', @b)
106
+ v.compile_and_render_template(:rhtml, '', @s)
107
+ # the symlink has changed since last compile
108
+ assert v.compile_time[a_n] < t
109
+ assert v.compile_time[b_n] < t
110
+ assert v.compile_time[s_n] > t
111
+
112
+ sleep 1
113
+ `touch #{@b}`
114
+ t = Time.now
115
+ v.compile_and_render_template(:rhtml, '', @a)
116
+ v.compile_and_render_template(:rhtml, '', @b)
117
+ v.compile_and_render_template(:rhtml, '', @s)
118
+ # the file at the end of the symlink has changed since last compile
119
+ # both the symlink and the file at the end of it should be recompiled
120
+ assert v.compile_time[a_n] < t
121
+ assert v.compile_time[b_n] > t
122
+ assert v.compile_time[s_n] > t
123
+ end
124
+ end
125
+
126
+ module ActionView
127
+ class Base
128
+ def compile_time
129
+ @@compile_time
130
+ end
131
+ def method_names
132
+ @@method_names
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,1322 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + "/../abstract_unit"
3
+
4
+ class DateHelperTest < Test::Unit::TestCase
5
+ include ActionView::Helpers::DateHelper
6
+ include ActionView::Helpers::FormHelper
7
+
8
+ silence_warnings do
9
+ Post = Struct.new("Post", :id, :written_on, :updated_at)
10
+ Post.class_eval do
11
+ def id
12
+ 123
13
+ end
14
+ def id_before_type_cast
15
+ 123
16
+ end
17
+ end
18
+ end
19
+
20
+ def test_distance_in_words
21
+ from = Time.mktime(2004, 3, 6, 21, 45, 0)
22
+
23
+ # 0..1 with include_seconds
24
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 0.seconds, true)
25
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 4.seconds, true)
26
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 5.seconds, true)
27
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 9.seconds, true)
28
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 10.seconds, true)
29
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 19.seconds, true)
30
+ assert_equal "half a minute", distance_of_time_in_words(from, from + 20.seconds, true)
31
+ assert_equal "half a minute", distance_of_time_in_words(from, from + 39.seconds, true)
32
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 40.seconds, true)
33
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 59.seconds, true)
34
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 60.seconds, true)
35
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 89.seconds, true)
36
+
37
+ # First case 0..1
38
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 0.seconds)
39
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 29.seconds)
40
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 30.seconds)
41
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 1.minutes + 29.seconds)
42
+
43
+ # 2..44
44
+ assert_equal "2 minutes", distance_of_time_in_words(from, from + 1.minutes + 30.seconds)
45
+ assert_equal "44 minutes", distance_of_time_in_words(from, from + 44.minutes + 29.seconds)
46
+
47
+ # 45..89
48
+ assert_equal "about 1 hour", distance_of_time_in_words(from, from + 44.minutes + 30.seconds)
49
+ assert_equal "about 1 hour", distance_of_time_in_words(from, from + 89.minutes + 29.seconds)
50
+
51
+ # 90..1439
52
+ assert_equal "about 2 hours", distance_of_time_in_words(from, from + 89.minutes + 30.seconds)
53
+ assert_equal "about 24 hours", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 29.seconds)
54
+
55
+ # 1440..2879
56
+ assert_equal "1 day", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 30.seconds)
57
+ assert_equal "1 day", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 29.seconds)
58
+
59
+ # 2880..43199
60
+ assert_equal "2 days", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 30.seconds)
61
+ assert_equal "29 days", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 29.seconds)
62
+
63
+ # 43200..86399
64
+ assert_equal "about 1 month", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 30.seconds)
65
+ assert_equal "about 1 month", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 29.seconds)
66
+
67
+ # 86400..525959
68
+ assert_equal "2 months", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 30.seconds)
69
+ assert_equal "12 months", distance_of_time_in_words(from, from + 1.years - 31.seconds)
70
+
71
+ # 525960..1051919
72
+ assert_equal "about 1 year", distance_of_time_in_words(from, from + 1.years - 30.seconds)
73
+ assert_equal "about 1 year", distance_of_time_in_words(from, from + 2.years - 31.seconds)
74
+
75
+ # > 1051920
76
+ assert_equal "over 2 years", distance_of_time_in_words(from, from + 2.years - 30.seconds)
77
+ assert_equal "over 10 years", distance_of_time_in_words(from, from + 10.years)
78
+
79
+ # test to < from
80
+ assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, from)
81
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from + 19.seconds, from, true)
82
+
83
+ # test with integers
84
+ assert_equal "less than a minute", distance_of_time_in_words(59)
85
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60)
86
+ assert_equal "less than a minute", distance_of_time_in_words(0, 59)
87
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60, 0)
88
+ end
89
+
90
+ def test_distance_in_words_with_dates
91
+ start_date = Date.new 1975, 1, 31
92
+ end_date = Date.new 1977, 1, 31
93
+ assert_equal("over 2 years", distance_of_time_in_words(start_date, end_date))
94
+ end
95
+
96
+ def test_time_ago_in_words
97
+ t = Time.now - 1.years
98
+ assert_equal "about 1 year", time_ago_in_words(t)
99
+ end
100
+
101
+ def test_select_day
102
+ expected = %(<select id="date_day" name="date[day]">\n)
103
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
104
+ expected << "</select>\n"
105
+
106
+ assert_equal expected, select_day(Time.mktime(2003, 8, 16))
107
+ assert_equal expected, select_day(16)
108
+ end
109
+
110
+ def test_select_day_with_blank
111
+ expected = %(<select id="date_day" name="date[day]">\n)
112
+ expected << %(<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
113
+ expected << "</select>\n"
114
+
115
+ assert_equal expected, select_day(Time.mktime(2003, 8, 16), :include_blank => true)
116
+ assert_equal expected, select_day(16, :include_blank => true)
117
+ end
118
+
119
+ def test_select_day_nil_with_blank
120
+ expected = %(<select id="date_day" name="date[day]">\n)
121
+ expected << %(<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
122
+ expected << "</select>\n"
123
+
124
+ assert_equal expected, select_day(nil, :include_blank => true)
125
+ end
126
+
127
+ def test_select_month
128
+ expected = %(<select id="date_month" name="date[month]">\n)
129
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
130
+ expected << "</select>\n"
131
+
132
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16))
133
+ assert_equal expected, select_month(8)
134
+ end
135
+
136
+ def test_select_month_with_disabled
137
+ expected = %(<select id="date_month" name="date[month]" disabled="disabled">\n)
138
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
139
+ expected << "</select>\n"
140
+
141
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :disabled => true)
142
+ assert_equal expected, select_month(8, :disabled => true)
143
+ end
144
+
145
+ def test_select_month_with_field_name_override
146
+ expected = %(<select id="date_mois" name="date[mois]">\n)
147
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
148
+ expected << "</select>\n"
149
+
150
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :field_name => 'mois')
151
+ assert_equal expected, select_month(8, :field_name => 'mois')
152
+ end
153
+
154
+ def test_select_month_with_blank
155
+ expected = %(<select id="date_month" name="date[month]">\n)
156
+ expected << %(<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
157
+ expected << "</select>\n"
158
+
159
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :include_blank => true)
160
+ assert_equal expected, select_month(8, :include_blank => true)
161
+ end
162
+
163
+ def test_select_month_nil_with_blank
164
+ expected = %(<select id="date_month" name="date[month]">\n)
165
+ expected << %(<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
166
+ expected << "</select>\n"
167
+
168
+ assert_equal expected, select_month(nil, :include_blank => true)
169
+ end
170
+
171
+ def test_select_month_with_numbers
172
+ expected = %(<select id="date_month" name="date[month]">\n)
173
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8" selected="selected">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n)
174
+ expected << "</select>\n"
175
+
176
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_numbers => true)
177
+ assert_equal expected, select_month(8, :use_month_numbers => true)
178
+ end
179
+
180
+ def test_select_month_with_numbers_and_names
181
+ expected = %(<select id="date_month" name="date[month]">\n)
182
+ expected << %(<option value="1">1 - January</option>\n<option value="2">2 - February</option>\n<option value="3">3 - March</option>\n<option value="4">4 - April</option>\n<option value="5">5 - May</option>\n<option value="6">6 - June</option>\n<option value="7">7 - July</option>\n<option value="8" selected="selected">8 - August</option>\n<option value="9">9 - September</option>\n<option value="10">10 - October</option>\n<option value="11">11 - November</option>\n<option value="12">12 - December</option>\n)
183
+ expected << "</select>\n"
184
+
185
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true)
186
+ assert_equal expected, select_month(8, :add_month_numbers => true)
187
+ end
188
+
189
+ def test_select_month_with_numbers_and_names_with_abbv
190
+ expected = %(<select id="date_month" name="date[month]">\n)
191
+ expected << %(<option value="1">1 - Jan</option>\n<option value="2">2 - Feb</option>\n<option value="3">3 - Mar</option>\n<option value="4">4 - Apr</option>\n<option value="5">5 - May</option>\n<option value="6">6 - Jun</option>\n<option value="7">7 - Jul</option>\n<option value="8" selected="selected">8 - Aug</option>\n<option value="9">9 - Sep</option>\n<option value="10">10 - Oct</option>\n<option value="11">11 - Nov</option>\n<option value="12">12 - Dec</option>\n)
192
+ expected << "</select>\n"
193
+
194
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true, :use_short_month => true)
195
+ assert_equal expected, select_month(8, :add_month_numbers => true, :use_short_month => true)
196
+ end
197
+
198
+ def test_select_month_with_abbv
199
+ expected = %(<select id="date_month" name="date[month]">\n)
200
+ expected << %(<option value="1">Jan</option>\n<option value="2">Feb</option>\n<option value="3">Mar</option>\n<option value="4">Apr</option>\n<option value="5">May</option>\n<option value="6">Jun</option>\n<option value="7">Jul</option>\n<option value="8" selected="selected">Aug</option>\n<option value="9">Sep</option>\n<option value="10">Oct</option>\n<option value="11">Nov</option>\n<option value="12">Dec</option>\n)
201
+ expected << "</select>\n"
202
+
203
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_short_month => true)
204
+ assert_equal expected, select_month(8, :use_short_month => true)
205
+ end
206
+
207
+ def test_select_month_with_custom_names
208
+ month_names = %w(nil Januar Februar Marts April Maj Juni Juli August September Oktober November December)
209
+
210
+ expected = %(<select id="date_month" name="date[month]">\n)
211
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month]}</option>\n) }
212
+ expected << "</select>\n"
213
+
214
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
215
+ assert_equal expected, select_month(8, :use_month_names => month_names)
216
+ end
217
+
218
+ def test_select_month_with_zero_indexed_custom_names
219
+ month_names = %w(Januar Februar Marts April Maj Juni Juli August September Oktober November December)
220
+
221
+ expected = %(<select id="date_month" name="date[month]">\n)
222
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month-1]}</option>\n) }
223
+ expected << "</select>\n"
224
+
225
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
226
+ assert_equal expected, select_month(8, :use_month_names => month_names)
227
+ end
228
+
229
+ def test_select_year
230
+ expected = %(<select id="date_year" name="date[year]">\n)
231
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
232
+ expected << "</select>\n"
233
+
234
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005)
235
+ assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005)
236
+ end
237
+
238
+ def test_select_year_with_disabled
239
+ expected = %(<select id="date_year" name="date[year]" disabled="disabled">\n)
240
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
241
+ expected << "</select>\n"
242
+
243
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :disabled => true, :start_year => 2003, :end_year => 2005)
244
+ assert_equal expected, select_year(2003, :disabled => true, :start_year => 2003, :end_year => 2005)
245
+ end
246
+
247
+ def test_select_year_with_field_name_override
248
+ expected = %(<select id="date_annee" name="date[annee]">\n)
249
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
250
+ expected << "</select>\n"
251
+
252
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :field_name => 'annee')
253
+ assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005, :field_name => 'annee')
254
+ end
255
+
256
+ def test_select_year_with_type_discarding
257
+ expected = %(<select id="date_year" name="date_year">\n)
258
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
259
+ expected << "</select>\n"
260
+
261
+ assert_equal expected, select_year(
262
+ Time.mktime(2003, 8, 16), :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
263
+ assert_equal expected, select_year(
264
+ 2003, :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
265
+ end
266
+
267
+ def test_select_year_descending
268
+ expected = %(<select id="date_year" name="date[year]">\n)
269
+ expected << %(<option value="2005" selected="selected">2005</option>\n<option value="2004">2004</option>\n<option value="2003">2003</option>\n)
270
+ expected << "</select>\n"
271
+
272
+ assert_equal expected, select_year(Time.mktime(2005, 8, 16), :start_year => 2005, :end_year => 2003)
273
+ assert_equal expected, select_year(2005, :start_year => 2005, :end_year => 2003)
274
+ end
275
+
276
+ def test_select_hour
277
+ expected = %(<select id="date_hour" name="date[hour]">\n)
278
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
279
+ expected << "</select>\n"
280
+
281
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
282
+ end
283
+
284
+ def test_select_hour_with_disabled
285
+ expected = %(<select id="date_hour" name="date[hour]" disabled="disabled">\n)
286
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
287
+ expected << "</select>\n"
288
+
289
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
290
+ end
291
+
292
+ def test_select_hour_with_field_name_override
293
+ expected = %(<select id="date_heure" name="date[heure]">\n)
294
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
295
+ expected << "</select>\n"
296
+
297
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'heure')
298
+ end
299
+
300
+ def test_select_hour_with_blank
301
+ expected = %(<select id="date_hour" name="date[hour]">\n)
302
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
303
+ expected << "</select>\n"
304
+
305
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
306
+ end
307
+
308
+ def test_select_hour_nil_with_blank
309
+ expected = %(<select id="date_hour" name="date[hour]">\n)
310
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
311
+ expected << "</select>\n"
312
+
313
+ assert_equal expected, select_hour(nil, :include_blank => true)
314
+ end
315
+
316
+ def test_select_minute
317
+ expected = %(<select id="date_minute" name="date[minute]">\n)
318
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
319
+ expected << "</select>\n"
320
+
321
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
322
+ end
323
+
324
+ def test_select_minute_with_disabled
325
+ expected = %(<select id="date_minute" name="date[minute]" disabled="disabled">\n)
326
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
327
+ expected << "</select>\n"
328
+
329
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
330
+ end
331
+
332
+ def test_select_minute_with_field_name_override
333
+ expected = %(<select id="date_minuto" name="date[minuto]">\n)
334
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
335
+ expected << "</select>\n"
336
+
337
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'minuto')
338
+ end
339
+
340
+ def test_select_minute_with_blank
341
+ expected = %(<select id="date_minute" name="date[minute]">\n)
342
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
343
+ expected << "</select>\n"
344
+
345
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
346
+ end
347
+
348
+ def test_select_minute_with_blank_and_step
349
+ expected = %(<select id="date_minute" name="date[minute]">\n)
350
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="15">15</option>\n<option value="30">30</option>\n<option value="45">45</option>\n)
351
+ expected << "</select>\n"
352
+
353
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), { :include_blank => true , :minute_step => 15 })
354
+ end
355
+
356
+ def test_select_minute_nil_with_blank
357
+ expected = %(<select id="date_minute" name="date[minute]">\n)
358
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
359
+ expected << "</select>\n"
360
+
361
+ assert_equal expected, select_minute(nil, :include_blank => true)
362
+ end
363
+
364
+ def test_select_minute_nil_with_blank_and_step
365
+ expected = %(<select id="date_minute" name="date[minute]">\n)
366
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="15">15</option>\n<option value="30">30</option>\n<option value="45">45</option>\n)
367
+ expected << "</select>\n"
368
+
369
+ assert_equal expected, select_minute(nil, { :include_blank => true , :minute_step => 15 })
370
+ end
371
+
372
+ def test_select_second
373
+ expected = %(<select id="date_second" name="date[second]">\n)
374
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
375
+ expected << "</select>\n"
376
+
377
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
378
+ end
379
+
380
+ def test_select_second_with_disabled
381
+ expected = %(<select id="date_second" name="date[second]" disabled="disabled">\n)
382
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
383
+ expected << "</select>\n"
384
+
385
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
386
+ end
387
+
388
+ def test_select_second_with_field_name_override
389
+ expected = %(<select id="date_segundo" name="date[segundo]">\n)
390
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
391
+ expected << "</select>\n"
392
+
393
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'segundo')
394
+ end
395
+
396
+ def test_select_second_with_blank
397
+ expected = %(<select id="date_second" name="date[second]">\n)
398
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
399
+ expected << "</select>\n"
400
+
401
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
402
+ end
403
+
404
+ def test_select_second_nil_with_blank
405
+ expected = %(<select id="date_second" name="date[second]">\n)
406
+ expected << %(<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
407
+ expected << "</select>\n"
408
+
409
+ assert_equal expected, select_second(nil, :include_blank => true)
410
+ end
411
+
412
+ def test_select_date
413
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
414
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
415
+ expected << "</select>\n"
416
+
417
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
418
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
419
+ expected << "</select>\n"
420
+
421
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
422
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
423
+ expected << "</select>\n"
424
+
425
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
426
+ end
427
+
428
+ def test_select_date_with_order
429
+ expected = %(<select id="date_first_month" name="date[first][month]">\n)
430
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
431
+ expected << "</select>\n"
432
+
433
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
434
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
435
+ expected << "</select>\n"
436
+
437
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
438
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
439
+ expected << "</select>\n"
440
+
441
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:month, :day, :year])
442
+ end
443
+
444
+ def test_select_date_with_incomplete_order
445
+ expected = %(<select id="date_first_day" name="date[first][day]">\n)
446
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
447
+ expected << "</select>\n"
448
+
449
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
450
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
451
+ expected << "</select>\n"
452
+
453
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
454
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
455
+ expected << "</select>\n"
456
+
457
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
458
+ end
459
+
460
+ def test_select_date_with_disabled
461
+ expected = %(<select id="date_first_year" name="date[first][year]" disabled="disabled">\n)
462
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
463
+ expected << "</select>\n"
464
+
465
+ expected << %(<select id="date_first_month" name="date[first][month]" disabled="disabled">\n)
466
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
467
+ expected << "</select>\n"
468
+
469
+ expected << %(<select id="date_first_day" name="date[first][day]" disabled="disabled">\n)
470
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
471
+ expected << "</select>\n"
472
+
473
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :disabled => true)
474
+ end
475
+
476
+ def test_select_date_with_no_start_year
477
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
478
+ (Date.today.year-5).upto(Date.today.year+1) do |y|
479
+ if y == Date.today.year
480
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
481
+ else
482
+ expected << %(<option value="#{y}">#{y}</option>\n)
483
+ end
484
+ end
485
+ expected << "</select>\n"
486
+
487
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
488
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
489
+ expected << "</select>\n"
490
+
491
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
492
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
493
+ expected << "</select>\n"
494
+
495
+ assert_equal expected, select_date(
496
+ Time.mktime(Date.today.year, 8, 16), :end_year => Date.today.year+1, :prefix => "date[first]"
497
+ )
498
+ end
499
+
500
+ def test_select_date_with_no_end_year
501
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
502
+ 2003.upto(2008) do |y|
503
+ if y == 2003
504
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
505
+ else
506
+ expected << %(<option value="#{y}">#{y}</option>\n)
507
+ end
508
+ end
509
+ expected << "</select>\n"
510
+
511
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
512
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
513
+ expected << "</select>\n"
514
+
515
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
516
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
517
+ expected << "</select>\n"
518
+
519
+ assert_equal expected, select_date(
520
+ Time.mktime(2003, 8, 16), :start_year => 2003, :prefix => "date[first]"
521
+ )
522
+ end
523
+
524
+ def test_select_date_with_no_start_or_end_year
525
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
526
+ (Date.today.year-5).upto(Date.today.year+5) do |y|
527
+ if y == Date.today.year
528
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
529
+ else
530
+ expected << %(<option value="#{y}">#{y}</option>\n)
531
+ end
532
+ end
533
+ expected << "</select>\n"
534
+
535
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
536
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
537
+ expected << "</select>\n"
538
+
539
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
540
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
541
+ expected << "</select>\n"
542
+
543
+ assert_equal expected, select_date(
544
+ Time.mktime(Date.today.year, 8, 16), :prefix => "date[first]"
545
+ )
546
+ end
547
+
548
+ def test_select_date_with_zero_value
549
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
550
+ expected << %(<option value="2003">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
551
+ expected << "</select>\n"
552
+
553
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
554
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
555
+ expected << "</select>\n"
556
+
557
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
558
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
559
+ expected << "</select>\n"
560
+
561
+ assert_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
562
+ end
563
+
564
+ def test_select_date_with_zero_value_and_no_start_year
565
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
566
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
567
+ expected << "</select>\n"
568
+
569
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
570
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
571
+ expected << "</select>\n"
572
+
573
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
574
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
575
+ expected << "</select>\n"
576
+
577
+ assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
578
+ end
579
+
580
+ def test_select_date_with_zero_value_and_no_end_year
581
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
582
+ last_year = Time.now.year + 5
583
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
584
+ expected << "</select>\n"
585
+
586
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
587
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
588
+ expected << "</select>\n"
589
+
590
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
591
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
592
+ expected << "</select>\n"
593
+
594
+ assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
595
+ end
596
+
597
+ def test_select_date_with_zero_value_and_no_start_and_end_year
598
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
599
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
600
+ expected << "</select>\n"
601
+
602
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
603
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
604
+ expected << "</select>\n"
605
+
606
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
607
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
608
+ expected << "</select>\n"
609
+
610
+ assert_equal expected, select_date(0, :prefix => "date[first]")
611
+ end
612
+
613
+ def test_select_date_with_nil_value_and_no_start_and_end_year
614
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
615
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
616
+ expected << "</select>\n"
617
+
618
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
619
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
620
+ expected << "</select>\n"
621
+
622
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
623
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
624
+ expected << "</select>\n"
625
+
626
+ assert_equal expected, select_date(nil, :prefix => "date[first]")
627
+ end
628
+
629
+ def test_select_datetime
630
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
631
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
632
+ expected << "</select>\n"
633
+
634
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
635
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
636
+ expected << "</select>\n"
637
+
638
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
639
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
640
+ expected << "</select>\n"
641
+
642
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
643
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
644
+ expected << "</select>\n"
645
+
646
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
647
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
648
+ expected << "</select>\n"
649
+
650
+ assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
651
+ end
652
+
653
+ def test_select_datetime_with_separators
654
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
655
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
656
+ expected << "</select>\n"
657
+
658
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
659
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
660
+ expected << "</select>\n"
661
+
662
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
663
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
664
+ expected << "</select>\n"
665
+
666
+ expected << " &mdash; "
667
+
668
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
669
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
670
+ expected << "</select>\n"
671
+
672
+ expected << " : "
673
+
674
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
675
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
676
+ expected << "</select>\n"
677
+
678
+ assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :datetime_separator => ' &mdash; ', :time_separator => ' : ')
679
+ end
680
+
681
+ def test_select_datetime_with_nil_value_and_no_start_and_end_year
682
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
683
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
684
+ expected << "</select>\n"
685
+
686
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
687
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
688
+ expected << "</select>\n"
689
+
690
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
691
+ expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
692
+ expected << "</select>\n"
693
+
694
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
695
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
696
+ expected << "</select>\n"
697
+
698
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
699
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
700
+ expected << "</select>\n"
701
+
702
+ assert_equal expected, select_datetime(nil, :prefix => "date[first]")
703
+ end
704
+
705
+ def test_select_time
706
+ expected = %(<select id="date_hour" name="date[hour]">\n)
707
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
708
+ expected << "</select>\n"
709
+
710
+ expected << %(<select id="date_minute" name="date[minute]">\n)
711
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
712
+ expected << "</select>\n"
713
+
714
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18))
715
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => false)
716
+ end
717
+
718
+ def test_select_time_with_separator
719
+ expected = %(<select id="date_hour" name="date[hour]">\n)
720
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
721
+ expected << "</select>\n"
722
+
723
+ expected << " : "
724
+
725
+ expected << %(<select id="date_minute" name="date[minute]">\n)
726
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
727
+ expected << "</select>\n"
728
+
729
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ')
730
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ', :include_seconds => false)
731
+ end
732
+
733
+ def test_select_time_with_seconds
734
+ expected = %(<select id="date_hour" name="date[hour]">\n)
735
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
736
+ expected << "</select>\n"
737
+
738
+ expected << %(<select id="date_minute" name="date[minute]">\n)
739
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
740
+ expected << "</select>\n"
741
+
742
+ expected << %(<select id="date_second" name="date[second]">\n)
743
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
744
+ expected << "</select>\n"
745
+
746
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true)
747
+ end
748
+
749
+ def test_select_time_with_seconds_and_separator
750
+ expected = %(<select id="date_hour" name="date[hour]">\n)
751
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
752
+ expected << "</select>\n"
753
+
754
+ expected << " : "
755
+
756
+ expected << %(<select id="date_minute" name="date[minute]">\n)
757
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
758
+ expected << "</select>\n"
759
+
760
+ expected << " : "
761
+
762
+ expected << %(<select id="date_second" name="date[second]">\n)
763
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18" selected="selected">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
764
+ expected << "</select>\n"
765
+
766
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :time_separator => ' : ')
767
+ end
768
+
769
+ def test_date_select
770
+ @post = Post.new
771
+ @post.written_on = Date.new(2004, 6, 15)
772
+
773
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
774
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
775
+ expected << "</select>\n"
776
+
777
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
778
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
779
+ expected << "</select>\n"
780
+
781
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
782
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
783
+
784
+ expected << "</select>\n"
785
+
786
+ assert_equal expected, date_select("post", "written_on")
787
+ end
788
+
789
+ def test_date_select_within_fields_for
790
+ @post = Post.new
791
+ @post.written_on = Date.new(2004, 6, 15)
792
+
793
+ _erbout = ''
794
+
795
+ fields_for :post, @post do |f|
796
+ _erbout.concat f.date_select(:written_on)
797
+ end
798
+
799
+ expected = "<select id='post_written_on_1i' name='post[written_on(1i)]'>\n<option value='1999'>1999</option>\n<option value='2000'>2000</option>\n<option value='2001'>2001</option>\n<option value='2002'>2002</option>\n<option value='2003'>2003</option>\n<option selected='selected' value='2004'>2004</option>\n<option value='2005'>2005</option>\n<option value='2006'>2006</option>\n<option value='2007'>2007</option>\n<option value='2008'>2008</option>\n<option value='2009'>2009</option>\n</select>\n"
800
+ expected << "<select id='post_written_on_2i' name='post[written_on(2i)]'>\n<option value='1'>January</option>\n<option value='2'>February</option>\n<option value='3'>March</option>\n<option value='4'>April</option>\n<option value='5'>May</option>\n<option selected='selected' value='6'>June</option>\n<option value='7'>July</option>\n<option value='8'>August</option>\n<option value='9'>September</option>\n<option value='10'>October</option>\n<option value='11'>November</option>\n<option value='12'>December</option>\n</select>\n"
801
+ expected << "<select id='post_written_on_3i' name='post[written_on(3i)]'>\n<option value='1'>1</option>\n<option value='2'>2</option>\n<option value='3'>3</option>\n<option value='4'>4</option>\n<option value='5'>5</option>\n<option value='6'>6</option>\n<option value='7'>7</option>\n<option value='8'>8</option>\n<option value='9'>9</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option selected='selected' value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n</select>\n"
802
+
803
+ assert_dom_equal(expected, _erbout)
804
+ end
805
+
806
+ def test_date_select_with_index
807
+ @post = Post.new
808
+ @post.written_on = Date.new(2004, 6, 15)
809
+ id = 456
810
+
811
+ expected = %{<select id="post_456_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
812
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
813
+ expected << "</select>\n"
814
+
815
+ expected << %{<select id="post_456_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
816
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
817
+ expected << "</select>\n"
818
+
819
+ expected << %{<select id="post_456_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
820
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
821
+
822
+ expected << "</select>\n"
823
+
824
+ assert_equal expected, date_select("post", "written_on", :index => id)
825
+ end
826
+
827
+ def test_date_select_with_auto_index
828
+ @post = Post.new
829
+ @post.written_on = Date.new(2004, 6, 15)
830
+ id = 123
831
+
832
+ expected = %{<select id="post_123_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
833
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
834
+ expected << "</select>\n"
835
+
836
+ expected << %{<select id="post_123_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
837
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
838
+ expected << "</select>\n"
839
+
840
+ expected << %{<select id="post_123_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
841
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
842
+ expected << "</select>\n"
843
+
844
+ assert_equal expected, date_select("post[]", "written_on")
845
+ end
846
+
847
+ def test_date_select_with_different_order
848
+ @post = Post.new
849
+ @post.written_on = Date.new(2004, 6, 15)
850
+
851
+ expected = %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
852
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
853
+ expected << "</select>\n"
854
+
855
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
856
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
857
+ expected << "</select>\n"
858
+
859
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
860
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
861
+ expected << "</select>\n"
862
+
863
+ assert_equal expected, date_select("post", "written_on", :order => [:day, :month, :year])
864
+ end
865
+
866
+ def test_date_select_with_nil
867
+ @post = Post.new
868
+
869
+ start_year = Time.now.year-5
870
+ end_year = Time.now.year+5
871
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
872
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.year}>#{i}</option>\n) }
873
+ expected << "</select>\n"
874
+
875
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
876
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.month}>#{Date::MONTHNAMES[i]}</option>\n) }
877
+ expected << "</select>\n"
878
+
879
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
880
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
881
+ expected << "</select>\n"
882
+
883
+ assert_equal expected, date_select("post", "written_on")
884
+ end
885
+
886
+ def test_date_select_with_nil_and_blank
887
+ @post = Post.new
888
+
889
+ start_year = Time.now.year-5
890
+ end_year = Time.now.year+5
891
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
892
+ expected << "<option value=\"\"></option>\n"
893
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
894
+ expected << "</select>\n"
895
+
896
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
897
+ expected << "<option value=\"\"></option>\n"
898
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
899
+ expected << "</select>\n"
900
+
901
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
902
+ expected << "<option value=\"\"></option>\n"
903
+ 1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
904
+ expected << "</select>\n"
905
+
906
+ assert_equal expected, date_select("post", "written_on", :include_blank => true)
907
+ end
908
+
909
+ def test_date_select_cant_override_discard_hour
910
+ @post = Post.new
911
+ @post.written_on = Date.new(2004, 6, 15)
912
+
913
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
914
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
915
+ expected << "</select>\n"
916
+
917
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
918
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
919
+ expected << "</select>\n"
920
+
921
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
922
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
923
+ expected << "</select>\n"
924
+
925
+ assert_equal expected, date_select("post", "written_on", :discard_hour => false)
926
+ end
927
+
928
+ def test_time_select
929
+ @post = Post.new
930
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
931
+
932
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
933
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
934
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
935
+
936
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
937
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
938
+ expected << "</select>\n"
939
+ expected << " : "
940
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
941
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
942
+ expected << "</select>\n"
943
+
944
+ assert_equal expected, time_select("post", "written_on")
945
+ end
946
+
947
+ def test_time_select_with_seconds
948
+ @post = Post.new
949
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
950
+
951
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
952
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
953
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
954
+
955
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
956
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
957
+ expected << "</select>\n"
958
+ expected << " : "
959
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
960
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
961
+ expected << "</select>\n"
962
+ expected << " : "
963
+ expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
964
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
965
+ expected << "</select>\n"
966
+
967
+ assert_equal expected, time_select("post", "written_on", :include_seconds => true)
968
+ end
969
+
970
+ def test_datetime_select
971
+ @post = Post.new
972
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
973
+
974
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
975
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
976
+ expected << "</select>\n"
977
+
978
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
979
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
980
+ expected << "</select>\n"
981
+
982
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
983
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
984
+ expected << "</select>\n"
985
+
986
+ expected << " &mdash; "
987
+
988
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
989
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n}
990
+ expected << "</select>\n"
991
+ expected << " : "
992
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
993
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
994
+ expected << "</select>\n"
995
+
996
+ assert_equal expected, datetime_select("post", "updated_at")
997
+ end
998
+
999
+ def test_datetime_select_within_fields_for
1000
+ @post = Post.new
1001
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1002
+
1003
+ _erbout = ''
1004
+
1005
+ fields_for :post, @post do |f|
1006
+ _erbout.concat f.datetime_select(:updated_at)
1007
+ end
1008
+
1009
+ expected = "<select id='post_updated_at_1i' name='post[updated_at(1i)]'>\n<option value='1999'>1999</option>\n<option value='2000'>2000</option>\n<option value='2001'>2001</option>\n<option value='2002'>2002</option>\n<option value='2003'>2003</option>\n<option selected='selected' value='2004'>2004</option>\n<option value='2005'>2005</option>\n<option value='2006'>2006</option>\n<option value='2007'>2007</option>\n<option value='2008'>2008</option>\n<option value='2009'>2009</option>\n</select>\n"
1010
+ expected << "<select id='post_updated_at_2i' name='post[updated_at(2i)]'>\n<option value='1'>January</option>\n<option value='2'>February</option>\n<option value='3'>March</option>\n<option value='4'>April</option>\n<option value='5'>May</option>\n<option selected='selected' value='6'>June</option>\n<option value='7'>July</option>\n<option value='8'>August</option>\n<option value='9'>September</option>\n<option value='10'>October</option>\n<option value='11'>November</option>\n<option value='12'>December</option>\n</select>\n"
1011
+ expected << "<select id='post_updated_at_3i' name='post[updated_at(3i)]'>\n<option value='1'>1</option>\n<option value='2'>2</option>\n<option value='3'>3</option>\n<option value='4'>4</option>\n<option value='5'>5</option>\n<option value='6'>6</option>\n<option value='7'>7</option>\n<option value='8'>8</option>\n<option value='9'>9</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option selected='selected' value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n</select>\n"
1012
+ expected << " &mdash; <select id='post_updated_at_4i' name='post[updated_at(4i)]'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option selected='selected' value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n</select>\n"
1013
+ expected << " : <select id='post_updated_at_5i' name='post[updated_at(5i)]'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n<option value='32'>32</option>\n<option value='33'>33</option>\n<option value='34'>34</option>\n<option selected='selected' value='35'>35</option>\n<option value='36'>36</option>\n<option value='37'>37</option>\n<option value='38'>38</option>\n<option value='39'>39</option>\n<option value='40'>40</option>\n<option value='41'>41</option>\n<option value='42'>42</option>\n<option value='43'>43</option>\n<option value='44'>44</option>\n<option value='45'>45</option>\n<option value='46'>46</option>\n<option value='47'>47</option>\n<option value='48'>48</option>\n<option value='49'>49</option>\n<option value='50'>50</option>\n<option value='51'>51</option>\n<option value='52'>52</option>\n<option value='53'>53</option>\n<option value='54'>54</option>\n<option value='55'>55</option>\n<option value='56'>56</option>\n<option value='57'>57</option>\n<option value='58'>58</option>\n<option value='59'>59</option>\n</select>\n"
1014
+
1015
+ assert_dom_equal(expected, _erbout)
1016
+ end
1017
+
1018
+ def test_date_select_with_zero_value_and_no_start_year
1019
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1020
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1021
+ expected << "</select>\n"
1022
+
1023
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1024
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
1025
+ expected << "</select>\n"
1026
+
1027
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1028
+ expected <<
1029
+ %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1030
+ expected << "</select>\n"
1031
+
1032
+ assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
1033
+ end
1034
+
1035
+ def test_date_select_with_zero_value_and_no_end_year
1036
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1037
+ last_year = Time.now.year + 5
1038
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1039
+ expected << "</select>\n"
1040
+
1041
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1042
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
1043
+ expected << "</select>\n"
1044
+
1045
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1046
+ expected <<
1047
+ %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1048
+ expected << "</select>\n"
1049
+
1050
+ assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
1051
+ end
1052
+
1053
+ def test_date_select_with_zero_value_and_no_start_and_end_year
1054
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1055
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1056
+ expected << "</select>\n"
1057
+
1058
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1059
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
1060
+ expected << "</select>\n"
1061
+
1062
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1063
+ expected <<
1064
+ %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1065
+ expected << "</select>\n"
1066
+
1067
+ assert_equal expected, select_date(0, :prefix => "date[first]")
1068
+ end
1069
+
1070
+ def test_date_select_with_nil_value_and_no_start_and_end_year
1071
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1072
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1073
+ expected << "</select>\n"
1074
+
1075
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1076
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
1077
+ expected << "</select>\n"
1078
+
1079
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1080
+ expected <<
1081
+ %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1082
+ expected << "</select>\n"
1083
+
1084
+ assert_equal expected, select_date(nil, :prefix => "date[first]")
1085
+ end
1086
+
1087
+ def test_datetime_select_with_nil_value_and_no_start_and_end_year
1088
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1089
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1090
+ expected << "</select>\n"
1091
+
1092
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1093
+ expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
1094
+ expected << "</select>\n"
1095
+
1096
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1097
+ expected <<
1098
+ %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
1099
+ expected << "</select>\n"
1100
+
1101
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1102
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
1103
+ expected << "</select>\n"
1104
+
1105
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1106
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
1107
+ expected << "</select>\n"
1108
+
1109
+ assert_equal expected, select_datetime(nil, :prefix => "date[first]")
1110
+ end
1111
+
1112
+
1113
+ def test_datetime_select_with_options_index
1114
+ @post = Post.new
1115
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1116
+ id = 456
1117
+
1118
+ expected = %{<select id="post_456_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
1119
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
1120
+ expected << "</select>\n"
1121
+
1122
+ expected << %{<select id="post_456_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
1123
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
1124
+ expected << "</select>\n"
1125
+
1126
+ expected << %{<select id="post_456_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
1127
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
1128
+ expected << "</select>\n"
1129
+
1130
+ expected << " &mdash; "
1131
+
1132
+ expected << %{<select id="post_456_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
1133
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n}
1134
+ expected << "</select>\n"
1135
+ expected << " : "
1136
+ expected << %{<select id="post_456_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
1137
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1138
+ expected << "</select>\n"
1139
+
1140
+ assert_equal expected, datetime_select("post", "updated_at", :index => id)
1141
+ end
1142
+
1143
+ def test_datetime_select_with_auto_index
1144
+ @post = Post.new
1145
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1146
+ id = @post.id
1147
+
1148
+ expected = %{<select id="post_123_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
1149
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
1150
+ expected << "</select>\n"
1151
+
1152
+ expected << %{<select id="post_123_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
1153
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
1154
+ expected << "</select>\n"
1155
+
1156
+ expected << %{<select id="post_123_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
1157
+ expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
1158
+ expected << "</select>\n"
1159
+
1160
+ expected << " &mdash; "
1161
+
1162
+ expected << %{<select id="post_123_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
1163
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n}
1164
+ expected << "</select>\n"
1165
+ expected << " : "
1166
+ expected << %{<select id="post_123_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
1167
+ expected << %{<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35" selected="selected">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n}
1168
+ expected << "</select>\n"
1169
+
1170
+ assert_equal expected, datetime_select("post[]", "updated_at")
1171
+ end
1172
+
1173
+ def test_datetime_select_with_seconds
1174
+ @post = Post.new
1175
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1176
+
1177
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1178
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1179
+ expected << "</select>\n"
1180
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1181
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1182
+ expected << "</select>\n"
1183
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1184
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1185
+ expected << "</select>\n"
1186
+
1187
+ expected << " &mdash; "
1188
+
1189
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1190
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1191
+ expected << "</select>\n"
1192
+ expected << " : "
1193
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1194
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1195
+ expected << "</select>\n"
1196
+ expected << " : "
1197
+ expected << %{<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n}
1198
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
1199
+ expected << "</select>\n"
1200
+
1201
+ assert_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
1202
+ end
1203
+
1204
+ def test_datetime_select_discard_year
1205
+ @post = Post.new
1206
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1207
+
1208
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1209
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1210
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1211
+ expected << "</select>\n"
1212
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1213
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1214
+ expected << "</select>\n"
1215
+
1216
+ expected << " &mdash; "
1217
+
1218
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1219
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1220
+ expected << "</select>\n"
1221
+ expected << " : "
1222
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1223
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1224
+ expected << "</select>\n"
1225
+
1226
+ assert_equal expected, datetime_select("post", "updated_at", :discard_year => true)
1227
+ end
1228
+
1229
+ def test_datetime_select_discard_month
1230
+ @post = Post.new
1231
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1232
+
1233
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1234
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1235
+ expected << "</select>\n"
1236
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
1237
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
1238
+
1239
+ expected << " &mdash; "
1240
+
1241
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1242
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1243
+ expected << "</select>\n"
1244
+ expected << " : "
1245
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1246
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1247
+ expected << "</select>\n"
1248
+
1249
+ assert_equal expected, datetime_select("post", "updated_at", :discard_month => true)
1250
+ end
1251
+
1252
+ def test_datetime_select_discard_year_and_month
1253
+ @post = Post.new
1254
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1255
+
1256
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1257
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
1258
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
1259
+
1260
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1261
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1262
+ expected << "</select>\n"
1263
+ expected << " : "
1264
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1265
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1266
+ expected << "</select>\n"
1267
+
1268
+ assert_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
1269
+ end
1270
+
1271
+ def test_datetime_select_invalid_order
1272
+ @post = Post.new
1273
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1274
+
1275
+ expected = %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1276
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1277
+ expected << "</select>\n"
1278
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1279
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1280
+ expected << "</select>\n"
1281
+ expected << %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1282
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1283
+ expected << "</select>\n"
1284
+
1285
+ expected << " &mdash; "
1286
+
1287
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1288
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1289
+ expected << "</select>\n"
1290
+ expected << " : "
1291
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1292
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1293
+ expected << "</select>\n"
1294
+
1295
+ assert_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
1296
+ end
1297
+
1298
+ def test_datetime_select_discard_with_order
1299
+ @post = Post.new
1300
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1301
+
1302
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1303
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1304
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1305
+ expected << "</select>\n"
1306
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1307
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1308
+ expected << "</select>\n"
1309
+
1310
+ expected << " &mdash; "
1311
+
1312
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1313
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1314
+ expected << "</select>\n"
1315
+ expected << " : "
1316
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1317
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1318
+ expected << "</select>\n"
1319
+
1320
+ assert_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
1321
+ end
1322
+ end