kajam 1.0.3.rc2

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

Potentially problematic release.


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

Files changed (2635) hide show
  1. data/.gitignore +20 -0
  2. data/INSTALL +35 -0
  3. data/LICENSE +21 -0
  4. data/README +84 -0
  5. data/Rakefile +11 -0
  6. data/app/controllers/admin/configuration_controller.rb +50 -0
  7. data/app/controllers/admin/extensions_controller.rb +11 -0
  8. data/app/controllers/admin/layouts_controller.rb +8 -0
  9. data/app/controllers/admin/page_fields_controller.rb +9 -0
  10. data/app/controllers/admin/page_parts_controller.rb +9 -0
  11. data/app/controllers/admin/pages_controller.rb +79 -0
  12. data/app/controllers/admin/preferences_controller.rb +46 -0
  13. data/app/controllers/admin/references_controller.rb +7 -0
  14. data/app/controllers/admin/resource_controller.rb +242 -0
  15. data/app/controllers/admin/snippets_controller.rb +8 -0
  16. data/app/controllers/admin/users_controller.rb +40 -0
  17. data/app/controllers/admin/welcome_controller.rb +48 -0
  18. data/app/controllers/application_controller.rb +87 -0
  19. data/app/controllers/site_controller.rb +77 -0
  20. data/app/helpers/admin/configuration_helper.rb +80 -0
  21. data/app/helpers/admin/export_helper.rb +2 -0
  22. data/app/helpers/admin/extensions_helper.rb +2 -0
  23. data/app/helpers/admin/layouts_helper.rb +21 -0
  24. data/app/helpers/admin/node_helper.rb +133 -0
  25. data/app/helpers/admin/pages_helper.rb +117 -0
  26. data/app/helpers/admin/preferences_helper.rb +3 -0
  27. data/app/helpers/admin/references_helper.rb +44 -0
  28. data/app/helpers/admin/regions_helper.rb +28 -0
  29. data/app/helpers/admin/snippets_helper.rb +41 -0
  30. data/app/helpers/admin/users_helper.rb +8 -0
  31. data/app/helpers/admin/welcome_helper.rb +2 -0
  32. data/app/helpers/application_helper.rb +236 -0
  33. data/app/helpers/site_helper.rb +2 -0
  34. data/app/models/deprecated_tags.rb +34 -0
  35. data/app/models/file_not_found_page.rb +32 -0
  36. data/app/models/kajam/config.rb +305 -0
  37. data/app/models/layout.rb +15 -0
  38. data/app/models/page.rb +363 -0
  39. data/app/models/page_context.rb +46 -0
  40. data/app/models/page_field.rb +3 -0
  41. data/app/models/page_part.rb +20 -0
  42. data/app/models/snippet.rb +23 -0
  43. data/app/models/standard_tags.rb +1364 -0
  44. data/app/models/status.rb +41 -0
  45. data/app/models/text_filter.rb +36 -0
  46. data/app/models/user.rb +97 -0
  47. data/app/models/user_action_observer.rb +25 -0
  48. data/app/views/admin/configuration/edit.html.haml +38 -0
  49. data/app/views/admin/configuration/show.html.haml +58 -0
  50. data/app/views/admin/extensions/index.html.haml +41 -0
  51. data/app/views/admin/layouts/_form.html.haml +39 -0
  52. data/app/views/admin/layouts/edit.html.haml +9 -0
  53. data/app/views/admin/layouts/index.html.haml +36 -0
  54. data/app/views/admin/layouts/new.html.haml +7 -0
  55. data/app/views/admin/layouts/remove.html.haml +16 -0
  56. data/app/views/admin/page_fields/_page_field.html.haml +12 -0
  57. data/app/views/admin/page_parts/_page_part.html.haml +18 -0
  58. data/app/views/admin/pages/_fields.html.haml +71 -0
  59. data/app/views/admin/pages/_meta_row.html.haml +8 -0
  60. data/app/views/admin/pages/_node.html.haml +26 -0
  61. data/app/views/admin/pages/_popups.html.haml +27 -0
  62. data/app/views/admin/pages/children.html.haml +2 -0
  63. data/app/views/admin/pages/edit.html.haml +12 -0
  64. data/app/views/admin/pages/index.html.haml +26 -0
  65. data/app/views/admin/pages/new.html.haml +10 -0
  66. data/app/views/admin/pages/remove.html.haml +18 -0
  67. data/app/views/admin/preferences/edit.html.haml +44 -0
  68. data/app/views/admin/references/_tag_reference.haml +3 -0
  69. data/app/views/admin/references/filters.haml +6 -0
  70. data/app/views/admin/references/tags.haml +30 -0
  71. data/app/views/admin/snippets/_form.html.haml +33 -0
  72. data/app/views/admin/snippets/edit.html.haml +9 -0
  73. data/app/views/admin/snippets/index.html.haml +34 -0
  74. data/app/views/admin/snippets/new.html.haml +7 -0
  75. data/app/views/admin/snippets/remove.html.haml +17 -0
  76. data/app/views/admin/users/_avatar.html.haml +5 -0
  77. data/app/views/admin/users/_form.html.haml +53 -0
  78. data/app/views/admin/users/_password_fields.html.haml +18 -0
  79. data/app/views/admin/users/edit.html.haml +9 -0
  80. data/app/views/admin/users/index.html.haml +39 -0
  81. data/app/views/admin/users/new.html.haml +6 -0
  82. data/app/views/admin/users/remove.html.haml +16 -0
  83. data/app/views/admin/welcome/login.html.haml +23 -0
  84. data/app/views/layouts/application.html.haml +50 -0
  85. data/app/views/site/not_found.html.haml +3 -0
  86. data/bin/kajam +53 -0
  87. data/config/boot.rb +179 -0
  88. data/config/compass.config +18 -0
  89. data/config/cucumber.yml +7 -0
  90. data/config/database.db2.yml +23 -0
  91. data/config/database.mysql.yml +28 -0
  92. data/config/database.postgresql.yml +28 -0
  93. data/config/database.sqlite.yml +19 -0
  94. data/config/database.sqlserver.yml +23 -0
  95. data/config/environment.rb +98 -0
  96. data/config/environments/cucumber.rb +29 -0
  97. data/config/environments/development.rb +17 -0
  98. data/config/environments/production.rb +24 -0
  99. data/config/environments/test.rb +38 -0
  100. data/config/initializers/compass.rb +6 -0
  101. data/config/initializers/haml.rb +2 -0
  102. data/config/initializers/kajam_config.rb +17 -0
  103. data/config/locales/en.yml +238 -0
  104. data/config/locales/en_available_tags.yml +625 -0
  105. data/config/routes.rb +42 -0
  106. data/db/migrate/001_create_kajam_tables.rb +75 -0
  107. data/db/migrate/002_insert_initial_data.rb +12 -0
  108. data/db/migrate/003_rename_behavior_column.rb +9 -0
  109. data/db/migrate/004_rename_filter_column.rb +11 -0
  110. data/db/migrate/005_add_virtual_column_to_page.rb +9 -0
  111. data/db/migrate/006_integer_columns_to_boolean.rb +36 -0
  112. data/db/migrate/007_remove_virtual_column_from_page.rb +9 -0
  113. data/db/migrate/008_add_virtual_column_to_page_again.rb +9 -0
  114. data/db/migrate/009_add_content_type_field_to_layout.rb +9 -0
  115. data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
  116. data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
  117. data/db/migrate/012_create_extension_meta.rb +13 -0
  118. data/db/migrate/013_add_notes_field_to_user.rb +9 -0
  119. data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
  120. data/db/migrate/015_add_optimistic_locking.rb +15 -0
  121. data/db/migrate/016_add_sessions.rb +16 -0
  122. data/db/migrate/017_rename_created_by_updated_by_columns.rb +15 -0
  123. data/db/migrate/018_add_description_and_keywords_to_pages.rb +11 -0
  124. data/db/migrate/019_add_salt_to_users.rb +11 -0
  125. data/db/migrate/020_add_session_info_to_users.rb +11 -0
  126. data/db/migrate/021_remove_session_expire_from_users.rb +9 -0
  127. data/db/migrate/20081203140407_add_indexes.rb +19 -0
  128. data/db/migrate/20090226140109_add_user_language.rb +9 -0
  129. data/db/migrate/20090929164633_rename_developer_role_to_designer.rb +9 -0
  130. data/db/migrate/20091003095744_change_user_language_to_locale.rb +9 -0
  131. data/db/migrate/20100805154952_add_page_fields.rb +15 -0
  132. data/db/migrate/20100805155020_convert_page_metas.rb +15 -0
  133. data/db/migrate/20100810151922_add_field_name_index.rb +11 -0
  134. data/db/schema.rb +141 -0
  135. data/features/admin/configuration.feature +38 -0
  136. data/features/admin/content_negotiation.feature +24 -0
  137. data/features/admin/layouts_management.feature +10 -0
  138. data/features/admin/pages_management.feature +78 -0
  139. data/features/admin/resource_pagination.feature +27 -0
  140. data/features/admin/snippets_management.feature +57 -0
  141. data/features/admin/user_permissions.feature +156 -0
  142. data/features/admin/user_preferences.feature +35 -0
  143. data/features/admin/users_management.feature +62 -0
  144. data/features/navigation_rendering.feature +30 -0
  145. data/features/page_serving.feature +42 -0
  146. data/features/step_definitions/admin/admin_steps.rb +38 -0
  147. data/features/step_definitions/admin/content_negotiation_steps.rb +50 -0
  148. data/features/step_definitions/admin/pages_management_steps.rb +28 -0
  149. data/features/step_definitions/admin/pagination_steps.rb +44 -0
  150. data/features/step_definitions/admin/users_management_steps.rb +15 -0
  151. data/features/step_definitions/page_serving_steps.rb +62 -0
  152. data/features/step_definitions/web_steps.rb +273 -0
  153. data/features/support/dataset.rb +13 -0
  154. data/features/support/datasets_loader.rb +3 -0
  155. data/features/support/env.rb +60 -0
  156. data/features/support/matchers.rb +3 -0
  157. data/features/support/paths.rb +74 -0
  158. data/kajam.gemspec +43 -0
  159. data/lib/annotatable.rb +68 -0
  160. data/lib/autotest/discover.rb +3 -0
  161. data/lib/autotest/kajam_rails_rspec.rb +111 -0
  162. data/lib/generators/extension/USAGE +30 -0
  163. data/lib/generators/extension/extension_generator.rb +99 -0
  164. data/lib/generators/extension/templates/README +6 -0
  165. data/lib/generators/extension/templates/RSpecRakefile +109 -0
  166. data/lib/generators/extension/templates/Rakefile +25 -0
  167. data/lib/generators/extension/templates/cucumber.yml +1 -0
  168. data/lib/generators/extension/templates/cucumber_env.rb +11 -0
  169. data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
  170. data/lib/generators/extension/templates/en.yml +3 -0
  171. data/lib/generators/extension/templates/extension.rb +23 -0
  172. data/lib/generators/extension/templates/functional_test.rb +15 -0
  173. data/lib/generators/extension/templates/gemspec.rb +29 -0
  174. data/lib/generators/extension/templates/kajam_config.rb +3 -0
  175. data/lib/generators/extension/templates/lib.rb +2 -0
  176. data/lib/generators/extension/templates/migration.rb +9 -0
  177. data/lib/generators/extension/templates/routes.rb +5 -0
  178. data/lib/generators/extension/templates/spec.opts +6 -0
  179. data/lib/generators/extension/templates/spec_helper.rb +36 -0
  180. data/lib/generators/extension/templates/tasks.rake +55 -0
  181. data/lib/generators/extension/templates/test_helper.rb +26 -0
  182. data/lib/generators/extension/templates/version.rb +3 -0
  183. data/lib/generators/extension_controller/USAGE +36 -0
  184. data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
  185. data/lib/generators/extension_controller/templates/controller.rb +10 -0
  186. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  187. data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
  188. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  189. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  190. data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
  191. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  192. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  193. data/lib/generators/extension_mailer/USAGE +17 -0
  194. data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
  195. data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
  196. data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
  197. data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
  198. data/lib/generators/extension_mailer/templates/view.erb +3 -0
  199. data/lib/generators/extension_migration/USAGE +34 -0
  200. data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
  201. data/lib/generators/extension_migration/templates/migration.rb +11 -0
  202. data/lib/generators/extension_model/USAGE +35 -0
  203. data/lib/generators/extension_model/extension_model_generator.rb +68 -0
  204. data/lib/generators/extension_model/templates/fixtures.yml +19 -0
  205. data/lib/generators/extension_model/templates/migration.rb +16 -0
  206. data/lib/generators/extension_model/templates/model.rb +2 -0
  207. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  208. data/lib/generators/extension_model/templates/unit_test.rb +8 -0
  209. data/lib/generators/generator_base_extension.rb +16 -0
  210. data/lib/generators/instance/instance_generator.rb +119 -0
  211. data/lib/generators/instance/templates/databases/db2.yml +40 -0
  212. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  213. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  214. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  215. data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
  216. data/lib/generators/instance/templates/instance_boot.rb +179 -0
  217. data/lib/generators/instance/templates/instance_environment.rb +93 -0
  218. data/lib/generators/instance/templates/instance_generate +18 -0
  219. data/lib/generators/instance/templates/instance_kajam_config.rb +16 -0
  220. data/lib/generators/instance/templates/instance_rakefile +3 -0
  221. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  222. data/lib/generators/language_extension/USAGE +27 -0
  223. data/lib/generators/language_extension/language_extension_generator.rb +49 -0
  224. data/lib/generators/language_extension/templates/README +3 -0
  225. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  226. data/lib/generators/language_extension/templates/Rakefile +25 -0
  227. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  228. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  229. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  230. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  231. data/lib/generators/language_extension/templates/extension.rb +8 -0
  232. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  233. data/lib/generators/language_extension/templates/lang.yml +181 -0
  234. data/lib/generators/language_extension/templates/spec.opts +6 -0
  235. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  236. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  237. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  238. data/lib/inheritable_class_attributes.rb +65 -0
  239. data/lib/kajam.rb +19 -0
  240. data/lib/kajam/admin_ui.rb +258 -0
  241. data/lib/kajam/admin_ui/region_partials.rb +18 -0
  242. data/lib/kajam/admin_ui/region_set.rb +35 -0
  243. data/lib/kajam/available_locales.rb +31 -0
  244. data/lib/kajam/cache.rb +99 -0
  245. data/lib/kajam/config/definition.rb +142 -0
  246. data/lib/kajam/extension.rb +151 -0
  247. data/lib/kajam/extension/script.rb +393 -0
  248. data/lib/kajam/extension_gem.rb +12 -0
  249. data/lib/kajam/extension_loader.rb +174 -0
  250. data/lib/kajam/extension_locator.rb +25 -0
  251. data/lib/kajam/extension_migrator.rb +98 -0
  252. data/lib/kajam/gem_dependency_fix.rb +21 -0
  253. data/lib/kajam/gem_locator.rb +28 -0
  254. data/lib/kajam/initializer.rb +319 -0
  255. data/lib/kajam/pagination/controller.rb +35 -0
  256. data/lib/kajam/pagination/link_renderer.rb +34 -0
  257. data/lib/kajam/resource_responses.rb +115 -0
  258. data/lib/kajam/setup.rb +224 -0
  259. data/lib/kajam/taggable.rb +132 -0
  260. data/lib/local_time.rb +8 -0
  261. data/lib/login_system.rb +128 -0
  262. data/lib/method_observer.rb +50 -0
  263. data/lib/plugins/active_record_extensions/init.rb +1 -0
  264. data/lib/plugins/active_record_extensions/lib/active_record_extensions.rb +28 -0
  265. data/lib/plugins/extension_patches/init.rb +1 -0
  266. data/lib/plugins/extension_patches/lib/routing_extension.rb +31 -0
  267. data/lib/plugins/object_extensions/init.rb +1 -0
  268. data/lib/plugins/object_extensions/lib/object_extensions.rb +8 -0
  269. data/lib/plugins/response_cache_timeout/init.rb +3 -0
  270. data/lib/plugins/string_extensions/init.rb +1 -0
  271. data/lib/plugins/string_extensions/lib/string_extensions.rb +23 -0
  272. data/lib/plugins/symbol_extensions/init.rb +1 -0
  273. data/lib/plugins/symbol_extensions/lib/symbol_extensions.rb +5 -0
  274. data/lib/simpleton.rb +21 -0
  275. data/lib/task_support.rb +64 -0
  276. data/lib/tasks/ci.rake +9 -0
  277. data/lib/tasks/cucumber.rake +47 -0
  278. data/lib/tasks/database.rake +33 -0
  279. data/lib/tasks/environments.rake +11 -0
  280. data/lib/tasks/extensions.rake +97 -0
  281. data/lib/tasks/framework.rake +223 -0
  282. data/lib/tasks/instance.rake +23 -0
  283. data/lib/tasks/kajam_config.rake +18 -0
  284. data/lib/tasks/prototype.rake +31 -0
  285. data/lib/tasks/release.rake +130 -0
  286. data/lib/tasks/rspec.rake +221 -0
  287. data/lib/tasks/translate.rake +59 -0
  288. data/lib/tasks/undefine.rake +28 -0
  289. data/lib/translation_support.rb +54 -0
  290. data/log/.keep +0 -0
  291. data/public/.htaccess +40 -0
  292. data/public/404.html +8 -0
  293. data/public/500.html +8 -0
  294. data/public/dispatch.cgi +10 -0
  295. data/public/dispatch.fcgi +24 -0
  296. data/public/dispatch.rb +10 -0
  297. data/public/favicon.ico +0 -0
  298. data/public/images/admin/add_tab.png +0 -0
  299. data/public/images/admin/avatar_32x32.png +0 -0
  300. data/public/images/admin/avatar_64x64.png +0 -0
  301. data/public/images/admin/avatar_96x96.png +0 -0
  302. data/public/images/admin/brown_bottom_line.gif +0 -0
  303. data/public/images/admin/calendar_down.gif +0 -0
  304. data/public/images/admin/collapse.png +0 -0
  305. data/public/images/admin/draft_page.png +0 -0
  306. data/public/images/admin/expand.png +0 -0
  307. data/public/images/admin/image.png +0 -0
  308. data/public/images/admin/javascript.png +0 -0
  309. data/public/images/admin/layout.png +0 -0
  310. data/public/images/admin/metadata_toggle.png +0 -0
  311. data/public/images/admin/minus.png +0 -0
  312. data/public/images/admin/minus_disabled.png +0 -0
  313. data/public/images/admin/minus_grey.png +0 -0
  314. data/public/images/admin/navigation_secondary_separator.gif +0 -0
  315. data/public/images/admin/page.png +0 -0
  316. data/public/images/admin/plus.png +0 -0
  317. data/public/images/admin/plus_disabled.png +0 -0
  318. data/public/images/admin/plus_grey.png +0 -0
  319. data/public/images/admin/popup_border_background.png +0 -0
  320. data/public/images/admin/popup_border_bottom_left.png +0 -0
  321. data/public/images/admin/popup_border_bottom_right.png +0 -0
  322. data/public/images/admin/popup_border_top_left.png +0 -0
  323. data/public/images/admin/popup_border_top_right.png +0 -0
  324. data/public/images/admin/search.png +0 -0
  325. data/public/images/admin/single_form_shadow.png +0 -0
  326. data/public/images/admin/snippet.png +0 -0
  327. data/public/images/admin/spinner.gif +0 -0
  328. data/public/images/admin/status_background.png +0 -0
  329. data/public/images/admin/status_bottom_left.png +0 -0
  330. data/public/images/admin/status_bottom_right.png +0 -0
  331. data/public/images/admin/status_spinner.gif +0 -0
  332. data/public/images/admin/status_top_left.png +0 -0
  333. data/public/images/admin/status_top_right.png +0 -0
  334. data/public/images/admin/stylesheet.png +0 -0
  335. data/public/images/admin/tab_close.png +0 -0
  336. data/public/images/admin/upload.png +0 -0
  337. data/public/images/admin/virtual_page.png +0 -0
  338. data/public/images/kajam/kajam-badge-color.png +0 -0
  339. data/public/javascripts/admin/application.js +94 -0
  340. data/public/javascripts/admin/codearea.js +165 -0
  341. data/public/javascripts/admin/controls.js +965 -0
  342. data/public/javascripts/admin/cookie.js +80 -0
  343. data/public/javascripts/admin/dateinput.js +402 -0
  344. data/public/javascripts/admin/dragdrop.js +974 -0
  345. data/public/javascripts/admin/dropdown.js +216 -0
  346. data/public/javascripts/admin/effects.js +1122 -0
  347. data/public/javascripts/admin/lowpro.js +340 -0
  348. data/public/javascripts/admin/overrides.js +1 -0
  349. data/public/javascripts/admin/page_preview.js +41 -0
  350. data/public/javascripts/admin/pagefield.js +54 -0
  351. data/public/javascripts/admin/pagestatus.js +17 -0
  352. data/public/javascripts/admin/popup.js +339 -0
  353. data/public/javascripts/admin/prototype.js +4874 -0
  354. data/public/javascripts/admin/ruledtable.js +13 -0
  355. data/public/javascripts/admin/shortcuts.js +27 -0
  356. data/public/javascripts/admin/sitemap.js +149 -0
  357. data/public/javascripts/admin/status.js +233 -0
  358. data/public/javascripts/admin/tabcontrol.js +123 -0
  359. data/public/javascripts/admin/toggle.js +430 -0
  360. data/public/javascripts/admin/utility.js +53 -0
  361. data/public/javascripts/admin/validationerror.js +18 -0
  362. data/public/loading-iframe.html +11 -0
  363. data/public/robots.txt +1 -0
  364. data/public/stylesheets/admin/base.css +1 -0
  365. data/public/stylesheets/admin/main.css +1 -0
  366. data/public/stylesheets/admin/overrides.css +0 -0
  367. data/public/stylesheets/sass/admin/_base.sass +17 -0
  368. data/public/stylesheets/sass/admin/main.sass +27 -0
  369. data/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
  370. data/public/stylesheets/sass/admin/modules/_links.sass +18 -0
  371. data/public/stylesheets/sass/admin/overrides.sass +2 -0
  372. data/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
  373. data/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  374. data/public/stylesheets/sass/admin/partials/_content.sass +58 -0
  375. data/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  376. data/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
  377. data/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
  378. data/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  379. data/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
  380. data/public/stylesheets/sass/admin/partials/_header.sass +114 -0
  381. data/public/stylesheets/sass/admin/partials/_index.sass +147 -0
  382. data/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  383. data/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  384. data/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
  385. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
  386. data/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  387. data/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
  388. data/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
  389. data/script/about +3 -0
  390. data/script/autospec +5 -0
  391. data/script/breakpointer +3 -0
  392. data/script/console +3 -0
  393. data/script/cucumber +10 -0
  394. data/script/dbconsole +3 -0
  395. data/script/destroy +3 -0
  396. data/script/extension +5 -0
  397. data/script/generate +4 -0
  398. data/script/performance/benchmarker +3 -0
  399. data/script/performance/profiler +3 -0
  400. data/script/performance/request +3 -0
  401. data/script/plugin +3 -0
  402. data/script/process/inspector +3 -0
  403. data/script/process/reaper +3 -0
  404. data/script/process/spawner +3 -0
  405. data/script/process/spinner +3 -0
  406. data/script/runner +3 -0
  407. data/script/server +3 -0
  408. data/script/spec +5 -0
  409. data/script/spec_server +116 -0
  410. data/script/version +5 -0
  411. data/spec/controllers/admin/extensions_controller_spec.rb +36 -0
  412. data/spec/controllers/admin/layouts_controller_spec.rb +102 -0
  413. data/spec/controllers/admin/page_fields_controller_spec.rb +17 -0
  414. data/spec/controllers/admin/pages_controller_spec.rb +341 -0
  415. data/spec/controllers/admin/paginated_controller_spec.rb +26 -0
  416. data/spec/controllers/admin/preferences_controller_spec.rb +57 -0
  417. data/spec/controllers/admin/references_controller_spec.rb +15 -0
  418. data/spec/controllers/admin/snippets_controller_spec.rb +110 -0
  419. data/spec/controllers/admin/users_controller_spec.rb +101 -0
  420. data/spec/controllers/admin/welcome_controller_spec.rb +98 -0
  421. data/spec/controllers/application_controller_spec.rb +88 -0
  422. data/spec/controllers/site_controller_spec.rb +182 -0
  423. data/spec/datasets/config_dataset.rb +13 -0
  424. data/spec/datasets/file_not_found_dataset.rb +22 -0
  425. data/spec/datasets/home_page_dataset.rb +62 -0
  426. data/spec/datasets/layouts_dataset.rb +58 -0
  427. data/spec/datasets/markup_pages_dataset.rb +13 -0
  428. data/spec/datasets/pages_dataset.rb +65 -0
  429. data/spec/datasets/pages_with_layouts_dataset.rb +10 -0
  430. data/spec/datasets/snippets_dataset.rb +38 -0
  431. data/spec/datasets/users_and_pages_dataset.rb +9 -0
  432. data/spec/datasets/users_dataset.rb +56 -0
  433. data/spec/fixtures/bad_settings.rb +5 -0
  434. data/spec/fixtures/example_extension/README +3 -0
  435. data/spec/fixtures/example_extension/Rakefile +120 -0
  436. data/spec/fixtures/example_extension/example_extension.rb +21 -0
  437. data/spec/fixtures/example_extension/lib/tasks/example_extension_tasks.rake +28 -0
  438. data/spec/fixtures/example_extension/spec/spec.opts +6 -0
  439. data/spec/fixtures/example_extension/spec/spec_helper.rb +36 -0
  440. data/spec/fixtures/invalid_config.yml +11 -0
  441. data/spec/fixtures/kajam_config.yml +10 -0
  442. data/spec/fixtures/more_settings.rb +8 -0
  443. data/spec/fixtures/sample.txt +1 -0
  444. data/spec/fixtures/settings.rb +5 -0
  445. data/spec/generators/extension_controller_generator_spec.rb +97 -0
  446. data/spec/generators/extension_generator_spec.rb +237 -0
  447. data/spec/generators/extension_generators_spec_helper.rb +164 -0
  448. data/spec/generators/extension_mailer_generator_spec.rb +62 -0
  449. data/spec/generators/extension_migration_generator_spec.rb +22 -0
  450. data/spec/generators/extension_model_generator_spec.rb +63 -0
  451. data/spec/generators/instance_generator_spec.rb +159 -0
  452. data/spec/helpers/admin/export_helper_spec.rb +4 -0
  453. data/spec/helpers/admin/extensions_helper_spec.rb +4 -0
  454. data/spec/helpers/admin/layouts_helper_spec.rb +4 -0
  455. data/spec/helpers/admin/node_helper_spec.rb +160 -0
  456. data/spec/helpers/admin/pages_helper_spec.rb +66 -0
  457. data/spec/helpers/admin/preferences_helper_spec.rb +11 -0
  458. data/spec/helpers/admin/references_helper_spec.rb +124 -0
  459. data/spec/helpers/admin/regions_helper_spec.rb +47 -0
  460. data/spec/helpers/admin/snippets_helper_spec.rb +4 -0
  461. data/spec/helpers/admin/users_helper_spec.rb +11 -0
  462. data/spec/helpers/admin/welcome_helper_spec.rb +4 -0
  463. data/spec/helpers/application_helper_spec.rb +256 -0
  464. data/spec/helpers/site_helper_spec.rb +4 -0
  465. data/spec/lib/annotatable_spec.rb +86 -0
  466. data/spec/lib/autotest_spec.rb +81 -0
  467. data/spec/lib/core_ext/string_ext_spec.rb +11 -0
  468. data/spec/lib/inheritable_class_attributes_spec.rb +90 -0
  469. data/spec/lib/kajam/admin_ui/nav_tabs_spec.rb +139 -0
  470. data/spec/lib/kajam/admin_ui/region_partials_spec.rb +35 -0
  471. data/spec/lib/kajam/admin_ui/region_set_spec.rb +61 -0
  472. data/spec/lib/kajam/admin_ui_spec.rb +121 -0
  473. data/spec/lib/kajam/available_locales_spec.rb +13 -0
  474. data/spec/lib/kajam/config/definition_spec.rb +160 -0
  475. data/spec/lib/kajam/extension/script_spec.rb +473 -0
  476. data/spec/lib/kajam/extension_loader_spec.rb +271 -0
  477. data/spec/lib/kajam/extension_migrator_spec.rb +65 -0
  478. data/spec/lib/kajam/extension_spec.rb +152 -0
  479. data/spec/lib/kajam/initializer_spec.rb +178 -0
  480. data/spec/lib/kajam/resource_responses_spec.rb +207 -0
  481. data/spec/lib/kajam/taggable_spec.rb +243 -0
  482. data/spec/lib/kajam_spec.rb +30 -0
  483. data/spec/lib/locator_spec.rb +41 -0
  484. data/spec/lib/login_system_spec.rb +201 -0
  485. data/spec/lib/method_observer_spec.rb +48 -0
  486. data/spec/lib/simpleton_spec.rb +45 -0
  487. data/spec/lib/task_support_spec.rb +93 -0
  488. data/spec/lib/translation_support_spec.rb +16 -0
  489. data/spec/matchers/autotest_matchers.rb +47 -0
  490. data/spec/matchers/generator_matchers.rb +235 -0
  491. data/spec/matchers/login_system_matcher.rb +79 -0
  492. data/spec/matchers/render_form_errors_matcher.rb +62 -0
  493. data/spec/matchers/render_matcher.rb +133 -0
  494. data/spec/models/deprecated_tags_spec.rb +124 -0
  495. data/spec/models/file_not_found_page_spec.rb +35 -0
  496. data/spec/models/kajam/config_spec.rb +149 -0
  497. data/spec/models/layout_spec.rb +29 -0
  498. data/spec/models/page_context_spec.rb +66 -0
  499. data/spec/models/page_part_spec.rb +60 -0
  500. data/spec/models/page_spec.rb +700 -0
  501. data/spec/models/snippet_spec.rb +59 -0
  502. data/spec/models/standard_tags_spec.rb +1183 -0
  503. data/spec/models/status_spec.rb +64 -0
  504. data/spec/models/text_filter_spec.rb +44 -0
  505. data/spec/models/user_action_observer_spec.rb +34 -0
  506. data/spec/models/user_spec.rb +202 -0
  507. data/spec/rcov.opts +2 -0
  508. data/spec/spec.opts +4 -0
  509. data/spec/spec_helper.rb +84 -0
  510. data/test/fixtures/extensions/basic/app/controllers/basic_extension_controller.rb +7 -0
  511. data/test/fixtures/extensions/basic/app/metal/basic_metal.rb +9 -0
  512. data/test/fixtures/extensions/basic/app/models/basic_extension_mailer.rb +4 -0
  513. data/test/fixtures/extensions/basic/app/models/basic_extension_model.rb +2 -0
  514. data/test/fixtures/extensions/basic/app/views/basic_extension/index.html.erb +1 -0
  515. data/test/fixtures/extensions/basic/app/views/basic_extension/override.html.erb +1 -0
  516. data/test/fixtures/extensions/basic/app/views/basic_extension_mailer/message.text.html.erb +1 -0
  517. data/test/fixtures/extensions/basic/basic_extension.rb +11 -0
  518. data/test/fixtures/extensions/basic/config/routes.rb +3 -0
  519. data/test/fixtures/extensions/basic/db/migrate/200812131420_create_initial_schema.rb +10 -0
  520. data/test/fixtures/extensions/basic/db/migrate/200812131421_modify_initial_schema.rb +10 -0
  521. data/test/fixtures/extensions/basic/lib/new_module.rb +2 -0
  522. data/test/fixtures/extensions/basic/vendor/plugins/multiple/init.rb +1 -0
  523. data/test/fixtures/extensions/basic/vendor/plugins/multiple/lib/multiple.rb +2 -0
  524. data/test/fixtures/extensions/basic/vendor/plugins/plugin_normal/init.rb +1 -0
  525. data/test/fixtures/extensions/basic/vendor/plugins/plugin_normal/lib/normal_plugin.rb +2 -0
  526. data/test/fixtures/extensions/load_order_blue/load_order_blue_extension.rb +8 -0
  527. data/test/fixtures/extensions/load_order_green/load_order_green_extension.rb +8 -0
  528. data/test/fixtures/extensions/load_order_red/load_order_red_extension.rb +8 -0
  529. data/test/fixtures/extensions/locale/config/locales/en-uk.yml +3 -0
  530. data/test/fixtures/extensions/locale/config/locales/en.yml +3 -0
  531. data/test/fixtures/extensions/locale/locale_extension.rb +5 -0
  532. data/test/fixtures/extensions/overriding/app/metal/basic_metal.rb +9 -0
  533. data/test/fixtures/extensions/overriding/app/views/basic_extension/override.html.erb +1 -0
  534. data/test/fixtures/extensions/overriding/overriding_extension.rb +8 -0
  535. data/test/fixtures/extensions/overriding/vendor/plugins/multiple/init.rb +1 -0
  536. data/test/fixtures/extensions/overriding/vendor/plugins/multiple/lib/multiple.rb +2 -0
  537. data/test/fixtures/extensions/replacing/db/migrate/200812131420_create_initial_schema.rb +10 -0
  538. data/test/fixtures/extensions/replacing/db/migrate/201106021232_further_modify_schema.rb +7 -0
  539. data/test/fixtures/extensions/replacing/replacing_extension.rb +3 -0
  540. data/test/fixtures/extensions/routed/config/routes.rb +1 -0
  541. data/test/fixtures/extensions/routed/routed_extension.rb +2 -0
  542. data/test/fixtures/extensions/special_characters/db/migrate/001_create_initial_schema.rb +10 -0
  543. data/test/fixtures/extensions/special_characters/special_characters_extension.rb +3 -0
  544. data/test/fixtures/extensions/unrouted/unrouted_extension.rb +2 -0
  545. data/test/fixtures/extensions/upgrading/db/migrate/01_first.rb +7 -0
  546. data/test/fixtures/extensions/upgrading/db/migrate/02_second.rb +7 -0
  547. data/test/fixtures/extensions/upgrading/db/migrate/03_pending.rb +7 -0
  548. data/test/fixtures/extensions/upgrading/db/migrate/04_dont_run.rb +7 -0
  549. data/test/fixtures/extensions/upgrading/upgrading_extension.rb +2 -0
  550. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/app/views/dummy.haml +0 -0
  551. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/gem_ext_extension.rb +2 -0
  552. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/lib/gem_ext.rb +3 -0
  553. data/test/fixtures/gems/misnamed_ext-0.0.0/misnamed_ext_extension.rb +2 -0
  554. data/test/helpers/page_test_helper.rb +79 -0
  555. data/test/helpers/render_test_helper.rb +60 -0
  556. data/test/helpers/user_test_helper.rb +35 -0
  557. data/test/helpers/validation_test_helper.rb +42 -0
  558. data/test/test_helper.rb +64 -0
  559. data/vendor/extensions/debug/README +3 -0
  560. data/vendor/extensions/debug/Rakefile +136 -0
  561. data/vendor/extensions/debug/app/models/env_dump_page.rb +17 -0
  562. data/vendor/extensions/debug/config/locales/en.yml +3 -0
  563. data/vendor/extensions/debug/config/routes.rb +5 -0
  564. data/vendor/extensions/debug/debug_extension.rb +11 -0
  565. data/vendor/extensions/debug/lib/tasks/debug_extension_tasks.rake +55 -0
  566. data/vendor/extensions/debug/spec/models/env_dump_page_spec.rb +18 -0
  567. data/vendor/extensions/debug/spec/spec.opts +6 -0
  568. data/vendor/extensions/debug/spec/spec_helper.rb +36 -0
  569. data/vendor/extensions/exporter/README +5 -0
  570. data/vendor/extensions/exporter/Rakefile +116 -0
  571. data/vendor/extensions/exporter/app/controllers/admin/export_controller.rb +5 -0
  572. data/vendor/extensions/exporter/app/models/kajam/exporter.rb +41 -0
  573. data/vendor/extensions/exporter/config/locales/en.yml +3 -0
  574. data/vendor/extensions/exporter/config/routes.rb +6 -0
  575. data/vendor/extensions/exporter/cucumber.yml +1 -0
  576. data/vendor/extensions/exporter/exporter_extension.rb +8 -0
  577. data/vendor/extensions/exporter/features/support/env.rb +16 -0
  578. data/vendor/extensions/exporter/features/support/paths.rb +14 -0
  579. data/vendor/extensions/exporter/lib/tasks/exporter_extension_tasks.rake +55 -0
  580. data/vendor/extensions/exporter/spec/controllers/admin/export_controller_spec.rb +16 -0
  581. data/vendor/extensions/exporter/spec/models/kajam/exporter_spec.rb +29 -0
  582. data/vendor/extensions/exporter/spec/spec.opts +6 -0
  583. data/vendor/extensions/exporter/spec/spec_helper.rb +36 -0
  584. data/vendor/extensions/site_templates/README +3 -0
  585. data/vendor/extensions/site_templates/Rakefile +136 -0
  586. data/vendor/extensions/site_templates/db/templates/empty.yml +2 -0
  587. data/vendor/extensions/site_templates/db/templates/roasters.yml +7826 -0
  588. data/vendor/extensions/site_templates/db/templates/simple-blog.yml +251 -0
  589. data/vendor/extensions/site_templates/db/templates/styled-blog.yml +532 -0
  590. data/vendor/extensions/site_templates/lib/tasks/site_templates_extension_tasks.rake +55 -0
  591. data/vendor/extensions/site_templates/public/images/roasters/banner.jpg +0 -0
  592. data/vendor/extensions/site_templates/public/images/roasters/closelabel.gif +0 -0
  593. data/vendor/extensions/site_templates/public/images/roasters/comment.png +0 -0
  594. data/vendor/extensions/site_templates/public/images/roasters/gallery1.jpg +0 -0
  595. data/vendor/extensions/site_templates/public/images/roasters/gallery2.jpg +0 -0
  596. data/vendor/extensions/site_templates/public/images/roasters/gallery3.jpg +0 -0
  597. data/vendor/extensions/site_templates/public/images/roasters/gallery4.jpg +0 -0
  598. data/vendor/extensions/site_templates/public/images/roasters/gift.gif +0 -0
  599. data/vendor/extensions/site_templates/public/images/roasters/green.gif +0 -0
  600. data/vendor/extensions/site_templates/public/images/roasters/nav-background.gif +0 -0
  601. data/vendor/extensions/site_templates/public/images/roasters/nav-divider.gif +0 -0
  602. data/vendor/extensions/site_templates/public/images/roasters/nextlabel.gif +0 -0
  603. data/vendor/extensions/site_templates/public/images/roasters/open.gif +0 -0
  604. data/vendor/extensions/site_templates/public/images/roasters/preview-1.jpg +0 -0
  605. data/vendor/extensions/site_templates/public/images/roasters/preview.jpg +0 -0
  606. data/vendor/extensions/site_templates/public/images/roasters/prevlabel.gif +0 -0
  607. data/vendor/extensions/site_templates/public/images/roasters/prize.gif +0 -0
  608. data/vendor/extensions/site_templates/public/images/roasters/recycle.gif +0 -0
  609. data/vendor/extensions/site_templates/public/images/roasters/rss.gif +0 -0
  610. data/vendor/extensions/site_templates/public/images/roasters/thumb-grinder.jpg +0 -0
  611. data/vendor/extensions/site_templates/public/images/roasters/thumb-grower.jpg +0 -0
  612. data/vendor/extensions/site_templates/public/images/roasters/thumb-roaster.jpg +0 -0
  613. data/vendor/extensions/site_templates/public/images/roasters/truck.gif +0 -0
  614. data/vendor/extensions/site_templates/site_templates_extension.rb +8 -0
  615. data/vendor/extensions/textile_filter/README +1 -0
  616. data/vendor/extensions/textile_filter/Rakefile +120 -0
  617. data/vendor/extensions/textile_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  618. data/vendor/extensions/textile_filter/lib/textile_filter.rb +6 -0
  619. data/vendor/extensions/textile_filter/lib/textile_tags.rb +24 -0
  620. data/vendor/extensions/textile_filter/spec/models/textile_filter_spec.rb +19 -0
  621. data/vendor/extensions/textile_filter/spec/spec.opts +6 -0
  622. data/vendor/extensions/textile_filter/spec/spec_helper.rb +36 -0
  623. data/vendor/extensions/textile_filter/test/test_helper.rb +19 -0
  624. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +13 -0
  625. data/vendor/extensions/textile_filter/textile.html +115 -0
  626. data/vendor/extensions/textile_filter/textile_filter_extension.rb +10 -0
  627. data/vendor/highline/CHANGELOG +222 -0
  628. data/vendor/highline/INSTALL +35 -0
  629. data/vendor/highline/LICENSE +7 -0
  630. data/vendor/highline/README +63 -0
  631. data/vendor/highline/Rakefile +82 -0
  632. data/vendor/highline/TODO +6 -0
  633. data/vendor/highline/examples/ansi_colors.rb +38 -0
  634. data/vendor/highline/examples/asking_for_arrays.rb +18 -0
  635. data/vendor/highline/examples/basic_usage.rb +75 -0
  636. data/vendor/highline/examples/color_scheme.rb +32 -0
  637. data/vendor/highline/examples/limit.rb +12 -0
  638. data/vendor/highline/examples/menus.rb +65 -0
  639. data/vendor/highline/examples/overwrite.rb +19 -0
  640. data/vendor/highline/examples/page_and_wrap.rb +322 -0
  641. data/vendor/highline/examples/password.rb +7 -0
  642. data/vendor/highline/examples/trapping_eof.rb +22 -0
  643. data/vendor/highline/examples/using_readline.rb +17 -0
  644. data/vendor/highline/lib/highline.rb +758 -0
  645. data/vendor/highline/lib/highline/color_scheme.rb +120 -0
  646. data/vendor/highline/lib/highline/compatibility.rb +17 -0
  647. data/vendor/highline/lib/highline/import.rb +43 -0
  648. data/vendor/highline/lib/highline/menu.rb +395 -0
  649. data/vendor/highline/lib/highline/question.rb +463 -0
  650. data/vendor/highline/lib/highline/system_extensions.rb +193 -0
  651. data/vendor/highline/setup.rb +1360 -0
  652. data/vendor/highline/test/tc_color_scheme.rb +56 -0
  653. data/vendor/highline/test/tc_highline.rb +823 -0
  654. data/vendor/highline/test/tc_import.rb +54 -0
  655. data/vendor/highline/test/tc_menu.rb +429 -0
  656. data/vendor/highline/test/ts_all.rb +15 -0
  657. data/vendor/plugins/acts_as_tree/README +26 -0
  658. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  659. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  660. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
  661. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  662. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  663. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  664. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  665. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  666. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  667. data/vendor/plugins/dataset/CHANGELOG +59 -0
  668. data/vendor/plugins/dataset/LICENSE +19 -0
  669. data/vendor/plugins/dataset/README +111 -0
  670. data/vendor/plugins/dataset/Rakefile +31 -0
  671. data/vendor/plugins/dataset/TODO +15 -0
  672. data/vendor/plugins/dataset/VERSION.yml +4 -0
  673. data/vendor/plugins/dataset/dataset.gemspec +33 -0
  674. data/vendor/plugins/dataset/lib/dataset.rb +128 -0
  675. data/vendor/plugins/dataset/lib/dataset/base.rb +157 -0
  676. data/vendor/plugins/dataset/lib/dataset/collection.rb +19 -0
  677. data/vendor/plugins/dataset/lib/dataset/database/base.rb +30 -0
  678. data/vendor/plugins/dataset/lib/dataset/database/mysql.rb +34 -0
  679. data/vendor/plugins/dataset/lib/dataset/database/postgresql.rb +34 -0
  680. data/vendor/plugins/dataset/lib/dataset/database/sqlite3.rb +32 -0
  681. data/vendor/plugins/dataset/lib/dataset/extensions/cucumber.rb +21 -0
  682. data/vendor/plugins/dataset/lib/dataset/extensions/rspec.rb +21 -0
  683. data/vendor/plugins/dataset/lib/dataset/extensions/test_unit.rb +60 -0
  684. data/vendor/plugins/dataset/lib/dataset/instance_methods.rb +10 -0
  685. data/vendor/plugins/dataset/lib/dataset/load.rb +37 -0
  686. data/vendor/plugins/dataset/lib/dataset/record/fixture.rb +73 -0
  687. data/vendor/plugins/dataset/lib/dataset/record/meta.rb +66 -0
  688. data/vendor/plugins/dataset/lib/dataset/record/model.rb +50 -0
  689. data/vendor/plugins/dataset/lib/dataset/resolver.rb +110 -0
  690. data/vendor/plugins/dataset/lib/dataset/session.rb +35 -0
  691. data/vendor/plugins/dataset/lib/dataset/session_binding.rb +307 -0
  692. data/vendor/plugins/dataset/lib/dataset/version.rb +9 -0
  693. data/vendor/plugins/dataset/plugit/descriptor.rb +25 -0
  694. data/vendor/plugins/dataset/spec/dataset/cucumber_spec.rb +54 -0
  695. data/vendor/plugins/dataset/spec/dataset/database/base_spec.rb +21 -0
  696. data/vendor/plugins/dataset/spec/dataset/record/meta_spec.rb +14 -0
  697. data/vendor/plugins/dataset/spec/dataset/resolver_spec.rb +110 -0
  698. data/vendor/plugins/dataset/spec/dataset/rspec_spec.rb +133 -0
  699. data/vendor/plugins/dataset/spec/dataset/session_binding_spec.rb +198 -0
  700. data/vendor/plugins/dataset/spec/dataset/session_spec.rb +299 -0
  701. data/vendor/plugins/dataset/spec/dataset/test_unit_spec.rb +210 -0
  702. data/vendor/plugins/dataset/spec/fixtures/datasets/constant_not_defined.rb +0 -0
  703. data/vendor/plugins/dataset/spec/fixtures/datasets/ending_with_dataset.rb +2 -0
  704. data/vendor/plugins/dataset/spec/fixtures/datasets/exact_name.rb +2 -0
  705. data/vendor/plugins/dataset/spec/fixtures/datasets/not_a_dataset_base.rb +2 -0
  706. data/vendor/plugins/dataset/spec/fixtures/more_datasets/in_another_directory.rb +2 -0
  707. data/vendor/plugins/dataset/spec/models.rb +18 -0
  708. data/vendor/plugins/dataset/spec/schema.rb +26 -0
  709. data/vendor/plugins/dataset/spec/spec.opts +7 -0
  710. data/vendor/plugins/dataset/spec/spec_helper.rb +47 -0
  711. data/vendor/plugins/dataset/spec/stubs/mini_rails.rb +18 -0
  712. data/vendor/plugins/dataset/spec/stubs/test_help.rb +1 -0
  713. data/vendor/plugins/dataset/tasks/dataset.rake +19 -0
  714. data/vendor/radius/CHANGELOG +33 -0
  715. data/vendor/radius/LICENSE +19 -0
  716. data/vendor/radius/QUICKSTART.rdoc +322 -0
  717. data/vendor/radius/README.rdoc +102 -0
  718. data/vendor/radius/Rakefile +8 -0
  719. data/vendor/radius/VERSION +1 -0
  720. data/vendor/radius/lib/radius.rb +10 -0
  721. data/vendor/radius/lib/radius/context.rb +139 -0
  722. data/vendor/radius/lib/radius/delegating_open_struct.rb +31 -0
  723. data/vendor/radius/lib/radius/error.rb +43 -0
  724. data/vendor/radius/lib/radius/parse_tag.rb +24 -0
  725. data/vendor/radius/lib/radius/parser.rb +65 -0
  726. data/vendor/radius/lib/radius/parser/scan.rb +678 -0
  727. data/vendor/radius/lib/radius/parser/scan.rl +124 -0
  728. data/vendor/radius/lib/radius/tag_binding.rb +71 -0
  729. data/vendor/radius/lib/radius/tag_definitions.rb +78 -0
  730. data/vendor/radius/lib/radius/utility.rb +30 -0
  731. data/vendor/radius/lib/radius/version.rb +8 -0
  732. data/vendor/radius/radius.gemspec +71 -0
  733. data/vendor/radius/tasks/jeweler.rake +21 -0
  734. data/vendor/radius/tasks/rdoc.rake +13 -0
  735. data/vendor/radius/tasks/scan.rake +27 -0
  736. data/vendor/radius/tasks/test.rake +7 -0
  737. data/vendor/radius/test/context_test.rb +61 -0
  738. data/vendor/radius/test/parser_test.rb +295 -0
  739. data/vendor/radius/test/quickstart_test.rb +153 -0
  740. data/vendor/radius/test/test_helper.rb +29 -0
  741. data/vendor/rails/Rakefile +83 -0
  742. data/vendor/rails/actionmailer/CHANGELOG +387 -0
  743. data/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  744. data/vendor/rails/actionmailer/README +149 -0
  745. data/vendor/rails/actionmailer/Rakefile +99 -0
  746. data/vendor/rails/actionmailer/install.rb +30 -0
  747. data/vendor/rails/actionmailer/lib/action_mailer.rb +62 -0
  748. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  749. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +739 -0
  750. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +113 -0
  751. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +17 -0
  752. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +107 -0
  753. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +55 -0
  754. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +62 -0
  755. data/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +64 -0
  756. data/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +68 -0
  757. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +7 -0
  758. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  759. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text_format.rb +10 -0
  760. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail.rb +6 -0
  761. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile +18 -0
  762. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/address.rb +392 -0
  763. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb +65 -0
  764. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/base64.rb +46 -0
  765. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/compat.rb +41 -0
  766. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/config.rb +67 -0
  767. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/core_extensions.rb +63 -0
  768. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/encode.rb +590 -0
  769. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/header.rb +962 -0
  770. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/index.rb +9 -0
  771. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/interface.rb +1162 -0
  772. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/loader.rb +3 -0
  773. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mail.rb +578 -0
  774. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mailbox.rb +496 -0
  775. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/main.rb +6 -0
  776. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mbox.rb +3 -0
  777. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/net.rb +250 -0
  778. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/obsolete.rb +132 -0
  779. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb +1060 -0
  780. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y +416 -0
  781. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/port.rb +379 -0
  782. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/quoting.rb +164 -0
  783. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/require_arch.rb +58 -0
  784. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner.rb +49 -0
  785. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner_r.rb +262 -0
  786. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/stringio.rb +280 -0
  787. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/utils.rb +362 -0
  788. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING +504 -0
  789. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README +12 -0
  790. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
  791. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
  792. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
  793. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +238 -0
  794. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
  795. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
  796. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
  797. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
  798. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +89 -0
  799. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
  800. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
  801. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
  802. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
  803. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
  804. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
  805. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
  806. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
  807. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
  808. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
  809. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
  810. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
  811. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
  812. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
  813. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
  814. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
  815. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
  816. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
  817. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
  818. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +45 -0
  819. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
  820. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
  821. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +56 -0
  822. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
  823. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +168 -0
  824. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
  825. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/version.rb +39 -0
  826. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +17 -0
  827. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  828. data/vendor/rails/actionmailer/lib/actionmailer.rb +2 -0
  829. data/vendor/rails/actionmailer/test/abstract_unit.rb +62 -0
  830. data/vendor/rails/actionmailer/test/asset_host_test.rb +54 -0
  831. data/vendor/rails/actionmailer/test/delivery_method_test.rb +51 -0
  832. data/vendor/rails/actionmailer/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  833. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  834. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.html.erb +1 -0
  835. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +1 -0
  836. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  837. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  838. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  839. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  840. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +1 -0
  841. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  842. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  843. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +5 -0
  844. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  845. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  846. data/vendor/rails/actionmailer/test/fixtures/layouts/spam.html.erb +1 -0
  847. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  848. data/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  849. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  850. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  851. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  852. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  853. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  854. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  855. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  856. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  857. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  858. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  859. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  860. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  861. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  862. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +100 -0
  863. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  864. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  865. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  866. data/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  867. data/vendor/rails/actionmailer/test/fixtures/test_mailer/body_ivar.erb +2 -0
  868. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  869. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  870. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  871. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  872. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  873. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +10 -0
  874. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  875. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  876. data/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  877. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +2 -0
  878. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  879. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  880. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  881. data/vendor/rails/actionmailer/test/mail_helper_test.rb +95 -0
  882. data/vendor/rails/actionmailer/test/mail_layout_test.rb +123 -0
  883. data/vendor/rails/actionmailer/test/mail_render_test.rb +116 -0
  884. data/vendor/rails/actionmailer/test/mail_service_test.rb +1145 -0
  885. data/vendor/rails/actionmailer/test/quoting_test.rb +105 -0
  886. data/vendor/rails/actionmailer/test/test_helper_test.rb +129 -0
  887. data/vendor/rails/actionmailer/test/tmail_test.rb +22 -0
  888. data/vendor/rails/actionmailer/test/url_test.rb +76 -0
  889. data/vendor/rails/actionpack/CHANGELOG +5250 -0
  890. data/vendor/rails/actionpack/MIT-LICENSE +21 -0
  891. data/vendor/rails/actionpack/README +409 -0
  892. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +24 -0
  893. data/vendor/rails/actionpack/Rakefile +160 -0
  894. data/vendor/rails/actionpack/install.rb +30 -0
  895. data/vendor/rails/actionpack/lib/action_controller.rb +113 -0
  896. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +55 -0
  897. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +21 -0
  898. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +169 -0
  899. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +146 -0
  900. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +638 -0
  901. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +127 -0
  902. data/vendor/rails/actionpack/lib/action_controller/base.rb +1425 -0
  903. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +107 -0
  904. data/vendor/rails/actionpack/lib/action_controller/caching.rb +71 -0
  905. data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +177 -0
  906. data/vendor/rails/actionpack/lib/action_controller/caching/fragments.rb +120 -0
  907. data/vendor/rails/actionpack/lib/action_controller/caching/pages.rb +152 -0
  908. data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +45 -0
  909. data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +55 -0
  910. data/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +15 -0
  911. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +112 -0
  912. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  913. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  914. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +77 -0
  915. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +197 -0
  916. data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +133 -0
  917. data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +87 -0
  918. data/vendor/rails/actionpack/lib/action_controller/filters.rb +680 -0
  919. data/vendor/rails/actionpack/lib/action_controller/flash.rb +213 -0
  920. data/vendor/rails/actionpack/lib/action_controller/headers.rb +33 -0
  921. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +225 -0
  922. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +309 -0
  923. data/vendor/rails/actionpack/lib/action_controller/integration.rb +708 -0
  924. data/vendor/rails/actionpack/lib/action_controller/layout.rb +286 -0
  925. data/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb +119 -0
  926. data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +14 -0
  927. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +193 -0
  928. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +212 -0
  929. data/vendor/rails/actionpack/lib/action_controller/mime_types.rb +21 -0
  930. data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +77 -0
  931. data/vendor/rails/actionpack/lib/action_controller/performance_test.rb +15 -0
  932. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +189 -0
  933. data/vendor/rails/actionpack/lib/action_controller/rack_lint_patch.rb +36 -0
  934. data/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +104 -0
  935. data/vendor/rails/actionpack/lib/action_controller/reloader.rb +54 -0
  936. data/vendor/rails/actionpack/lib/action_controller/request.rb +493 -0
  937. data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +116 -0
  938. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +183 -0
  939. data/vendor/rails/actionpack/lib/action_controller/resources.rb +682 -0
  940. data/vendor/rails/actionpack/lib/action_controller/response.rb +236 -0
  941. data/vendor/rails/actionpack/lib/action_controller/routing.rb +388 -0
  942. data/vendor/rails/actionpack/lib/action_controller/routing/builder.rb +197 -0
  943. data/vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb +130 -0
  944. data/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb +167 -0
  945. data/vendor/rails/actionpack/lib/action_controller/routing/route.rb +265 -0
  946. data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +503 -0
  947. data/vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb +49 -0
  948. data/vendor/rails/actionpack/lib/action_controller/routing/segments.rb +343 -0
  949. data/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb +275 -0
  950. data/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +240 -0
  951. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +60 -0
  952. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +54 -0
  953. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  954. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +181 -0
  955. data/vendor/rails/actionpack/lib/action_controller/string_coercion.rb +29 -0
  956. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  957. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +26 -0
  958. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  959. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +29 -0
  960. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  961. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  962. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +21 -0
  963. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  964. data/vendor/rails/actionpack/lib/action_controller/test_case.rb +209 -0
  965. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +580 -0
  966. data/vendor/rails/actionpack/lib/action_controller/translation.rb +13 -0
  967. data/vendor/rails/actionpack/lib/action_controller/uploaded_file.rb +44 -0
  968. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +229 -0
  969. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner.rb +16 -0
  970. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  971. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
  972. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  973. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  974. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  975. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  976. data/vendor/rails/actionpack/lib/action_controller/verification.rb +130 -0
  977. data/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  978. data/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  979. data/vendor/rails/actionpack/lib/action_view.rb +58 -0
  980. data/vendor/rails/actionpack/lib/action_view/base.rb +362 -0
  981. data/vendor/rails/actionpack/lib/action_view/helpers.rb +61 -0
  982. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +305 -0
  983. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +695 -0
  984. data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +198 -0
  985. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +54 -0
  986. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +39 -0
  987. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +136 -0
  988. data/vendor/rails/actionpack/lib/action_view/helpers/csrf_helper.rb +14 -0
  989. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +989 -0
  990. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +38 -0
  991. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +1118 -0
  992. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +599 -0
  993. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +490 -0
  994. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +208 -0
  995. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +308 -0
  996. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1305 -0
  997. data/vendor/rails/actionpack/lib/action_view/helpers/raw_output_helper.rb +9 -0
  998. data/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +20 -0
  999. data/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +58 -0
  1000. data/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +251 -0
  1001. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
  1002. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +151 -0
  1003. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +597 -0
  1004. data/vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb +67 -0
  1005. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +637 -0
  1006. data/vendor/rails/actionpack/lib/action_view/inline_template.rb +19 -0
  1007. data/vendor/rails/actionpack/lib/action_view/locale/en.yml +117 -0
  1008. data/vendor/rails/actionpack/lib/action_view/partials.rb +241 -0
  1009. data/vendor/rails/actionpack/lib/action_view/paths.rb +77 -0
  1010. data/vendor/rails/actionpack/lib/action_view/reloadable_template.rb +117 -0
  1011. data/vendor/rails/actionpack/lib/action_view/renderable.rb +109 -0
  1012. data/vendor/rails/actionpack/lib/action_view/renderable_partial.rb +53 -0
  1013. data/vendor/rails/actionpack/lib/action_view/template.rb +252 -0
  1014. data/vendor/rails/actionpack/lib/action_view/template_error.rb +99 -0
  1015. data/vendor/rails/actionpack/lib/action_view/template_handler.rb +34 -0
  1016. data/vendor/rails/actionpack/lib/action_view/template_handlers.rb +48 -0
  1017. data/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +17 -0
  1018. data/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +25 -0
  1019. data/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +13 -0
  1020. data/vendor/rails/actionpack/lib/action_view/test_case.rb +162 -0
  1021. data/vendor/rails/actionpack/lib/actionpack.rb +2 -0
  1022. data/vendor/rails/actionpack/test/abstract_unit.rb +78 -0
  1023. data/vendor/rails/actionpack/test/active_record_unit.rb +104 -0
  1024. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +221 -0
  1025. data/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
  1026. data/vendor/rails/actionpack/test/adv_attr_test.rb +20 -0
  1027. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +545 -0
  1028. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +37 -0
  1029. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +735 -0
  1030. data/vendor/rails/actionpack/test/controller/base_test.rb +217 -0
  1031. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +32 -0
  1032. data/vendor/rails/actionpack/test/controller/caching_test.rb +743 -0
  1033. data/vendor/rails/actionpack/test/controller/capture_test.rb +66 -0
  1034. data/vendor/rails/actionpack/test/controller/content_type_test.rb +168 -0
  1035. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  1036. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  1037. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  1038. data/vendor/rails/actionpack/test/controller/cookie_test.rb +208 -0
  1039. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
  1040. data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +144 -0
  1041. data/vendor/rails/actionpack/test/controller/dom_assertions_test.rb +53 -0
  1042. data/vendor/rails/actionpack/test/controller/failsafe_test.rb +60 -0
  1043. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +33 -0
  1044. data/vendor/rails/actionpack/test/controller/fake_models.rb +19 -0
  1045. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +52 -0
  1046. data/vendor/rails/actionpack/test/controller/filters_test.rb +885 -0
  1047. data/vendor/rails/actionpack/test/controller/flash_test.rb +174 -0
  1048. data/vendor/rails/actionpack/test/controller/header_test.rb +14 -0
  1049. data/vendor/rails/actionpack/test/controller/helper_test.rb +224 -0
  1050. data/vendor/rails/actionpack/test/controller/html-scanner/cdata_node_test.rb +15 -0
  1051. data/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +148 -0
  1052. data/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +89 -0
  1053. data/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +274 -0
  1054. data/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +238 -0
  1055. data/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +50 -0
  1056. data/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +131 -0
  1057. data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +113 -0
  1058. data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +254 -0
  1059. data/vendor/rails/actionpack/test/controller/integration_test.rb +526 -0
  1060. data/vendor/rails/actionpack/test/controller/layout_test.rb +215 -0
  1061. data/vendor/rails/actionpack/test/controller/localized_templates_test.rb +24 -0
  1062. data/vendor/rails/actionpack/test/controller/logging_test.rb +46 -0
  1063. data/vendor/rails/actionpack/test/controller/middleware_stack_test.rb +90 -0
  1064. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +536 -0
  1065. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +93 -0
  1066. data/vendor/rails/actionpack/test/controller/output_escaping_test.rb +19 -0
  1067. data/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +297 -0
  1068. data/vendor/rails/actionpack/test/controller/rack_test.rb +308 -0
  1069. data/vendor/rails/actionpack/test/controller/record_identifier_test.rb +139 -0
  1070. data/vendor/rails/actionpack/test/controller/redirect_test.rb +285 -0
  1071. data/vendor/rails/actionpack/test/controller/reloader_test.rb +125 -0
  1072. data/vendor/rails/actionpack/test/controller/render_test.rb +1783 -0
  1073. data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +65 -0
  1074. data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +177 -0
  1075. data/vendor/rails/actionpack/test/controller/request/query_string_parsing_test.rb +120 -0
  1076. data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
  1077. data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
  1078. data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +103 -0
  1079. data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +233 -0
  1080. data/vendor/rails/actionpack/test/controller/request_test.rb +395 -0
  1081. data/vendor/rails/actionpack/test/controller/rescue_test.rb +541 -0
  1082. data/vendor/rails/actionpack/test/controller/resources_test.rb +1393 -0
  1083. data/vendor/rails/actionpack/test/controller/routing_test.rb +2592 -0
  1084. data/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  1085. data/vendor/rails/actionpack/test/controller/send_file_test.rb +171 -0
  1086. data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +310 -0
  1087. data/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +187 -0
  1088. data/vendor/rails/actionpack/test/controller/session/test_session_test.rb +58 -0
  1089. data/vendor/rails/actionpack/test/controller/test_test.rb +700 -0
  1090. data/vendor/rails/actionpack/test/controller/translation_test.rb +26 -0
  1091. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +395 -0
  1092. data/vendor/rails/actionpack/test/controller/verification_test.rb +270 -0
  1093. data/vendor/rails/actionpack/test/controller/view_paths_test.rb +141 -0
  1094. data/vendor/rails/actionpack/test/controller/webservice_test.rb +260 -0
  1095. data/vendor/rails/actionpack/test/fixtures/_top_level_partial.html.erb +1 -0
  1096. data/vendor/rails/actionpack/test/fixtures/_top_level_partial_only.erb +1 -0
  1097. data/vendor/rails/actionpack/test/fixtures/addresses/list.erb +1 -0
  1098. data/vendor/rails/actionpack/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  1099. data/vendor/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  1100. data/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  1101. data/vendor/rails/actionpack/test/fixtures/company.rb +10 -0
  1102. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  1103. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  1104. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  1105. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  1106. data/vendor/rails/actionpack/test/fixtures/customers/_customer.html.erb +1 -0
  1107. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +49 -0
  1108. data/vendor/rails/actionpack/test/fixtures/developer.rb +9 -0
  1109. data/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  1110. data/vendor/rails/actionpack/test/fixtures/developers/_developer.erb +1 -0
  1111. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  1112. data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +1 -0
  1113. data/vendor/rails/actionpack/test/fixtures/fun/games/_game.erb +1 -0
  1114. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +1 -0
  1115. data/vendor/rails/actionpack/test/fixtures/fun/serious/games/_game.erb +1 -0
  1116. data/vendor/rails/actionpack/test/fixtures/functional_caching/_partial.erb +3 -0
  1117. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  1118. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  1119. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  1120. data/vendor/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  1121. data/vendor/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  1122. data/vendor/rails/actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  1123. data/vendor/rails/actionpack/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  1124. data/vendor/rails/actionpack/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  1125. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  1126. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  1127. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  1128. data/vendor/rails/actionpack/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  1129. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  1130. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  1131. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  1132. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  1133. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  1134. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  1135. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  1136. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  1137. data/vendor/rails/actionpack/test/fixtures/layouts/_column.html.erb +2 -0
  1138. data/vendor/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +3 -0
  1139. data/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  1140. data/vendor/rails/actionpack/test/fixtures/layouts/default_html.html.erb +1 -0
  1141. data/vendor/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +3 -0
  1142. data/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +1 -0
  1143. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  1144. data/vendor/rails/actionpack/test/fixtures/layouts/xhr.html.erb +2 -0
  1145. data/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  1146. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.de.html +1 -0
  1147. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.en.html +1 -0
  1148. data/vendor/rails/actionpack/test/fixtures/mascot.rb +3 -0
  1149. data/vendor/rails/actionpack/test/fixtures/mascots.yml +4 -0
  1150. data/vendor/rails/actionpack/test/fixtures/mascots/_mascot.html.erb +1 -0
  1151. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  1152. data/vendor/rails/actionpack/test/fixtures/multipart/boundary_problem_file +10 -0
  1153. data/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  1154. data/vendor/rails/actionpack/test/fixtures/multipart/empty +10 -0
  1155. data/vendor/rails/actionpack/test/fixtures/multipart/hello.txt +1 -0
  1156. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  1157. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  1158. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  1159. data/vendor/rails/actionpack/test/fixtures/multipart/none +9 -0
  1160. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  1161. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  1162. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +1 -0
  1163. data/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +1 -0
  1164. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  1165. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  1166. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  1167. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  1168. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  1169. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  1170. data/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  1171. data/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  1172. data/vendor/rails/actionpack/test/fixtures/projects/_project.erb +1 -0
  1173. data/vendor/rails/actionpack/test/fixtures/public/404.html +1 -0
  1174. data/vendor/rails/actionpack/test/fixtures/public/500.da.html +1 -0
  1175. data/vendor/rails/actionpack/test/fixtures/public/500.html +1 -0
  1176. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +23 -0
  1177. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +63 -0
  1178. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  1179. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  1180. data/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +1 -0
  1181. data/vendor/rails/actionpack/test/fixtures/public/javascripts/controls.js +1 -0
  1182. data/vendor/rails/actionpack/test/fixtures/public/javascripts/dragdrop.js +1 -0
  1183. data/vendor/rails/actionpack/test/fixtures/public/javascripts/effects.js +1 -0
  1184. data/vendor/rails/actionpack/test/fixtures/public/javascripts/prototype.js +1 -0
  1185. data/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +1 -0
  1186. data/vendor/rails/actionpack/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  1187. data/vendor/rails/actionpack/test/fixtures/public/javascripts/version.1.0.js +1 -0
  1188. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +1 -0
  1189. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +1 -0
  1190. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  1191. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  1192. data/vendor/rails/actionpack/test/fixtures/quiz/questions/_question.html.erb +1 -0
  1193. data/vendor/rails/actionpack/test/fixtures/replies.yml +15 -0
  1194. data/vendor/rails/actionpack/test/fixtures/replies/_reply.erb +1 -0
  1195. data/vendor/rails/actionpack/test/fixtures/reply.rb +7 -0
  1196. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  1197. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  1198. data/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  1199. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  1200. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  1201. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  1202. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  1203. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  1204. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  1205. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  1206. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  1207. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  1208. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  1209. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  1210. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +1 -0
  1211. data/vendor/rails/actionpack/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +10 -0
  1212. data/vendor/rails/actionpack/test/fixtures/shared.html.erb +1 -0
  1213. data/vendor/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  1214. data/vendor/rails/actionpack/test/fixtures/test/_counter.html.erb +1 -0
  1215. data/vendor/rails/actionpack/test/fixtures/test/_customer.erb +1 -0
  1216. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter.erb +1 -0
  1217. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter_with_as.erb +1 -0
  1218. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +1 -0
  1219. data/vendor/rails/actionpack/test/fixtures/test/_customer_with_var.erb +1 -0
  1220. data/vendor/rails/actionpack/test/fixtures/test/_form.erb +1 -0
  1221. data/vendor/rails/actionpack/test/fixtures/test/_from_helper.erb +1 -0
  1222. data/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +1 -0
  1223. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +2 -0
  1224. data/vendor/rails/actionpack/test/fixtures/test/_hello.builder +1 -0
  1225. data/vendor/rails/actionpack/test/fixtures/test/_labelling_form.erb +1 -0
  1226. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  1227. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  1228. data/vendor/rails/actionpack/test/fixtures/test/_local_inspector.html.erb +1 -0
  1229. data/vendor/rails/actionpack/test/fixtures/test/_one.html.erb +1 -0
  1230. data/vendor/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  1231. data/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  1232. data/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  1233. data/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  1234. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +1 -0
  1235. data/vendor/rails/actionpack/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  1236. data/vendor/rails/actionpack/test/fixtures/test/_person.erb +2 -0
  1237. data/vendor/rails/actionpack/test/fixtures/test/_raise.html.erb +1 -0
  1238. data/vendor/rails/actionpack/test/fixtures/test/_two.html.erb +1 -0
  1239. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial.html.erb +1 -0
  1240. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
  1241. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +2 -0
  1242. data/vendor/rails/actionpack/test/fixtures/test/array_translation.erb +1 -0
  1243. data/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  1244. data/vendor/rails/actionpack/test/fixtures/test/capturing.erb +4 -0
  1245. data/vendor/rails/actionpack/test/fixtures/test/content_for.erb +2 -0
  1246. data/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +3 -0
  1247. data/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +2 -0
  1248. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  1249. data/vendor/rails/actionpack/test/fixtures/test/dont_pick_me +1 -0
  1250. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  1251. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  1252. data/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  1253. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  1254. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  1255. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  1256. data/vendor/rails/actionpack/test/fixtures/test/greeting.erb +1 -0
  1257. data/vendor/rails/actionpack/test/fixtures/test/greeting.js.rjs +1 -0
  1258. data/vendor/rails/actionpack/test/fixtures/test/hello.builder +4 -0
  1259. data/vendor/rails/actionpack/test/fixtures/test/hello_world.da.html.erb +1 -0
  1260. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  1261. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb~ +1 -0
  1262. data/vendor/rails/actionpack/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  1263. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +3 -0
  1264. data/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  1265. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  1266. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  1267. data/vendor/rails/actionpack/test/fixtures/test/hyphen-ated.erb +1 -0
  1268. data/vendor/rails/actionpack/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  1269. data/vendor/rails/actionpack/test/fixtures/test/list.erb +1 -0
  1270. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  1271. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.erb~ +1 -0
  1272. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  1273. data/vendor/rails/actionpack/test/fixtures/test/nested_layout.erb +3 -0
  1274. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  1275. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +4 -0
  1276. data/vendor/rails/actionpack/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
  1277. data/vendor/rails/actionpack/test/fixtures/test/render_file_from_template.html.erb +1 -0
  1278. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  1279. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  1280. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
  1281. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  1282. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  1283. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
  1284. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +1 -0
  1285. data/vendor/rails/actionpack/test/fixtures/test/scoped_array_translation.erb +1 -0
  1286. data/vendor/rails/actionpack/test/fixtures/test/sub_template_raise.html.erb +1 -0
  1287. data/vendor/rails/actionpack/test/fixtures/test/template.erb +1 -0
  1288. data/vendor/rails/actionpack/test/fixtures/test/translation.erb +1 -0
  1289. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +9 -0
  1290. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  1291. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  1292. data/vendor/rails/actionpack/test/fixtures/test/utf8.html.erb +4 -0
  1293. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic.html.erb +5 -0
  1294. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
  1295. data/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  1296. data/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  1297. data/vendor/rails/actionpack/test/fixtures/topics/_topic.html.erb +1 -0
  1298. data/vendor/rails/actionpack/test/template/active_record_helper_i18n_test.rb +51 -0
  1299. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +302 -0
  1300. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +770 -0
  1301. data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +315 -0
  1302. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +86 -0
  1303. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +204 -0
  1304. data/vendor/rails/actionpack/test/template/date_helper_i18n_test.rb +121 -0
  1305. data/vendor/rails/actionpack/test/template/date_helper_test.rb +2603 -0
  1306. data/vendor/rails/actionpack/test/template/erb_util_test.rb +36 -0
  1307. data/vendor/rails/actionpack/test/template/form_helper_test.rb +1447 -0
  1308. data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +27 -0
  1309. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +811 -0
  1310. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +356 -0
  1311. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +106 -0
  1312. data/vendor/rails/actionpack/test/template/number_helper_i18n_test.rb +69 -0
  1313. data/vendor/rails/actionpack/test/template/number_helper_test.rb +132 -0
  1314. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +639 -0
  1315. data/vendor/rails/actionpack/test/template/raw_output_helper_test.rb +21 -0
  1316. data/vendor/rails/actionpack/test/template/record_tag_helper_test.rb +58 -0
  1317. data/vendor/rails/actionpack/test/template/render_test.rb +329 -0
  1318. data/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +57 -0
  1319. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  1320. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +98 -0
  1321. data/vendor/rails/actionpack/test/template/template_test.rb +32 -0
  1322. data/vendor/rails/actionpack/test/template/test_test.rb +54 -0
  1323. data/vendor/rails/actionpack/test/template/text_helper_test.rb +597 -0
  1324. data/vendor/rails/actionpack/test/template/translation_helper_test.rb +95 -0
  1325. data/vendor/rails/actionpack/test/template/url_helper_test.rb +641 -0
  1326. data/vendor/rails/actionpack/test/testing_sandbox.rb +15 -0
  1327. data/vendor/rails/actionpack/test/view/test_case_test.rb +176 -0
  1328. data/vendor/rails/activemodel/CHANGES +12 -0
  1329. data/vendor/rails/activemodel/README +21 -0
  1330. data/vendor/rails/activemodel/Rakefile +24 -0
  1331. data/vendor/rails/activemodel/lib/active_model.rb +5 -0
  1332. data/vendor/rails/activemodel/lib/active_model/base.rb +8 -0
  1333. data/vendor/rails/activemodel/lib/active_model/callbacks.rb +7 -0
  1334. data/vendor/rails/activemodel/lib/active_model/core.rb +7 -0
  1335. data/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +38 -0
  1336. data/vendor/rails/activemodel/lib/active_model/errors.rb +82 -0
  1337. data/vendor/rails/activemodel/lib/active_model/observing.rb +98 -0
  1338. data/vendor/rails/activemodel/lib/active_model/state_machine.rb +68 -0
  1339. data/vendor/rails/activemodel/lib/active_model/state_machine/event.rb +64 -0
  1340. data/vendor/rails/activemodel/lib/active_model/state_machine/machine.rb +78 -0
  1341. data/vendor/rails/activemodel/lib/active_model/state_machine/state.rb +47 -0
  1342. data/vendor/rails/activemodel/lib/active_model/state_machine/state_transition.rb +40 -0
  1343. data/vendor/rails/activemodel/lib/active_model/validations.rb +126 -0
  1344. data/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +45 -0
  1345. data/vendor/rails/activemodel/lib/active_model/validations/associated.rb +46 -0
  1346. data/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +44 -0
  1347. data/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +37 -0
  1348. data/vendor/rails/activemodel/lib/active_model/validations/format.rb +39 -0
  1349. data/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +37 -0
  1350. data/vendor/rails/activemodel/lib/active_model/validations/length.rb +95 -0
  1351. data/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +80 -0
  1352. data/vendor/rails/activemodel/lib/active_model/validations/presence.rb +42 -0
  1353. data/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +104 -0
  1354. data/vendor/rails/activemodel/test/observing_test.rb +121 -0
  1355. data/vendor/rails/activemodel/test/state_machine/event_test.rb +49 -0
  1356. data/vendor/rails/activemodel/test/state_machine/machine_test.rb +43 -0
  1357. data/vendor/rails/activemodel/test/state_machine/state_test.rb +72 -0
  1358. data/vendor/rails/activemodel/test/state_machine/state_transition_test.rb +84 -0
  1359. data/vendor/rails/activemodel/test/state_machine_test.rb +312 -0
  1360. data/vendor/rails/activemodel/test/test_helper.rb +21 -0
  1361. data/vendor/rails/activerecord/CHANGELOG +5904 -0
  1362. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  1363. data/vendor/rails/activerecord/README +351 -0
  1364. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +36 -0
  1365. data/vendor/rails/activerecord/Rakefile +270 -0
  1366. data/vendor/rails/activerecord/examples/associations.png +0 -0
  1367. data/vendor/rails/activerecord/examples/performance.rb +198 -0
  1368. data/vendor/rails/activerecord/install.rb +30 -0
  1369. data/vendor/rails/activerecord/lib/active_record.rb +83 -0
  1370. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +261 -0
  1371. data/vendor/rails/activerecord/lib/active_record/association_preload.rb +406 -0
  1372. data/vendor/rails/activerecord/lib/active_record/associations.rb +2251 -0
  1373. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +533 -0
  1374. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +288 -0
  1375. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +86 -0
  1376. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +77 -0
  1377. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +143 -0
  1378. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +127 -0
  1379. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +266 -0
  1380. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +142 -0
  1381. data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +37 -0
  1382. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +388 -0
  1383. data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +395 -0
  1384. data/vendor/rails/activerecord/lib/active_record/base.rb +3218 -0
  1385. data/vendor/rails/activerecord/lib/active_record/batches.rb +85 -0
  1386. data/vendor/rails/activerecord/lib/active_record/calculations.rb +321 -0
  1387. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +360 -0
  1388. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +371 -0
  1389. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +139 -0
  1390. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_limits.rb +57 -0
  1391. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +289 -0
  1392. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +94 -0
  1393. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +65 -0
  1394. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +722 -0
  1395. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +490 -0
  1396. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +249 -0
  1397. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +662 -0
  1398. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +1078 -0
  1399. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  1400. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +454 -0
  1401. data/vendor/rails/activerecord/lib/active_record/dirty.rb +183 -0
  1402. data/vendor/rails/activerecord/lib/active_record/dynamic_finder_match.rb +41 -0
  1403. data/vendor/rails/activerecord/lib/active_record/dynamic_scope_match.rb +25 -0
  1404. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +997 -0
  1405. data/vendor/rails/activerecord/lib/active_record/locale/en.yml +58 -0
  1406. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +182 -0
  1407. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +55 -0
  1408. data/vendor/rails/activerecord/lib/active_record/migration.rb +571 -0
  1409. data/vendor/rails/activerecord/lib/active_record/named_scope.rb +197 -0
  1410. data/vendor/rails/activerecord/lib/active_record/nested_attributes.rb +404 -0
  1411. data/vendor/rails/activerecord/lib/active_record/observer.rb +197 -0
  1412. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +33 -0
  1413. data/vendor/rails/activerecord/lib/active_record/reflection.rb +385 -0
  1414. data/vendor/rails/activerecord/lib/active_record/schema.rb +55 -0
  1415. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +185 -0
  1416. data/vendor/rails/activerecord/lib/active_record/serialization.rb +101 -0
  1417. data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +91 -0
  1418. data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +357 -0
  1419. data/vendor/rails/activerecord/lib/active_record/session_store.rb +334 -0
  1420. data/vendor/rails/activerecord/lib/active_record/test_case.rb +66 -0
  1421. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +71 -0
  1422. data/vendor/rails/activerecord/lib/active_record/transactions.rb +235 -0
  1423. data/vendor/rails/activerecord/lib/active_record/validations.rb +1147 -0
  1424. data/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  1425. data/vendor/rails/activerecord/lib/activerecord.rb +2 -0
  1426. data/vendor/rails/activerecord/test/assets/example.log +1 -0
  1427. data/vendor/rails/activerecord/test/assets/flowers.jpg +0 -0
  1428. data/vendor/rails/activerecord/test/cases/aaa_create_tables_test.rb +24 -0
  1429. data/vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb +122 -0
  1430. data/vendor/rails/activerecord/test/cases/active_schema_test_postgresql.rb +24 -0
  1431. data/vendor/rails/activerecord/test/cases/adapter_test.rb +144 -0
  1432. data/vendor/rails/activerecord/test/cases/aggregations_test.rb +167 -0
  1433. data/vendor/rails/activerecord/test/cases/ar_schema_test.rb +32 -0
  1434. data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +438 -0
  1435. data/vendor/rails/activerecord/test/cases/associations/callbacks_test.rb +161 -0
  1436. data/vendor/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +131 -0
  1437. data/vendor/rails/activerecord/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
  1438. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +131 -0
  1439. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_polymorphic_include.rb +19 -0
  1440. data/vendor/rails/activerecord/test/cases/associations/eager_singularization_test.rb +145 -0
  1441. data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +852 -0
  1442. data/vendor/rails/activerecord/test/cases/associations/extension_test.rb +62 -0
  1443. data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +56 -0
  1444. data/vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +827 -0
  1445. data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +1264 -0
  1446. data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +360 -0
  1447. data/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +330 -0
  1448. data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +209 -0
  1449. data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +93 -0
  1450. data/vendor/rails/activerecord/test/cases/associations/inverse_associations_test.rb +566 -0
  1451. data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +712 -0
  1452. data/vendor/rails/activerecord/test/cases/associations_test.rb +282 -0
  1453. data/vendor/rails/activerecord/test/cases/attribute_methods_test.rb +305 -0
  1454. data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +1218 -0
  1455. data/vendor/rails/activerecord/test/cases/base_test.rb +2143 -0
  1456. data/vendor/rails/activerecord/test/cases/batches_test.rb +81 -0
  1457. data/vendor/rails/activerecord/test/cases/binary_test.rb +30 -0
  1458. data/vendor/rails/activerecord/test/cases/calculations_test.rb +360 -0
  1459. data/vendor/rails/activerecord/test/cases/callbacks_observers_test.rb +38 -0
  1460. data/vendor/rails/activerecord/test/cases/callbacks_test.rb +438 -0
  1461. data/vendor/rails/activerecord/test/cases/class_inheritable_attributes_test.rb +32 -0
  1462. data/vendor/rails/activerecord/test/cases/column_alias_test.rb +17 -0
  1463. data/vendor/rails/activerecord/test/cases/column_definition_test.rb +70 -0
  1464. data/vendor/rails/activerecord/test/cases/connection_pool_test.rb +25 -0
  1465. data/vendor/rails/activerecord/test/cases/connection_test_firebird.rb +8 -0
  1466. data/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +65 -0
  1467. data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +80 -0
  1468. data/vendor/rails/activerecord/test/cases/counter_cache_test.rb +84 -0
  1469. data/vendor/rails/activerecord/test/cases/database_statements_test.rb +12 -0
  1470. data/vendor/rails/activerecord/test/cases/datatype_test_postgresql.rb +204 -0
  1471. data/vendor/rails/activerecord/test/cases/date_time_test.rb +37 -0
  1472. data/vendor/rails/activerecord/test/cases/default_test_firebird.rb +16 -0
  1473. data/vendor/rails/activerecord/test/cases/defaults_test.rb +111 -0
  1474. data/vendor/rails/activerecord/test/cases/deprecated_finder_test.rb +30 -0
  1475. data/vendor/rails/activerecord/test/cases/dirty_test.rb +316 -0
  1476. data/vendor/rails/activerecord/test/cases/finder_respond_to_test.rb +76 -0
  1477. data/vendor/rails/activerecord/test/cases/finder_test.rb +1070 -0
  1478. data/vendor/rails/activerecord/test/cases/fixtures_test.rb +661 -0
  1479. data/vendor/rails/activerecord/test/cases/helper.rb +68 -0
  1480. data/vendor/rails/activerecord/test/cases/i18n_test.rb +46 -0
  1481. data/vendor/rails/activerecord/test/cases/inheritance_test.rb +262 -0
  1482. data/vendor/rails/activerecord/test/cases/invalid_date_test.rb +24 -0
  1483. data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +219 -0
  1484. data/vendor/rails/activerecord/test/cases/lifecycle_test.rb +193 -0
  1485. data/vendor/rails/activerecord/test/cases/locking_test.rb +350 -0
  1486. data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +704 -0
  1487. data/vendor/rails/activerecord/test/cases/migration_test.rb +1649 -0
  1488. data/vendor/rails/activerecord/test/cases/migration_test_firebird.rb +124 -0
  1489. data/vendor/rails/activerecord/test/cases/mixin_test.rb +96 -0
  1490. data/vendor/rails/activerecord/test/cases/modules_test.rb +109 -0
  1491. data/vendor/rails/activerecord/test/cases/multiple_db_test.rb +85 -0
  1492. data/vendor/rails/activerecord/test/cases/named_scope_test.rb +372 -0
  1493. data/vendor/rails/activerecord/test/cases/nested_attributes_test.rb +840 -0
  1494. data/vendor/rails/activerecord/test/cases/pk_test.rb +119 -0
  1495. data/vendor/rails/activerecord/test/cases/pooled_connections_test.rb +103 -0
  1496. data/vendor/rails/activerecord/test/cases/query_cache_test.rb +129 -0
  1497. data/vendor/rails/activerecord/test/cases/readonly_test.rb +107 -0
  1498. data/vendor/rails/activerecord/test/cases/reflection_test.rb +234 -0
  1499. data/vendor/rails/activerecord/test/cases/reload_models_test.rb +22 -0
  1500. data/vendor/rails/activerecord/test/cases/repair_helper.rb +50 -0
  1501. data/vendor/rails/activerecord/test/cases/reserved_word_test_mysql.rb +176 -0
  1502. data/vendor/rails/activerecord/test/cases/sanitize_test.rb +25 -0
  1503. data/vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb +75 -0
  1504. data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +211 -0
  1505. data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +178 -0
  1506. data/vendor/rails/activerecord/test/cases/serialization_test.rb +47 -0
  1507. data/vendor/rails/activerecord/test/cases/sp_test_mysql.rb +16 -0
  1508. data/vendor/rails/activerecord/test/cases/synonym_test_oracle.rb +17 -0
  1509. data/vendor/rails/activerecord/test/cases/timestamp_test.rb +75 -0
  1510. data/vendor/rails/activerecord/test/cases/transactions_test.rb +543 -0
  1511. data/vendor/rails/activerecord/test/cases/unconnected_test.rb +32 -0
  1512. data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +925 -0
  1513. data/vendor/rails/activerecord/test/cases/validations_test.rb +1684 -0
  1514. data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +240 -0
  1515. data/vendor/rails/activerecord/test/cases/yaml_serialization_test.rb +11 -0
  1516. data/vendor/rails/activerecord/test/config.rb +5 -0
  1517. data/vendor/rails/activerecord/test/connections/jdbc_jdbcderby/connection.rb +18 -0
  1518. data/vendor/rails/activerecord/test/connections/jdbc_jdbch2/connection.rb +18 -0
  1519. data/vendor/rails/activerecord/test/connections/jdbc_jdbchsqldb/connection.rb +18 -0
  1520. data/vendor/rails/activerecord/test/connections/jdbc_jdbcmysql/connection.rb +26 -0
  1521. data/vendor/rails/activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb +26 -0
  1522. data/vendor/rails/activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb +25 -0
  1523. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  1524. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  1525. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  1526. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +25 -0
  1527. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  1528. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  1529. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +21 -0
  1530. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +25 -0
  1531. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +25 -0
  1532. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  1533. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  1534. data/vendor/rails/activerecord/test/fixtures/accounts.yml +29 -0
  1535. data/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  1536. data/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  1537. data/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  1538. data/vendor/rails/activerecord/test/fixtures/author_addresses.yml +5 -0
  1539. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  1540. data/vendor/rails/activerecord/test/fixtures/authors.yml +9 -0
  1541. data/vendor/rails/activerecord/test/fixtures/binaries.yml +132 -0
  1542. data/vendor/rails/activerecord/test/fixtures/books.yml +7 -0
  1543. data/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  1544. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  1545. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  1546. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  1547. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  1548. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  1549. data/vendor/rails/activerecord/test/fixtures/clubs.yml +6 -0
  1550. data/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  1551. data/vendor/rails/activerecord/test/fixtures/companies.yml +56 -0
  1552. data/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  1553. data/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  1554. data/vendor/rails/activerecord/test/fixtures/customers.yml +26 -0
  1555. data/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  1556. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  1557. data/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  1558. data/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  1559. data/vendor/rails/activerecord/test/fixtures/faces.yml +11 -0
  1560. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  1561. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  1562. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  1563. data/vendor/rails/activerecord/test/fixtures/interests.yml +33 -0
  1564. data/vendor/rails/activerecord/test/fixtures/items.yml +4 -0
  1565. data/vendor/rails/activerecord/test/fixtures/jobs.yml +7 -0
  1566. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  1567. data/vendor/rails/activerecord/test/fixtures/mateys.yml +4 -0
  1568. data/vendor/rails/activerecord/test/fixtures/member_types.yml +6 -0
  1569. data/vendor/rails/activerecord/test/fixtures/members.yml +6 -0
  1570. data/vendor/rails/activerecord/test/fixtures/memberships.yml +20 -0
  1571. data/vendor/rails/activerecord/test/fixtures/men.yml +5 -0
  1572. data/vendor/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  1573. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  1574. data/vendor/rails/activerecord/test/fixtures/mixins.yml +29 -0
  1575. data/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  1576. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  1577. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  1578. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  1579. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  1580. data/vendor/rails/activerecord/test/fixtures/organizations.yml +5 -0
  1581. data/vendor/rails/activerecord/test/fixtures/owners.yml +7 -0
  1582. data/vendor/rails/activerecord/test/fixtures/parrots.yml +27 -0
  1583. data/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  1584. data/vendor/rails/activerecord/test/fixtures/people.yml +15 -0
  1585. data/vendor/rails/activerecord/test/fixtures/pets.yml +14 -0
  1586. data/vendor/rails/activerecord/test/fixtures/pirates.yml +9 -0
  1587. data/vendor/rails/activerecord/test/fixtures/polymorphic_designs.yml +19 -0
  1588. data/vendor/rails/activerecord/test/fixtures/polymorphic_prices.yml +19 -0
  1589. data/vendor/rails/activerecord/test/fixtures/posts.yml +52 -0
  1590. data/vendor/rails/activerecord/test/fixtures/price_estimates.yml +7 -0
  1591. data/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  1592. data/vendor/rails/activerecord/test/fixtures/readers.yml +9 -0
  1593. data/vendor/rails/activerecord/test/fixtures/references.yml +17 -0
  1594. data/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  1595. data/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +11 -0
  1596. data/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  1597. data/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  1598. data/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  1599. data/vendor/rails/activerecord/test/fixtures/ships.yml +5 -0
  1600. data/vendor/rails/activerecord/test/fixtures/sponsors.yml +9 -0
  1601. data/vendor/rails/activerecord/test/fixtures/subscribers.yml +7 -0
  1602. data/vendor/rails/activerecord/test/fixtures/subscriptions.yml +12 -0
  1603. data/vendor/rails/activerecord/test/fixtures/taggings.yml +28 -0
  1604. data/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  1605. data/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  1606. data/vendor/rails/activerecord/test/fixtures/tees.yml +4 -0
  1607. data/vendor/rails/activerecord/test/fixtures/ties.yml +4 -0
  1608. data/vendor/rails/activerecord/test/fixtures/topics.yml +42 -0
  1609. data/vendor/rails/activerecord/test/fixtures/toys.yml +4 -0
  1610. data/vendor/rails/activerecord/test/fixtures/treasures.yml +10 -0
  1611. data/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  1612. data/vendor/rails/activerecord/test/fixtures/warehouse-things.yml +3 -0
  1613. data/vendor/rails/activerecord/test/fixtures/zines.yml +5 -0
  1614. data/vendor/rails/activerecord/test/migrations/broken/100_migration_that_raises_exception.rb +10 -0
  1615. data/vendor/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  1616. data/vendor/rails/activerecord/test/migrations/duplicate/1_people_have_last_names.rb +9 -0
  1617. data/vendor/rails/activerecord/test/migrations/duplicate/2_we_need_reminders.rb +12 -0
  1618. data/vendor/rails/activerecord/test/migrations/duplicate/3_foo.rb +7 -0
  1619. data/vendor/rails/activerecord/test/migrations/duplicate/3_innocent_jointable.rb +12 -0
  1620. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb +7 -0
  1621. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb +7 -0
  1622. data/vendor/rails/activerecord/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +12 -0
  1623. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +9 -0
  1624. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +12 -0
  1625. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +9 -0
  1626. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +8 -0
  1627. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +12 -0
  1628. data/vendor/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  1629. data/vendor/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +9 -0
  1630. data/vendor/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +12 -0
  1631. data/vendor/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +12 -0
  1632. data/vendor/rails/activerecord/test/migrations/valid/1_people_have_last_names.rb +9 -0
  1633. data/vendor/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +12 -0
  1634. data/vendor/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +12 -0
  1635. data/vendor/rails/activerecord/test/models/author.rb +151 -0
  1636. data/vendor/rails/activerecord/test/models/auto_id.rb +4 -0
  1637. data/vendor/rails/activerecord/test/models/binary.rb +2 -0
  1638. data/vendor/rails/activerecord/test/models/bird.rb +9 -0
  1639. data/vendor/rails/activerecord/test/models/book.rb +4 -0
  1640. data/vendor/rails/activerecord/test/models/categorization.rb +5 -0
  1641. data/vendor/rails/activerecord/test/models/category.rb +34 -0
  1642. data/vendor/rails/activerecord/test/models/citation.rb +6 -0
  1643. data/vendor/rails/activerecord/test/models/club.rb +13 -0
  1644. data/vendor/rails/activerecord/test/models/column_name.rb +3 -0
  1645. data/vendor/rails/activerecord/test/models/comment.rb +29 -0
  1646. data/vendor/rails/activerecord/test/models/company.rb +173 -0
  1647. data/vendor/rails/activerecord/test/models/company_in_module.rb +78 -0
  1648. data/vendor/rails/activerecord/test/models/computer.rb +3 -0
  1649. data/vendor/rails/activerecord/test/models/contact.rb +16 -0
  1650. data/vendor/rails/activerecord/test/models/contract.rb +5 -0
  1651. data/vendor/rails/activerecord/test/models/course.rb +3 -0
  1652. data/vendor/rails/activerecord/test/models/customer.rb +73 -0
  1653. data/vendor/rails/activerecord/test/models/default.rb +2 -0
  1654. data/vendor/rails/activerecord/test/models/developer.rb +101 -0
  1655. data/vendor/rails/activerecord/test/models/edge.rb +5 -0
  1656. data/vendor/rails/activerecord/test/models/entrant.rb +3 -0
  1657. data/vendor/rails/activerecord/test/models/essay.rb +3 -0
  1658. data/vendor/rails/activerecord/test/models/event.rb +3 -0
  1659. data/vendor/rails/activerecord/test/models/event_author.rb +8 -0
  1660. data/vendor/rails/activerecord/test/models/face.rb +7 -0
  1661. data/vendor/rails/activerecord/test/models/guid.rb +2 -0
  1662. data/vendor/rails/activerecord/test/models/interest.rb +5 -0
  1663. data/vendor/rails/activerecord/test/models/invoice.rb +4 -0
  1664. data/vendor/rails/activerecord/test/models/item.rb +7 -0
  1665. data/vendor/rails/activerecord/test/models/job.rb +5 -0
  1666. data/vendor/rails/activerecord/test/models/joke.rb +3 -0
  1667. data/vendor/rails/activerecord/test/models/keyboard.rb +3 -0
  1668. data/vendor/rails/activerecord/test/models/legacy_thing.rb +3 -0
  1669. data/vendor/rails/activerecord/test/models/line_item.rb +3 -0
  1670. data/vendor/rails/activerecord/test/models/man.rb +9 -0
  1671. data/vendor/rails/activerecord/test/models/matey.rb +4 -0
  1672. data/vendor/rails/activerecord/test/models/member.rb +12 -0
  1673. data/vendor/rails/activerecord/test/models/member_detail.rb +5 -0
  1674. data/vendor/rails/activerecord/test/models/member_type.rb +3 -0
  1675. data/vendor/rails/activerecord/test/models/membership.rb +9 -0
  1676. data/vendor/rails/activerecord/test/models/minimalistic.rb +2 -0
  1677. data/vendor/rails/activerecord/test/models/mixed_case_monkey.rb +3 -0
  1678. data/vendor/rails/activerecord/test/models/movie.rb +5 -0
  1679. data/vendor/rails/activerecord/test/models/order.rb +4 -0
  1680. data/vendor/rails/activerecord/test/models/organization.rb +6 -0
  1681. data/vendor/rails/activerecord/test/models/owner.rb +5 -0
  1682. data/vendor/rails/activerecord/test/models/parrot.rb +22 -0
  1683. data/vendor/rails/activerecord/test/models/person.rb +16 -0
  1684. data/vendor/rails/activerecord/test/models/pet.rb +5 -0
  1685. data/vendor/rails/activerecord/test/models/pirate.rb +80 -0
  1686. data/vendor/rails/activerecord/test/models/polymorphic_design.rb +3 -0
  1687. data/vendor/rails/activerecord/test/models/polymorphic_price.rb +3 -0
  1688. data/vendor/rails/activerecord/test/models/post.rb +102 -0
  1689. data/vendor/rails/activerecord/test/models/price_estimate.rb +3 -0
  1690. data/vendor/rails/activerecord/test/models/project.rb +30 -0
  1691. data/vendor/rails/activerecord/test/models/reader.rb +4 -0
  1692. data/vendor/rails/activerecord/test/models/reference.rb +4 -0
  1693. data/vendor/rails/activerecord/test/models/reply.rb +46 -0
  1694. data/vendor/rails/activerecord/test/models/ship.rb +19 -0
  1695. data/vendor/rails/activerecord/test/models/ship_part.rb +7 -0
  1696. data/vendor/rails/activerecord/test/models/sponsor.rb +4 -0
  1697. data/vendor/rails/activerecord/test/models/subject.rb +4 -0
  1698. data/vendor/rails/activerecord/test/models/subscriber.rb +8 -0
  1699. data/vendor/rails/activerecord/test/models/subscription.rb +4 -0
  1700. data/vendor/rails/activerecord/test/models/tag.rb +7 -0
  1701. data/vendor/rails/activerecord/test/models/tagging.rb +10 -0
  1702. data/vendor/rails/activerecord/test/models/task.rb +3 -0
  1703. data/vendor/rails/activerecord/test/models/tee.rb +4 -0
  1704. data/vendor/rails/activerecord/test/models/tie.rb +4 -0
  1705. data/vendor/rails/activerecord/test/models/topic.rb +80 -0
  1706. data/vendor/rails/activerecord/test/models/toy.rb +6 -0
  1707. data/vendor/rails/activerecord/test/models/treasure.rb +8 -0
  1708. data/vendor/rails/activerecord/test/models/vertex.rb +9 -0
  1709. data/vendor/rails/activerecord/test/models/warehouse_thing.rb +5 -0
  1710. data/vendor/rails/activerecord/test/models/zine.rb +3 -0
  1711. data/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +31 -0
  1712. data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +114 -0
  1713. data/vendor/rails/activerecord/test/schema/schema.rb +550 -0
  1714. data/vendor/rails/activerecord/test/schema/schema2.rb +6 -0
  1715. data/vendor/rails/activerecord/test/schema/sqlite_specific_schema.rb +25 -0
  1716. data/vendor/rails/activeresource/CHANGELOG +306 -0
  1717. data/vendor/rails/activeresource/MIT-LICENSE +20 -0
  1718. data/vendor/rails/activeresource/README +165 -0
  1719. data/vendor/rails/activeresource/Rakefile +139 -0
  1720. data/vendor/rails/activeresource/lib/active_resource.rb +44 -0
  1721. data/vendor/rails/activeresource/lib/active_resource/base.rb +1166 -0
  1722. data/vendor/rails/activeresource/lib/active_resource/connection.rb +283 -0
  1723. data/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +120 -0
  1724. data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +66 -0
  1725. data/vendor/rails/activeresource/lib/active_resource/formats.rb +14 -0
  1726. data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +23 -0
  1727. data/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +34 -0
  1728. data/vendor/rails/activeresource/lib/active_resource/http_mock.rb +302 -0
  1729. data/vendor/rails/activeresource/lib/active_resource/validations.rb +290 -0
  1730. data/vendor/rails/activeresource/lib/active_resource/version.rb +9 -0
  1731. data/vendor/rails/activeresource/lib/activeresource.rb +2 -0
  1732. data/vendor/rails/activeresource/test/abstract_unit.rb +21 -0
  1733. data/vendor/rails/activeresource/test/authorization_test.rb +122 -0
  1734. data/vendor/rails/activeresource/test/base/custom_methods_test.rb +100 -0
  1735. data/vendor/rails/activeresource/test/base/equality_test.rb +52 -0
  1736. data/vendor/rails/activeresource/test/base/load_test.rb +161 -0
  1737. data/vendor/rails/activeresource/test/base_errors_test.rb +98 -0
  1738. data/vendor/rails/activeresource/test/base_test.rb +1087 -0
  1739. data/vendor/rails/activeresource/test/connection_test.rb +238 -0
  1740. data/vendor/rails/activeresource/test/fixtures/beast.rb +14 -0
  1741. data/vendor/rails/activeresource/test/fixtures/customer.rb +3 -0
  1742. data/vendor/rails/activeresource/test/fixtures/person.rb +3 -0
  1743. data/vendor/rails/activeresource/test/fixtures/proxy.rb +4 -0
  1744. data/vendor/rails/activeresource/test/fixtures/street_address.rb +4 -0
  1745. data/vendor/rails/activeresource/test/format_test.rb +112 -0
  1746. data/vendor/rails/activeresource/test/http_mock_test.rb +155 -0
  1747. data/vendor/rails/activeresource/test/setter_trap.rb +26 -0
  1748. data/vendor/rails/activesupport/CHANGELOG +1383 -0
  1749. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1750. data/vendor/rails/activesupport/README +43 -0
  1751. data/vendor/rails/activesupport/Rakefile +175 -0
  1752. data/vendor/rails/activesupport/bin/generate_tables +147 -0
  1753. data/vendor/rails/activesupport/install.rb +30 -0
  1754. data/vendor/rails/activesupport/lib/active_support.rb +60 -0
  1755. data/vendor/rails/activesupport/lib/active_support/all.rb +8 -0
  1756. data/vendor/rails/activesupport/lib/active_support/backtrace_cleaner.rb +72 -0
  1757. data/vendor/rails/activesupport/lib/active_support/base64.rb +33 -0
  1758. data/vendor/rails/activesupport/lib/active_support/basic_object.rb +21 -0
  1759. data/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +129 -0
  1760. data/vendor/rails/activesupport/lib/active_support/cache.rb +248 -0
  1761. data/vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb +20 -0
  1762. data/vendor/rails/activesupport/lib/active_support/cache/drb_store.rb +14 -0
  1763. data/vendor/rails/activesupport/lib/active_support/cache/file_store.rb +72 -0
  1764. data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +143 -0
  1765. data/vendor/rails/activesupport/lib/active_support/cache/memory_store.rb +58 -0
  1766. data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +104 -0
  1767. data/vendor/rails/activesupport/lib/active_support/cache/synchronized_memory_store.rb +47 -0
  1768. data/vendor/rails/activesupport/lib/active_support/callbacks.rb +279 -0
  1769. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +8 -0
  1770. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +15 -0
  1771. data/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +53 -0
  1772. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +197 -0
  1773. data/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +20 -0
  1774. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +106 -0
  1775. data/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +42 -0
  1776. data/vendor/rails/activesupport/lib/active_support/core_ext/array/wrapper.rb +24 -0
  1777. data/vendor/rails/activesupport/lib/active_support/core_ext/base64.rb +4 -0
  1778. data/vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb +16 -0
  1779. data/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb +19 -0
  1780. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +6 -0
  1781. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +37 -0
  1782. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +2 -0
  1783. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1784. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +23 -0
  1785. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +5 -0
  1786. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute.rb +67 -0
  1787. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +61 -0
  1788. data/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +47 -0
  1789. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1790. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +50 -0
  1791. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +10 -0
  1792. data/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +42 -0
  1793. data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +241 -0
  1794. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +107 -0
  1795. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +12 -0
  1796. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +126 -0
  1797. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +107 -0
  1798. data/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +43 -0
  1799. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +120 -0
  1800. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +45 -0
  1801. data/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +5 -0
  1802. data/vendor/rails/activesupport/lib/active_support/core_ext/file/atomic.rb +47 -0
  1803. data/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +7 -0
  1804. data/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +24 -0
  1805. data/vendor/rails/activesupport/lib/active_support/core_ext/float/time.rb +27 -0
  1806. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +14 -0
  1807. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +247 -0
  1808. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/deep_merge.rb +23 -0
  1809. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +19 -0
  1810. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +25 -0
  1811. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +143 -0
  1812. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +52 -0
  1813. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +35 -0
  1814. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +40 -0
  1815. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +9 -0
  1816. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  1817. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +20 -0
  1818. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/time.rb +45 -0
  1819. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1820. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1821. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  1822. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +16 -0
  1823. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  1824. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1825. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/singleton_class.rb +13 -0
  1826. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1827. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +145 -0
  1828. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +23 -0
  1829. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +74 -0
  1830. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  1831. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  1832. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +67 -0
  1833. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +135 -0
  1834. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +30 -0
  1835. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +90 -0
  1836. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +23 -0
  1837. data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +25 -0
  1838. data/vendor/rails/activesupport/lib/active_support/core_ext/module/remove_method.rb +6 -0
  1839. data/vendor/rails/activesupport/lib/active_support/core_ext/module/synchronization.rb +39 -0
  1840. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +19 -0
  1841. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +9 -0
  1842. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +50 -0
  1843. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  1844. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +81 -0
  1845. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +7 -0
  1846. data/vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb +76 -0
  1847. data/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +15 -0
  1848. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +80 -0
  1849. data/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  1850. data/vendor/rails/activesupport/lib/active_support/core_ext/object/metaclass.rb +14 -0
  1851. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +93 -0
  1852. data/vendor/rails/activesupport/lib/active_support/core_ext/object/singleton_class.rb +13 -0
  1853. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1854. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1855. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1856. data/vendor/rails/activesupport/lib/active_support/core_ext/process.rb +1 -0
  1857. data/vendor/rails/activesupport/lib/active_support/core_ext/process/daemon.rb +25 -0
  1858. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +11 -0
  1859. data/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  1860. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +27 -0
  1861. data/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +30 -0
  1862. data/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +15 -0
  1863. data/vendor/rails/activesupport/lib/active_support/core_ext/rexml.rb +41 -0
  1864. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +24 -0
  1865. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +106 -0
  1866. data/vendor/rails/activesupport/lib/active_support/core_ext/string/behavior.rb +13 -0
  1867. data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +5 -0
  1868. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +28 -0
  1869. data/vendor/rails/activesupport/lib/active_support/core_ext/string/filters.rb +26 -0
  1870. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +167 -0
  1871. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +23 -0
  1872. data/vendor/rails/activesupport/lib/active_support/core_ext/string/multibyte.rb +81 -0
  1873. data/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb +101 -0
  1874. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +33 -0
  1875. data/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +11 -0
  1876. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +14 -0
  1877. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +46 -0
  1878. data/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +13 -0
  1879. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +313 -0
  1880. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +90 -0
  1881. data/vendor/rails/activesupport/lib/active_support/core_ext/time/zones.rb +86 -0
  1882. data/vendor/rails/activesupport/lib/active_support/core_ext/try.rb +36 -0
  1883. data/vendor/rails/activesupport/lib/active_support/core_ext/uri.rb +16 -0
  1884. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +651 -0
  1885. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +204 -0
  1886. data/vendor/rails/activesupport/lib/active_support/duration.rb +100 -0
  1887. data/vendor/rails/activesupport/lib/active_support/gzip.rb +25 -0
  1888. data/vendor/rails/activesupport/lib/active_support/inflections.rb +56 -0
  1889. data/vendor/rails/activesupport/lib/active_support/inflector.rb +409 -0
  1890. data/vendor/rails/activesupport/lib/active_support/json.rb +2 -0
  1891. data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +37 -0
  1892. data/vendor/rails/activesupport/lib/active_support/json/backends/yajl.rb +40 -0
  1893. data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +87 -0
  1894. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +50 -0
  1895. data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +22 -0
  1896. data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +22 -0
  1897. data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +17 -0
  1898. data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +7 -0
  1899. data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +56 -0
  1900. data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +7 -0
  1901. data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +21 -0
  1902. data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +10 -0
  1903. data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +9 -0
  1904. data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +9 -0
  1905. data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +5 -0
  1906. data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +22 -0
  1907. data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +7 -0
  1908. data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +111 -0
  1909. data/vendor/rails/activesupport/lib/active_support/json/variable.rb +10 -0
  1910. data/vendor/rails/activesupport/lib/active_support/locale/en.yml +36 -0
  1911. data/vendor/rails/activesupport/lib/active_support/memoizable.rb +102 -0
  1912. data/vendor/rails/activesupport/lib/active_support/message_encryptor.rb +70 -0
  1913. data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +79 -0
  1914. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +57 -0
  1915. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +707 -0
  1916. data/vendor/rails/activesupport/lib/active_support/multibyte/exceptions.rb +8 -0
  1917. data/vendor/rails/activesupport/lib/active_support/multibyte/unicode_database.rb +71 -0
  1918. data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +60 -0
  1919. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +23 -0
  1920. data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +164 -0
  1921. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +19 -0
  1922. data/vendor/rails/activesupport/lib/active_support/rescuable.rb +108 -0
  1923. data/vendor/rails/activesupport/lib/active_support/secure_random.rb +199 -0
  1924. data/vendor/rails/activesupport/lib/active_support/string_inquirer.rb +21 -0
  1925. data/vendor/rails/activesupport/lib/active_support/test_case.rb +40 -0
  1926. data/vendor/rails/activesupport/lib/active_support/testing/assertions.rb +79 -0
  1927. data/vendor/rails/activesupport/lib/active_support/testing/declarative.rb +21 -0
  1928. data/vendor/rails/activesupport/lib/active_support/testing/default.rb +9 -0
  1929. data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +57 -0
  1930. data/vendor/rails/activesupport/lib/active_support/testing/performance.rb +452 -0
  1931. data/vendor/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +91 -0
  1932. data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +335 -0
  1933. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +416 -0
  1934. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1935. data/vendor/rails/activesupport/lib/active_support/vendor.rb +36 -0
  1936. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  1937. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  1938. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  1939. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  1940. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  1941. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  1942. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  1943. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  1944. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n.rb +322 -0
  1945. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend.rb +20 -0
  1946. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record.rb +61 -0
  1947. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/missing.rb +65 -0
  1948. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/store_procs.rb +38 -0
  1949. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/translation.rb +93 -0
  1950. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/base.rb +237 -0
  1951. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cache.rb +77 -0
  1952. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cascade.rb +57 -0
  1953. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/chain.rb +77 -0
  1954. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cldr.rb +100 -0
  1955. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/fallbacks.rb +69 -0
  1956. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/flatten.rb +113 -0
  1957. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb +75 -0
  1958. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/interpolation_compiler.rb +123 -0
  1959. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/key_value.rb +102 -0
  1960. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/memoize.rb +48 -0
  1961. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/metadata.rb +65 -0
  1962. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/pluralization.rb +57 -0
  1963. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb +87 -0
  1964. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/transliterator.rb +98 -0
  1965. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/config.rb +84 -0
  1966. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb +28 -0
  1967. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb +98 -0
  1968. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/exceptions.rb +61 -0
  1969. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext.rb +27 -0
  1970. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/helpers.rb +65 -0
  1971. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb +329 -0
  1972. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale.rb +6 -0
  1973. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/fallbacks.rb +98 -0
  1974. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag.rb +28 -0
  1975. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/parents.rb +24 -0
  1976. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/rfc4646.rb +76 -0
  1977. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/simple.rb +41 -0
  1978. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/version.rb +3 -0
  1979. data/vendor/rails/activesupport/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +1107 -0
  1980. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +33 -0
  1981. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +47 -0
  1982. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +228 -0
  1983. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +55 -0
  1984. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +219 -0
  1985. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +40 -0
  1986. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +18 -0
  1987. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  1988. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  1989. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  1990. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  1991. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
  1992. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +23 -0
  1993. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +23 -0
  1994. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +283 -0
  1995. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +136 -0
  1996. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +204 -0
  1997. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +161 -0
  1998. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +27 -0
  1999. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +274 -0
  2000. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  2001. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +194 -0
  2002. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +22 -0
  2003. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +35 -0
  2004. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  2005. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +139 -0
  2006. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +144 -0
  2007. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +131 -0
  2008. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +282 -0
  2009. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +30 -0
  2010. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +74 -0
  2011. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +205 -0
  2012. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
  2013. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +288 -0
  2014. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +196 -0
  2015. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +67 -0
  2016. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  2017. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +161 -0
  2018. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  2019. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  2020. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +30 -0
  2021. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  2022. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  2023. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  2024. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  2025. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  2026. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +20 -0
  2027. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  2028. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +30 -0
  2029. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  2030. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  2031. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  2032. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  2033. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  2034. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +163 -0
  2035. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +18 -0
  2036. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  2037. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  2038. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  2039. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +34 -0
  2040. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  2041. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +33 -0
  2042. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +59 -0
  2043. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  2044. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  2045. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +121 -0
  2046. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  2047. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  2048. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  2049. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  2050. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  2051. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  2052. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  2053. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  2054. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  2055. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  2056. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  2057. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  2058. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +29 -0
  2059. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +193 -0
  2060. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  2061. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +37 -0
  2062. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +185 -0
  2063. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +16 -0
  2064. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  2065. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +185 -0
  2066. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  2067. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +188 -0
  2068. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  2069. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +232 -0
  2070. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  2071. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +197 -0
  2072. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  2073. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +276 -0
  2074. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  2075. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  2076. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +168 -0
  2077. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  2078. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  2079. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +288 -0
  2080. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +211 -0
  2081. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +170 -0
  2082. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +181 -0
  2083. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +232 -0
  2084. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +187 -0
  2085. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +176 -0
  2086. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +215 -0
  2087. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  2088. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +13 -0
  2089. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +173 -0
  2090. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  2091. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  2092. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +183 -0
  2093. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  2094. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  2095. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  2096. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  2097. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  2098. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +22 -0
  2099. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  2100. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  2101. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +25 -0
  2102. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  2103. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  2104. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  2105. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  2106. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +52 -0
  2107. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +51 -0
  2108. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +44 -0
  2109. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +98 -0
  2110. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +56 -0
  2111. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +292 -0
  2112. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +508 -0
  2113. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +56 -0
  2114. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +40 -0
  2115. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +94 -0
  2116. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +198 -0
  2117. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +129 -0
  2118. data/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  2119. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +64 -0
  2120. data/vendor/rails/activesupport/lib/active_support/xml_mini.rb +31 -0
  2121. data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +162 -0
  2122. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxml.rb +73 -0
  2123. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxmlsax.rb +74 -0
  2124. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogiri.rb +72 -0
  2125. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogirisax.rb +73 -0
  2126. data/vendor/rails/activesupport/lib/active_support/xml_mini/rexml.rb +108 -0
  2127. data/vendor/rails/activesupport/lib/activesupport.rb +2 -0
  2128. data/vendor/rails/activesupport/test/abstract_unit.rb +37 -0
  2129. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  2130. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  2131. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  2132. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  2133. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  2134. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  2135. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  2136. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  2137. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  2138. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  2139. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  2140. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  2141. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  2142. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  2143. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  2144. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  2145. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  2146. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  2147. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  2148. data/vendor/rails/activesupport/test/buffered_logger_test.rb +146 -0
  2149. data/vendor/rails/activesupport/test/caching_test.rb +355 -0
  2150. data/vendor/rails/activesupport/test/callbacks_test.rb +188 -0
  2151. data/vendor/rails/activesupport/test/clean_backtrace_test.rb +47 -0
  2152. data/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  2153. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +394 -0
  2154. data/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +8 -0
  2155. data/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +10 -0
  2156. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +21 -0
  2157. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  2158. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +38 -0
  2159. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  2160. data/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +115 -0
  2161. data/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  2162. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +286 -0
  2163. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +363 -0
  2164. data/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  2165. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +121 -0
  2166. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +102 -0
  2167. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +68 -0
  2168. data/vendor/rails/activesupport/test/core_ext/file_test.rb +67 -0
  2169. data/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  2170. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +1016 -0
  2171. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  2172. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  2173. data/vendor/rails/activesupport/test/core_ext/load_error_test.rb +16 -0
  2174. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  2175. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  2176. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +39 -0
  2177. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  2178. data/vendor/rails/activesupport/test/core_ext/module/model_naming_test.rb +27 -0
  2179. data/vendor/rails/activesupport/test/core_ext/module/synchronization_test.rb +86 -0
  2180. data/vendor/rails/activesupport/test/core_ext/module_test.rb +363 -0
  2181. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +20 -0
  2182. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +168 -0
  2183. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +294 -0
  2184. data/vendor/rails/activesupport/test/core_ext/object_ext_test.rb +8 -0
  2185. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  2186. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  2187. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  2188. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +402 -0
  2189. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  2190. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +771 -0
  2191. data/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +851 -0
  2192. data/vendor/rails/activesupport/test/core_ext/uri_ext_test.rb +12 -0
  2193. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  2194. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  2195. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  2196. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  2197. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  2198. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  2199. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  2200. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  2201. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  2202. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  2203. data/vendor/rails/activesupport/test/dependencies_test.rb +789 -0
  2204. data/vendor/rails/activesupport/test/deprecation/proxy_wrappers_test.rb +22 -0
  2205. data/vendor/rails/activesupport/test/deprecation_test.rb +167 -0
  2206. data/vendor/rails/activesupport/test/empty_bool.rb +7 -0
  2207. data/vendor/rails/activesupport/test/flush_cache_on_private_memoization_test.rb +43 -0
  2208. data/vendor/rails/activesupport/test/gzip_test.rb +7 -0
  2209. data/vendor/rails/activesupport/test/i18n_test.rb +98 -0
  2210. data/vendor/rails/activesupport/test/inflector_test.rb +298 -0
  2211. data/vendor/rails/activesupport/test/inflector_test_cases.rb +262 -0
  2212. data/vendor/rails/activesupport/test/json/decoding_test.rb +79 -0
  2213. data/vendor/rails/activesupport/test/json/encoding_test.rb +162 -0
  2214. data/vendor/rails/activesupport/test/memoizable_test.rb +261 -0
  2215. data/vendor/rails/activesupport/test/message_encryptor_test.rb +55 -0
  2216. data/vendor/rails/activesupport/test/message_verifier_test.rb +31 -0
  2217. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +606 -0
  2218. data/vendor/rails/activesupport/test/multibyte_conformance.rb +129 -0
  2219. data/vendor/rails/activesupport/test/multibyte_test_helpers.rb +19 -0
  2220. data/vendor/rails/activesupport/test/multibyte_unicode_database_test.rb +22 -0
  2221. data/vendor/rails/activesupport/test/multibyte_utils_test.rb +137 -0
  2222. data/vendor/rails/activesupport/test/option_merger_test.rb +85 -0
  2223. data/vendor/rails/activesupport/test/ordered_hash_test.rb +237 -0
  2224. data/vendor/rails/activesupport/test/ordered_options_test.rb +53 -0
  2225. data/vendor/rails/activesupport/test/rescuable_test.rb +75 -0
  2226. data/vendor/rails/activesupport/test/safe_buffer_test.rb +36 -0
  2227. data/vendor/rails/activesupport/test/secure_random_test.rb +19 -0
  2228. data/vendor/rails/activesupport/test/string_inquirer_test.rb +15 -0
  2229. data/vendor/rails/activesupport/test/test_case_test.rb +57 -0
  2230. data/vendor/rails/activesupport/test/test_test.rb +188 -0
  2231. data/vendor/rails/activesupport/test/time_zone_test.rb +285 -0
  2232. data/vendor/rails/activesupport/test/whiny_nil_test.rb +50 -0
  2233. data/vendor/rails/activesupport/test/xml_mini/jdom_engine_test.rb +153 -0
  2234. data/vendor/rails/activesupport/test/xml_mini/libxml_engine_test.rb +204 -0
  2235. data/vendor/rails/activesupport/test/xml_mini/libxmlsax_engine_test.rb +181 -0
  2236. data/vendor/rails/activesupport/test/xml_mini/nokogiri_engine_test.rb +204 -0
  2237. data/vendor/rails/activesupport/test/xml_mini/nokogirisax_engine_test.rb +217 -0
  2238. data/vendor/rails/activesupport/test/xml_mini/rexml_engine_test.rb +15 -0
  2239. data/vendor/rails/railties/CHANGELOG +2193 -0
  2240. data/vendor/rails/railties/MIT-LICENSE +20 -0
  2241. data/vendor/rails/railties/README +243 -0
  2242. data/vendor/rails/railties/Rakefile +367 -0
  2243. data/vendor/rails/railties/bin/about +4 -0
  2244. data/vendor/rails/railties/bin/console +3 -0
  2245. data/vendor/rails/railties/bin/dbconsole +3 -0
  2246. data/vendor/rails/railties/bin/destroy +3 -0
  2247. data/vendor/rails/railties/bin/generate +3 -0
  2248. data/vendor/rails/railties/bin/performance/benchmarker +3 -0
  2249. data/vendor/rails/railties/bin/performance/profiler +3 -0
  2250. data/vendor/rails/railties/bin/plugin +3 -0
  2251. data/vendor/rails/railties/bin/rails +21 -0
  2252. data/vendor/rails/railties/bin/runner +3 -0
  2253. data/vendor/rails/railties/bin/server +3 -0
  2254. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +131 -0
  2255. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  2256. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  2257. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  2258. data/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  2259. data/vendor/rails/railties/configs/databases/ibm_db.yml +62 -0
  2260. data/vendor/rails/railties/configs/databases/mysql.yml +60 -0
  2261. data/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  2262. data/vendor/rails/railties/configs/databases/postgresql.yml +51 -0
  2263. data/vendor/rails/railties/configs/databases/sqlite2.yml +19 -0
  2264. data/vendor/rails/railties/configs/databases/sqlite3.yml +22 -0
  2265. data/vendor/rails/railties/configs/empty.log +0 -0
  2266. data/vendor/rails/railties/configs/initializers/backtrace_silencers.rb +7 -0
  2267. data/vendor/rails/railties/configs/initializers/cookie_verification_secret.rb +7 -0
  2268. data/vendor/rails/railties/configs/initializers/inflections.rb +10 -0
  2269. data/vendor/rails/railties/configs/initializers/mime_types.rb +5 -0
  2270. data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +21 -0
  2271. data/vendor/rails/railties/configs/initializers/session_store.rb +15 -0
  2272. data/vendor/rails/railties/configs/locales/en.yml +5 -0
  2273. data/vendor/rails/railties/configs/routes.rb +43 -0
  2274. data/vendor/rails/railties/configs/seeds.rb +7 -0
  2275. data/vendor/rails/railties/dispatches/config.ru +7 -0
  2276. data/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  2277. data/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  2278. data/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  2279. data/vendor/rails/railties/doc/README_FOR_APP +2 -0
  2280. data/vendor/rails/railties/environments/boot.rb +114 -0
  2281. data/vendor/rails/railties/environments/development.rb +17 -0
  2282. data/vendor/rails/railties/environments/environment.rb +41 -0
  2283. data/vendor/rails/railties/environments/production.rb +28 -0
  2284. data/vendor/rails/railties/environments/test.rb +28 -0
  2285. data/vendor/rails/railties/fresh_rakefile +10 -0
  2286. data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +188 -0
  2287. data/vendor/rails/railties/guides/files/javascripts/guides.js +8 -0
  2288. data/vendor/rails/railties/guides/files/javascripts/highlighters.js +90 -0
  2289. data/vendor/rails/railties/guides/files/stylesheets/main.css +441 -0
  2290. data/vendor/rails/railties/guides/files/stylesheets/print.css +52 -0
  2291. data/vendor/rails/railties/guides/files/stylesheets/reset.css +43 -0
  2292. data/vendor/rails/railties/guides/files/stylesheets/style.css +13 -0
  2293. data/vendor/rails/railties/guides/files/stylesheets/syntax.css +31 -0
  2294. data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
  2295. data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
  2296. data/vendor/rails/railties/guides/images/bullet.gif +0 -0
  2297. data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
  2298. data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
  2299. data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
  2300. data/vendor/rails/railties/guides/images/csrf.png +0 -0
  2301. data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
  2302. data/vendor/rails/railties/guides/images/error_messages.png +0 -0
  2303. data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
  2304. data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
  2305. data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
  2306. data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
  2307. data/vendor/rails/railties/guides/images/habtm.png +0 -0
  2308. data/vendor/rails/railties/guides/images/has_many.png +0 -0
  2309. data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
  2310. data/vendor/rails/railties/guides/images/has_one.png +0 -0
  2311. data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
  2312. data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
  2313. data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
  2314. data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
  2315. data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
  2316. data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
  2317. data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
  2318. data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
  2319. data/vendor/rails/railties/guides/images/icons/README +5 -0
  2320. data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
  2321. data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
  2322. data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
  2323. data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
  2324. data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
  2325. data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
  2326. data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
  2327. data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
  2328. data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
  2329. data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
  2330. data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
  2331. data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
  2332. data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
  2333. data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
  2334. data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
  2335. data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
  2336. data/vendor/rails/railties/guides/images/icons/example.png +0 -0
  2337. data/vendor/rails/railties/guides/images/icons/home.png +0 -0
  2338. data/vendor/rails/railties/guides/images/icons/important.png +0 -0
  2339. data/vendor/rails/railties/guides/images/icons/next.png +0 -0
  2340. data/vendor/rails/railties/guides/images/icons/note.png +0 -0
  2341. data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
  2342. data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
  2343. data/vendor/rails/railties/guides/images/icons/up.png +0 -0
  2344. data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
  2345. data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
  2346. data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
  2347. data/vendor/rails/railties/guides/images/posts_index.png +0 -0
  2348. data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
  2349. data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
  2350. data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
  2351. data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
  2352. data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
  2353. data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
  2354. data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
  2355. data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
  2356. data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
  2357. data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
  2358. data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
  2359. data/vendor/rails/railties/guides/rails_guides.rb +31 -0
  2360. data/vendor/rails/railties/guides/rails_guides/generator.rb +258 -0
  2361. data/vendor/rails/railties/guides/rails_guides/helpers.rb +34 -0
  2362. data/vendor/rails/railties/guides/rails_guides/indexer.rb +68 -0
  2363. data/vendor/rails/railties/guides/rails_guides/levenshtein.rb +31 -0
  2364. data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +41 -0
  2365. data/vendor/rails/railties/guides/source/2_2_release_notes.textile +422 -0
  2366. data/vendor/rails/railties/guides/source/2_3_release_notes.textile +610 -0
  2367. data/vendor/rails/railties/guides/source/action_controller_overview.textile +776 -0
  2368. data/vendor/rails/railties/guides/source/action_mailer_basics.textile +441 -0
  2369. data/vendor/rails/railties/guides/source/active_record_basics.textile +135 -0
  2370. data/vendor/rails/railties/guides/source/active_record_querying.textile +969 -0
  2371. data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +1086 -0
  2372. data/vendor/rails/railties/guides/source/association_basics.textile +1781 -0
  2373. data/vendor/rails/railties/guides/source/caching_with_rails.textile +524 -0
  2374. data/vendor/rails/railties/guides/source/command_line.textile +589 -0
  2375. data/vendor/rails/railties/guides/source/configuring.textile +234 -0
  2376. data/vendor/rails/railties/guides/source/contribute.textile +71 -0
  2377. data/vendor/rails/railties/guides/source/contributing_to_rails.textile +239 -0
  2378. data/vendor/rails/railties/guides/source/credits.html.erb +52 -0
  2379. data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +709 -0
  2380. data/vendor/rails/railties/guides/source/form_helpers.textile +766 -0
  2381. data/vendor/rails/railties/guides/source/getting_started.textile +1297 -0
  2382. data/vendor/rails/railties/guides/source/i18n.textile +912 -0
  2383. data/vendor/rails/railties/guides/source/index.html.erb +125 -0
  2384. data/vendor/rails/railties/guides/source/layout.html.erb +103 -0
  2385. data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +979 -0
  2386. data/vendor/rails/railties/guides/source/migrations.textile +591 -0
  2387. data/vendor/rails/railties/guides/source/nested_model_forms.textile +222 -0
  2388. data/vendor/rails/railties/guides/source/performance_testing.textile +531 -0
  2389. data/vendor/rails/railties/guides/source/plugins.textile +1512 -0
  2390. data/vendor/rails/railties/guides/source/rails_on_rack.textile +309 -0
  2391. data/vendor/rails/railties/guides/source/routing.textile +903 -0
  2392. data/vendor/rails/railties/guides/source/security.textile +986 -0
  2393. data/vendor/rails/railties/guides/source/testing.textile +951 -0
  2394. data/vendor/rails/railties/helpers/application_controller.rb +10 -0
  2395. data/vendor/rails/railties/helpers/application_helper.rb +3 -0
  2396. data/vendor/rails/railties/helpers/performance_test.rb +9 -0
  2397. data/vendor/rails/railties/helpers/test_helper.rb +38 -0
  2398. data/vendor/rails/railties/html/404.html +30 -0
  2399. data/vendor/rails/railties/html/422.html +30 -0
  2400. data/vendor/rails/railties/html/500.html +30 -0
  2401. data/vendor/rails/railties/html/favicon.ico +0 -0
  2402. data/vendor/rails/railties/html/images/rails.png +0 -0
  2403. data/vendor/rails/railties/html/index.html +275 -0
  2404. data/vendor/rails/railties/html/javascripts/application.js +2 -0
  2405. data/vendor/rails/railties/html/javascripts/controls.js +963 -0
  2406. data/vendor/rails/railties/html/javascripts/dragdrop.js +973 -0
  2407. data/vendor/rails/railties/html/javascripts/effects.js +1128 -0
  2408. data/vendor/rails/railties/html/javascripts/prototype.js +4320 -0
  2409. data/vendor/rails/railties/html/robots.txt +5 -0
  2410. data/vendor/rails/railties/lib/code_statistics.rb +107 -0
  2411. data/vendor/rails/railties/lib/commands.rb +17 -0
  2412. data/vendor/rails/railties/lib/commands/about.rb +3 -0
  2413. data/vendor/rails/railties/lib/commands/console.rb +45 -0
  2414. data/vendor/rails/railties/lib/commands/dbconsole.rb +87 -0
  2415. data/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  2416. data/vendor/rails/railties/lib/commands/generate.rb +6 -0
  2417. data/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  2418. data/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  2419. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  2420. data/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  2421. data/vendor/rails/railties/lib/commands/plugin.rb +968 -0
  2422. data/vendor/rails/railties/lib/commands/runner.rb +54 -0
  2423. data/vendor/rails/railties/lib/commands/server.rb +114 -0
  2424. data/vendor/rails/railties/lib/commands/update.rb +4 -0
  2425. data/vendor/rails/railties/lib/console_app.rb +30 -0
  2426. data/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  2427. data/vendor/rails/railties/lib/console_with_helpers.rb +5 -0
  2428. data/vendor/rails/railties/lib/dispatcher.rb +24 -0
  2429. data/vendor/rails/railties/lib/fcgi_handler.rb +239 -0
  2430. data/vendor/rails/railties/lib/initializer.rb +1152 -0
  2431. data/vendor/rails/railties/lib/performance_test_help.rb +5 -0
  2432. data/vendor/rails/railties/lib/rails/backtrace_cleaner.rb +54 -0
  2433. data/vendor/rails/railties/lib/rails/gem_builder.rb +21 -0
  2434. data/vendor/rails/railties/lib/rails/gem_dependency.rb +320 -0
  2435. data/vendor/rails/railties/lib/rails/plugin.rb +179 -0
  2436. data/vendor/rails/railties/lib/rails/plugin/loader.rb +198 -0
  2437. data/vendor/rails/railties/lib/rails/plugin/locator.rb +100 -0
  2438. data/vendor/rails/railties/lib/rails/rack.rb +8 -0
  2439. data/vendor/rails/railties/lib/rails/rack/debugger.rb +23 -0
  2440. data/vendor/rails/railties/lib/rails/rack/log_tailer.rb +35 -0
  2441. data/vendor/rails/railties/lib/rails/rack/metal.rb +51 -0
  2442. data/vendor/rails/railties/lib/rails/rack/static.rb +46 -0
  2443. data/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb +140 -0
  2444. data/vendor/rails/railties/lib/rails/version.rb +9 -0
  2445. data/vendor/rails/railties/lib/rails_generator.rb +46 -0
  2446. data/vendor/rails/railties/lib/rails_generator/base.rb +266 -0
  2447. data/vendor/rails/railties/lib/rails_generator/commands.rb +621 -0
  2448. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +47 -0
  2449. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +9 -0
  2450. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +266 -0
  2451. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/git.rb +18 -0
  2452. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/scm.rb +8 -0
  2453. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/svn.rb +7 -0
  2454. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +401 -0
  2455. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +30 -0
  2456. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +43 -0
  2457. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +7 -0
  2458. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +8 -0
  2459. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  2460. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper_test.rb +4 -0
  2461. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +2 -0
  2462. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/USAGE +24 -0
  2463. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/helper_generator.rb +25 -0
  2464. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper.rb +2 -0
  2465. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper_test.rb +4 -0
  2466. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +8 -0
  2467. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  2468. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  2469. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +16 -0
  2470. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +30 -0
  2471. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +3 -0
  2472. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  2473. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +15 -0
  2474. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +20 -0
  2475. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +3 -0
  2476. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  2477. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/USAGE +8 -0
  2478. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/metal_generator.rb +8 -0
  2479. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/templates/metal.rb +12 -0
  2480. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +29 -0
  2481. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +20 -0
  2482. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +11 -0
  2483. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +27 -0
  2484. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +52 -0
  2485. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +23 -0
  2486. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +16 -0
  2487. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +5 -0
  2488. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +8 -0
  2489. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +13 -0
  2490. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  2491. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  2492. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +8 -0
  2493. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/USAGE +8 -0
  2494. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +16 -0
  2495. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +9 -0
  2496. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +25 -0
  2497. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +39 -0
  2498. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +20 -0
  2499. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +13 -0
  2500. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +23 -0
  2501. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  2502. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  2503. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  2504. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  2505. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  2506. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  2507. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +4 -0
  2508. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  2509. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  2510. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +23 -0
  2511. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +76 -0
  2512. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  2513. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +8 -0
  2514. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  2515. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper_test.rb +4 -0
  2516. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +29 -0
  2517. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +103 -0
  2518. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +83 -0
  2519. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +45 -0
  2520. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  2521. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb +4 -0
  2522. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +17 -0
  2523. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +54 -0
  2524. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +18 -0
  2525. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +24 -0
  2526. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +17 -0
  2527. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +10 -0
  2528. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +10 -0
  2529. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  2530. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  2531. data/vendor/rails/railties/lib/rails_generator/lookup.rb +249 -0
  2532. data/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  2533. data/vendor/rails/railties/lib/rails_generator/options.rb +150 -0
  2534. data/vendor/rails/railties/lib/rails_generator/scripts.rb +89 -0
  2535. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +29 -0
  2536. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  2537. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  2538. data/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +24 -0
  2539. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  2540. data/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  2541. data/vendor/rails/railties/lib/railties_path.rb +1 -0
  2542. data/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  2543. data/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  2544. data/vendor/rails/railties/lib/source_annotation_extractor.rb +102 -0
  2545. data/vendor/rails/railties/lib/tasks/annotations.rake +20 -0
  2546. data/vendor/rails/railties/lib/tasks/databases.rake +436 -0
  2547. data/vendor/rails/railties/lib/tasks/documentation.rake +88 -0
  2548. data/vendor/rails/railties/lib/tasks/framework.rake +146 -0
  2549. data/vendor/rails/railties/lib/tasks/gems.rake +78 -0
  2550. data/vendor/rails/railties/lib/tasks/log.rake +9 -0
  2551. data/vendor/rails/railties/lib/tasks/middleware.rake +7 -0
  2552. data/vendor/rails/railties/lib/tasks/misc.rake +63 -0
  2553. data/vendor/rails/railties/lib/tasks/rails.rb +14 -0
  2554. data/vendor/rails/railties/lib/tasks/routes.rake +18 -0
  2555. data/vendor/rails/railties/lib/tasks/statistics.rake +17 -0
  2556. data/vendor/rails/railties/lib/tasks/testing.rake +139 -0
  2557. data/vendor/rails/railties/lib/tasks/tmp.rake +37 -0
  2558. data/vendor/rails/railties/lib/test_help.rb +38 -0
  2559. data/vendor/rails/railties/lib/webrick_server.rb +156 -0
  2560. data/vendor/rails/railties/test/abstract_unit.rb +27 -0
  2561. data/vendor/rails/railties/test/backtrace_cleaner_test.rb +61 -0
  2562. data/vendor/rails/railties/test/boot_test.rb +178 -0
  2563. data/vendor/rails/railties/test/console_app_test.rb +42 -0
  2564. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +266 -0
  2565. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  2566. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  2567. data/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  2568. data/vendor/rails/railties/test/fixtures/eager/zoo.rb +3 -0
  2569. data/vendor/rails/railties/test/fixtures/eager/zoo/reptile_house.rb +2 -0
  2570. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  2571. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  2572. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  2573. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb +5 -0
  2574. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb +5 -0
  2575. data/vendor/rails/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb +5 -0
  2576. data/vendor/rails/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb +5 -0
  2577. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb +7 -0
  2578. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb +7 -0
  2579. data/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  2580. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/init.rb +1 -0
  2581. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/lib/gemlike.rb +2 -0
  2582. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/rails/init.rb +7 -0
  2583. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  2584. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +2 -0
  2585. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  2586. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  2587. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  2588. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/controllers/engine_controller.rb +2 -0
  2589. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb +9 -0
  2590. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/models/engine_model.rb +2 -0
  2591. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml +2 -0
  2592. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/routes.rb +3 -0
  2593. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/init.rb +3 -0
  2594. data/vendor/rails/railties/test/fixtures/public/foo/bar.html +1 -0
  2595. data/vendor/rails/railties/test/fixtures/public/foo/index.html +1 -0
  2596. data/vendor/rails/railties/test/fixtures/public/index.html +1 -0
  2597. data/vendor/rails/railties/test/gem_dependency_test.rb +227 -0
  2598. data/vendor/rails/railties/test/generator_lookup_test.rb +40 -0
  2599. data/vendor/rails/railties/test/generators/generated_attribute_test.rb +38 -0
  2600. data/vendor/rails/railties/test/generators/generator_test_helper.rb +322 -0
  2601. data/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +44 -0
  2602. data/vendor/rails/railties/test/generators/rails_helper_generator_test.rb +36 -0
  2603. data/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +29 -0
  2604. data/vendor/rails/railties/test/generators/rails_model_generator_test.rb +96 -0
  2605. data/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +29 -0
  2606. data/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +151 -0
  2607. data/vendor/rails/railties/test/generators/rails_template_runner_test.rb +216 -0
  2608. data/vendor/rails/railties/test/initializer_test.rb +437 -0
  2609. data/vendor/rails/railties/test/metal_test.rb +72 -0
  2610. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  2611. data/vendor/rails/railties/test/plugin_loader_test.rb +172 -0
  2612. data/vendor/rails/railties/test/plugin_locator_test.rb +62 -0
  2613. data/vendor/rails/railties/test/plugin_test.rb +162 -0
  2614. data/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  2615. data/vendor/rails/railties/test/rack_static_test.rb +47 -0
  2616. data/vendor/rails/railties/test/rails_generator_test.rb +145 -0
  2617. data/vendor/rails/railties/test/rails_info_controller_test.rb +52 -0
  2618. data/vendor/rails/railties/test/rails_info_test.rb +99 -0
  2619. data/vendor/rails/railties/test/secret_key_generation_test.rb +38 -0
  2620. data/vendor/rails/railties/test/vendor/gems/dummy-gem-a-0.4.0/lib/dummy-gem-a.rb +1 -0
  2621. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.4.0/lib/dummy-gem-b.rb +1 -0
  2622. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.6.0/lib/dummy-gem-b.rb +1 -0
  2623. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.4.0/lib/dummy-gem-c.rb +1 -0
  2624. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.6.0/lib/dummy-gem-c.rb +1 -0
  2625. data/vendor/rails/railties/test/vendor/gems/dummy-gem-d-1.0.0/lib/dummy-gem-d.rb +1 -0
  2626. data/vendor/rails/railties/test/vendor/gems/dummy-gem-e-1.0.0/lib/dummy-gem-e.rb +1 -0
  2627. data/vendor/rails/railties/test/vendor/gems/dummy-gem-f-1.0.0/lib/dummy-gem-f.rb +1 -0
  2628. data/vendor/rails/railties/test/vendor/gems/dummy-gem-g-1.0.0/lib/dummy-gem-g.rb +1 -0
  2629. data/vendor/rails/railties/test/vendor/gems/dummy-gem-h-1.0.0/lib/dummy-gem-h.rb +1 -0
  2630. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/ext/dummy-gem-i/Makefile +0 -0
  2631. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/lib/dummy-gem-i.rb +1 -0
  2632. data/vendor/rails/railties/test/vendor/gems/dummy-gem-j-1.0.0/lib/dummy-gem-j.rb +1 -0
  2633. data/vendor/rails/railties/test/vendor/gems/dummy-gem-k-1.0.0/lib/dummy-gem-k.rb +1 -0
  2634. data/vendor/rails/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb +1 -0
  2635. metadata +3023 -0
@@ -0,0 +1,121 @@
1
+ require 'abstract_unit'
2
+
3
+ class DateHelperDistanceOfTimeInWordsI18nTests < Test::Unit::TestCase
4
+ include ActionView::Helpers::DateHelper
5
+ attr_reader :request
6
+
7
+ def setup
8
+ @from = Time.mktime(2004, 6, 6, 21, 45, 0)
9
+ end
10
+
11
+ # distance_of_time_in_words
12
+
13
+ def test_distance_of_time_in_words_calls_i18n
14
+ { # with include_seconds
15
+ [2.seconds, true] => [:'less_than_x_seconds', 5],
16
+ [9.seconds, true] => [:'less_than_x_seconds', 10],
17
+ [19.seconds, true] => [:'less_than_x_seconds', 20],
18
+ [30.seconds, true] => [:'half_a_minute', nil],
19
+ [59.seconds, true] => [:'less_than_x_minutes', 1],
20
+ [60.seconds, true] => [:'x_minutes', 1],
21
+
22
+ # without include_seconds
23
+ [29.seconds, false] => [:'less_than_x_minutes', 1],
24
+ [60.seconds, false] => [:'x_minutes', 1],
25
+ [44.minutes, false] => [:'x_minutes', 44],
26
+ [61.minutes, false] => [:'about_x_hours', 1],
27
+ [24.hours, false] => [:'x_days', 1],
28
+ [30.days, false] => [:'about_x_months', 1],
29
+ [60.days, false] => [:'x_months', 2],
30
+ [1.year, false] => [:'about_x_years', 1],
31
+ [3.years + 6.months, false] => [:'over_x_years', 3],
32
+ [3.years + 10.months, false] => [:'almost_x_years', 4]
33
+
34
+ }.each do |passed, expected|
35
+ assert_distance_of_time_in_words_translates_key passed, expected
36
+ end
37
+ end
38
+
39
+ def assert_distance_of_time_in_words_translates_key(passed, expected)
40
+ diff, include_seconds = *passed
41
+ key, count = *expected
42
+ to = @from + diff
43
+
44
+ options = {:locale => 'en', :scope => :'datetime.distance_in_words'}
45
+ options[:count] = count if count
46
+
47
+ I18n.expects(:t).with(key, options)
48
+ distance_of_time_in_words(@from, to, include_seconds, :locale => 'en')
49
+ end
50
+
51
+ def test_distance_of_time_pluralizations
52
+ { [:'less_than_x_seconds', 1] => 'less than 1 second',
53
+ [:'less_than_x_seconds', 2] => 'less than 2 seconds',
54
+ [:'less_than_x_minutes', 1] => 'less than a minute',
55
+ [:'less_than_x_minutes', 2] => 'less than 2 minutes',
56
+ [:'x_minutes', 1] => '1 minute',
57
+ [:'x_minutes', 2] => '2 minutes',
58
+ [:'about_x_hours', 1] => 'about 1 hour',
59
+ [:'about_x_hours', 2] => 'about 2 hours',
60
+ [:'x_days', 1] => '1 day',
61
+ [:'x_days', 2] => '2 days',
62
+ [:'about_x_years', 1] => 'about 1 year',
63
+ [:'about_x_years', 2] => 'about 2 years',
64
+ [:'over_x_years', 1] => 'over 1 year',
65
+ [:'over_x_years', 2] => 'over 2 years'
66
+
67
+ }.each do |args, expected|
68
+ key, count = *args
69
+ assert_equal expected, I18n.t(key, :count => count, :scope => 'datetime.distance_in_words')
70
+ end
71
+ end
72
+ end
73
+
74
+ class DateHelperSelectTagsI18nTests < Test::Unit::TestCase
75
+ include ActionView::Helpers::DateHelper
76
+ attr_reader :request
77
+
78
+ def setup
79
+ @prompt_defaults = {:year => 'Year', :month => 'Month', :day => 'Day', :hour => 'Hour', :minute => 'Minute', :second => 'Seconds'}
80
+
81
+ I18n.stubs(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
82
+ end
83
+
84
+ # select_month
85
+
86
+ def test_select_month_given_use_month_names_option_does_not_translate_monthnames
87
+ I18n.expects(:translate).never
88
+ select_month(8, :locale => 'en', :use_month_names => Date::MONTHNAMES)
89
+ end
90
+
91
+ def test_select_month_translates_monthnames
92
+ I18n.expects(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
93
+ select_month(8, :locale => 'en')
94
+ end
95
+
96
+ def test_select_month_given_use_short_month_option_translates_abbr_monthnames
97
+ I18n.expects(:translate).with(:'date.abbr_month_names', :locale => 'en').returns Date::ABBR_MONTHNAMES
98
+ select_month(8, :locale => 'en', :use_short_month => true)
99
+ end
100
+
101
+ def test_date_or_time_select_translates_prompts
102
+ @prompt_defaults.each do |key, prompt|
103
+ I18n.expects(:translate).with(('datetime.prompts.' + key.to_s).to_sym, :locale => 'en').returns prompt
104
+ end
105
+
106
+ I18n.expects(:translate).with(:'date.order', :locale => 'en').returns [:year, :month, :day]
107
+ datetime_select('post', 'updated_at', :locale => 'en', :include_seconds => true, :prompt => true)
108
+ end
109
+
110
+ # date_or_time_select
111
+
112
+ def test_date_or_time_select_given_an_order_options_does_not_translate_order
113
+ I18n.expects(:translate).never
114
+ datetime_select('post', 'updated_at', :order => [:year, :month, :day], :locale => 'en')
115
+ end
116
+
117
+ def test_date_or_time_select_given_no_order_options_translates_order
118
+ I18n.expects(:translate).with(:'date.order', :locale => 'en').returns [:year, :month, :day]
119
+ datetime_select('post', 'updated_at', :locale => 'en')
120
+ end
121
+ end
@@ -0,0 +1,2603 @@
1
+ require 'abstract_unit'
2
+
3
+ class DateHelperTest < ActionView::TestCase
4
+ tests ActionView::Helpers::DateHelper
5
+
6
+ silence_warnings do
7
+ Post = Struct.new("Post", :id, :written_on, :updated_at)
8
+ Post.class_eval do
9
+ def id
10
+ 123
11
+ end
12
+ def id_before_type_cast
13
+ 123
14
+ end
15
+ def to_param
16
+ '123'
17
+ end
18
+ end
19
+ end
20
+
21
+ def assert_distance_of_time_in_words(from, to=nil)
22
+ to ||= from
23
+
24
+ # 0..1 with include_seconds
25
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, to + 0.seconds, true)
26
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, to + 4.seconds, true)
27
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, to + 5.seconds, true)
28
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, to + 9.seconds, true)
29
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, to + 10.seconds, true)
30
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, to + 19.seconds, true)
31
+ assert_equal "half a minute", distance_of_time_in_words(from, to + 20.seconds, true)
32
+ assert_equal "half a minute", distance_of_time_in_words(from, to + 39.seconds, true)
33
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 40.seconds, true)
34
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 59.seconds, true)
35
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 60.seconds, true)
36
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 89.seconds, true)
37
+
38
+ # First case 0..1
39
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 0.seconds)
40
+ assert_equal "less than a minute", distance_of_time_in_words(from, to + 29.seconds)
41
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 30.seconds)
42
+ assert_equal "1 minute", distance_of_time_in_words(from, to + 1.minutes + 29.seconds)
43
+
44
+ # 2..44
45
+ assert_equal "2 minutes", distance_of_time_in_words(from, to + 1.minutes + 30.seconds)
46
+ assert_equal "44 minutes", distance_of_time_in_words(from, to + 44.minutes + 29.seconds)
47
+
48
+ # 45..89
49
+ assert_equal "about 1 hour", distance_of_time_in_words(from, to + 44.minutes + 30.seconds)
50
+ assert_equal "about 1 hour", distance_of_time_in_words(from, to + 89.minutes + 29.seconds)
51
+
52
+ # 90..1439
53
+ assert_equal "about 2 hours", distance_of_time_in_words(from, to + 89.minutes + 30.seconds)
54
+ assert_equal "about 24 hours", distance_of_time_in_words(from, to + 23.hours + 59.minutes + 29.seconds)
55
+
56
+ # 1440..2529
57
+ assert_equal "1 day", distance_of_time_in_words(from, to + 23.hours + 59.minutes + 30.seconds)
58
+ assert_equal "1 day", distance_of_time_in_words(from, to + 41.hours + 59.minutes + 29.seconds)
59
+
60
+ # 2530..43199
61
+ assert_equal "2 days", distance_of_time_in_words(from, to + 42.hours + 59.minutes + 30.seconds)
62
+ assert_equal "3 days", distance_of_time_in_words(from, to + 2.days + 12.hours)
63
+ assert_equal "30 days", distance_of_time_in_words(from, to + 29.days + 23.hours + 59.minutes + 29.seconds)
64
+
65
+ # 43200..86399
66
+ assert_equal "about 1 month", distance_of_time_in_words(from, to + 29.days + 23.hours + 59.minutes + 30.seconds)
67
+ assert_equal "about 1 month", distance_of_time_in_words(from, to + 59.days + 23.hours + 59.minutes + 29.seconds)
68
+
69
+ # 86400..525599
70
+ assert_equal "2 months", distance_of_time_in_words(from, to + 59.days + 23.hours + 59.minutes + 30.seconds)
71
+ assert_equal "12 months", distance_of_time_in_words(from, to + 1.years - 31.seconds)
72
+
73
+ # > 525599
74
+ assert_equal "about 1 year", distance_of_time_in_words(from, to + 1.years - 30.seconds)
75
+ assert_equal "about 1 year", distance_of_time_in_words(from, to + 1.years + 3.months - 1.day)
76
+ assert_equal "over 1 year", distance_of_time_in_words(from, to + 1.years + 6.months)
77
+
78
+ assert_equal "almost 2 years", distance_of_time_in_words(from, to + 2.years - 3.months + 1.day)
79
+ assert_equal "about 2 years", distance_of_time_in_words(from, to + 2.years + 3.months - 1.day)
80
+ assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 3.months + 1.day)
81
+ assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 9.months - 1.day)
82
+ assert_equal "almost 3 years", distance_of_time_in_words(from, to + 2.years + 9.months + 1.day)
83
+
84
+ assert_equal "almost 5 years", distance_of_time_in_words(from, to + 5.years - 3.months + 1.day)
85
+ assert_equal "about 5 years", distance_of_time_in_words(from, to + 5.years + 3.months - 1.day)
86
+ assert_equal "over 5 years", distance_of_time_in_words(from, to + 5.years + 3.months + 1.day)
87
+ assert_equal "over 5 years", distance_of_time_in_words(from, to + 5.years + 9.months - 1.day)
88
+ assert_equal "almost 6 years", distance_of_time_in_words(from, to + 5.years + 9.months + 1.day)
89
+
90
+ assert_equal "almost 10 years", distance_of_time_in_words(from, to + 10.years - 3.months + 1.day)
91
+ assert_equal "about 10 years", distance_of_time_in_words(from, to + 10.years + 3.months - 1.day)
92
+ assert_equal "over 10 years", distance_of_time_in_words(from, to + 10.years + 3.months + 1.day)
93
+ assert_equal "over 10 years", distance_of_time_in_words(from, to + 10.years + 9.months - 1.day)
94
+ assert_equal "almost 11 years", distance_of_time_in_words(from, to + 10.years + 9.months + 1.day)
95
+
96
+ # test to < from
97
+ assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, to)
98
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from + 19.seconds, to, true)
99
+ end
100
+
101
+ def test_distance_in_words
102
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
103
+ assert_distance_of_time_in_words(from)
104
+ end
105
+
106
+ def test_distance_in_words_with_time_zones
107
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
108
+ assert_distance_of_time_in_words(from.in_time_zone('Alaska'))
109
+ assert_distance_of_time_in_words(from.in_time_zone('Hawaii'))
110
+ end
111
+
112
+ def test_distance_in_words_with_different_time_zones
113
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
114
+ assert_distance_of_time_in_words(
115
+ from.in_time_zone('Alaska'),
116
+ from.in_time_zone('Hawaii')
117
+ )
118
+ end
119
+
120
+ def test_distance_in_words_with_dates
121
+ start_date = Date.new 1975, 1, 31
122
+ end_date = Date.new 1977, 1, 31
123
+ assert_equal("about 2 years", distance_of_time_in_words(start_date, end_date))
124
+ end
125
+
126
+ def test_distance_in_words_with_integers
127
+ assert_equal "less than a minute", distance_of_time_in_words(59)
128
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60)
129
+ assert_equal "less than a minute", distance_of_time_in_words(0, 59)
130
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60, 0)
131
+ end
132
+
133
+ def test_time_ago_in_words
134
+ assert_equal "about 1 year", time_ago_in_words(1.year.ago - 1.day)
135
+ end
136
+
137
+ def test_select_day
138
+ expected = %(<select id="date_day" name="date[day]">\n)
139
+ 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)
140
+ expected << "</select>\n"
141
+
142
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16))
143
+ assert_dom_equal expected, select_day(16)
144
+ end
145
+
146
+ def test_select_day_with_blank
147
+ expected = %(<select id="date_day" name="date[day]">\n)
148
+ 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)
149
+ expected << "</select>\n"
150
+
151
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), :include_blank => true)
152
+ assert_dom_equal expected, select_day(16, :include_blank => true)
153
+ end
154
+
155
+ def test_select_day_nil_with_blank
156
+ expected = %(<select id="date_day" name="date[day]">\n)
157
+ 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)
158
+ expected << "</select>\n"
159
+
160
+ assert_dom_equal expected, select_day(nil, :include_blank => true)
161
+ end
162
+
163
+ def test_select_day_with_html_options
164
+ expected = %(<select id="date_day" name="date[day]" class="selector">\n)
165
+ 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)
166
+ expected << "</select>\n"
167
+
168
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), {}, :class => 'selector')
169
+ assert_dom_equal expected, select_day(16, {}, :class => 'selector')
170
+ end
171
+
172
+ def test_select_day_with_default_prompt
173
+ expected = %(<select id="date_day" name="date[day]">\n)
174
+ expected << %(<option value="">Day</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)
175
+ expected << "</select>\n"
176
+
177
+ assert_dom_equal expected, select_day(16, :prompt => true)
178
+ end
179
+
180
+ def test_select_day_with_custom_prompt
181
+ expected = %(<select id="date_day" name="date[day]">\n)
182
+ expected << %(<option value="">Choose day</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)
183
+ expected << "</select>\n"
184
+
185
+ assert_dom_equal expected, select_day(16, :prompt => 'Choose day')
186
+ end
187
+
188
+ def test_select_month
189
+ expected = %(<select id="date_month" name="date[month]">\n)
190
+ 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)
191
+ expected << "</select>\n"
192
+
193
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16))
194
+ assert_dom_equal expected, select_month(8)
195
+ end
196
+
197
+ def test_select_month_with_disabled
198
+ expected = %(<select id="date_month" name="date[month]" disabled="disabled">\n)
199
+ 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)
200
+ expected << "</select>\n"
201
+
202
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :disabled => true)
203
+ assert_dom_equal expected, select_month(8, :disabled => true)
204
+ end
205
+
206
+ def test_select_month_with_field_name_override
207
+ expected = %(<select id="date_mois" name="date[mois]">\n)
208
+ 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)
209
+ expected << "</select>\n"
210
+
211
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :field_name => 'mois')
212
+ assert_dom_equal expected, select_month(8, :field_name => 'mois')
213
+ end
214
+
215
+ def test_select_month_with_blank
216
+ expected = %(<select id="date_month" name="date[month]">\n)
217
+ 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)
218
+ expected << "</select>\n"
219
+
220
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :include_blank => true)
221
+ assert_dom_equal expected, select_month(8, :include_blank => true)
222
+ end
223
+
224
+ def test_select_month_nil_with_blank
225
+ expected = %(<select id="date_month" name="date[month]">\n)
226
+ 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)
227
+ expected << "</select>\n"
228
+
229
+ assert_dom_equal expected, select_month(nil, :include_blank => true)
230
+ end
231
+
232
+ def test_select_month_with_numbers
233
+ expected = %(<select id="date_month" name="date[month]">\n)
234
+ 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)
235
+ expected << "</select>\n"
236
+
237
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_numbers => true)
238
+ assert_dom_equal expected, select_month(8, :use_month_numbers => true)
239
+ end
240
+
241
+ def test_select_month_with_numbers_and_names
242
+ expected = %(<select id="date_month" name="date[month]">\n)
243
+ 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)
244
+ expected << "</select>\n"
245
+
246
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true)
247
+ assert_dom_equal expected, select_month(8, :add_month_numbers => true)
248
+ end
249
+
250
+ def test_select_month_with_numbers_and_names_with_abbv
251
+ expected = %(<select id="date_month" name="date[month]">\n)
252
+ 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)
253
+ expected << "</select>\n"
254
+
255
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true, :use_short_month => true)
256
+ assert_dom_equal expected, select_month(8, :add_month_numbers => true, :use_short_month => true)
257
+ end
258
+
259
+ def test_select_month_with_abbv
260
+ expected = %(<select id="date_month" name="date[month]">\n)
261
+ 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)
262
+ expected << "</select>\n"
263
+
264
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_short_month => true)
265
+ assert_dom_equal expected, select_month(8, :use_short_month => true)
266
+ end
267
+
268
+ def test_select_month_with_custom_names
269
+ month_names = %w(nil Januar Februar Marts April Maj Juni Juli August September Oktober November December)
270
+
271
+ expected = %(<select id="date_month" name="date[month]">\n)
272
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month]}</option>\n) }
273
+ expected << "</select>\n"
274
+
275
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
276
+ assert_dom_equal expected, select_month(8, :use_month_names => month_names)
277
+ end
278
+
279
+ def test_select_month_with_zero_indexed_custom_names
280
+ month_names = %w(Januar Februar Marts April Maj Juni Juli August September Oktober November December)
281
+
282
+ expected = %(<select id="date_month" name="date[month]">\n)
283
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month-1]}</option>\n) }
284
+ expected << "</select>\n"
285
+
286
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
287
+ assert_dom_equal expected, select_month(8, :use_month_names => month_names)
288
+ end
289
+
290
+ def test_select_month_with_hidden
291
+ assert_dom_equal "<input type=\"hidden\" id=\"date_month\" name=\"date[month]\" value=\"8\" />\n", select_month(8, :use_hidden => true)
292
+ end
293
+
294
+ def test_select_month_with_hidden_and_field_name
295
+ assert_dom_equal "<input type=\"hidden\" id=\"date_mois\" name=\"date[mois]\" value=\"8\" />\n", select_month(8, :use_hidden => true, :field_name => 'mois')
296
+ end
297
+
298
+ def test_select_month_with_html_options
299
+ expected = %(<select id="date_month" name="date[month]" class="selector" accesskey="M">\n)
300
+ 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)
301
+ expected << "</select>\n"
302
+
303
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), {}, :class => 'selector', :accesskey => 'M')
304
+ #result = select_month(Time.mktime(2003, 8, 16), {}, :class => 'selector', :accesskey => 'M')
305
+ #assert result.include?('<select id="date_month" name="date[month]"')
306
+ #assert result.include?('class="selector"')
307
+ #assert result.include?('accesskey="M"')
308
+ #assert result.include?('<option value="1">January')
309
+ end
310
+
311
+ def test_select_month_with_default_prompt
312
+ expected = %(<select id="date_month" name="date[month]">\n)
313
+ expected << %(<option value="">Month</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)
314
+ expected << "</select>\n"
315
+
316
+ assert_dom_equal expected, select_month(8, :prompt => true)
317
+ end
318
+
319
+ def test_select_month_with_custom_prompt
320
+ expected = %(<select id="date_month" name="date[month]">\n)
321
+ expected << %(<option value="">Choose month</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)
322
+ expected << "</select>\n"
323
+
324
+ assert_dom_equal expected, select_month(8, :prompt => 'Choose month')
325
+ end
326
+
327
+ def test_select_year
328
+ expected = %(<select id="date_year" name="date[year]">\n)
329
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
330
+ expected << "</select>\n"
331
+
332
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005)
333
+ assert_dom_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005)
334
+ end
335
+
336
+ def test_select_year_with_disabled
337
+ expected = %(<select id="date_year" name="date[year]" disabled="disabled">\n)
338
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
339
+ expected << "</select>\n"
340
+
341
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :disabled => true, :start_year => 2003, :end_year => 2005)
342
+ assert_dom_equal expected, select_year(2003, :disabled => true, :start_year => 2003, :end_year => 2005)
343
+ end
344
+
345
+ def test_select_year_with_field_name_override
346
+ expected = %(<select id="date_annee" name="date[annee]">\n)
347
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
348
+ expected << "</select>\n"
349
+
350
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :field_name => 'annee')
351
+ assert_dom_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005, :field_name => 'annee')
352
+ end
353
+
354
+ def test_select_year_with_type_discarding
355
+ expected = %(<select id="date_year" name="date_year">\n)
356
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
357
+ expected << "</select>\n"
358
+
359
+ assert_dom_equal expected, select_year(
360
+ Time.mktime(2003, 8, 16), :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
361
+ assert_dom_equal expected, select_year(
362
+ 2003, :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
363
+ end
364
+
365
+ def test_select_year_descending
366
+ expected = %(<select id="date_year" name="date[year]">\n)
367
+ expected << %(<option value="2005" selected="selected">2005</option>\n<option value="2004">2004</option>\n<option value="2003">2003</option>\n)
368
+ expected << "</select>\n"
369
+
370
+ assert_dom_equal expected, select_year(Time.mktime(2005, 8, 16), :start_year => 2005, :end_year => 2003)
371
+ assert_dom_equal expected, select_year(2005, :start_year => 2005, :end_year => 2003)
372
+ end
373
+
374
+ def test_select_year_with_hidden
375
+ assert_dom_equal "<input type=\"hidden\" id=\"date_year\" name=\"date[year]\" value=\"2007\" />\n", select_year(2007, :use_hidden => true)
376
+ end
377
+
378
+ def test_select_year_with_hidden_and_field_name
379
+ assert_dom_equal "<input type=\"hidden\" id=\"date_anno\" name=\"date[anno]\" value=\"2007\" />\n", select_year(2007, :use_hidden => true, :field_name => 'anno')
380
+ end
381
+
382
+ def test_select_year_with_html_options
383
+ expected = %(<select id="date_year" name="date[year]" class="selector" accesskey="M">\n)
384
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
385
+ expected << "</select>\n"
386
+
387
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005}, :class => 'selector', :accesskey => 'M')
388
+ #result = select_year(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005}, :class => 'selector', :accesskey => 'M')
389
+ #assert result.include?('<select id="date_year" name="date[year]"')
390
+ #assert result.include?('class="selector"')
391
+ #assert result.include?('accesskey="M"')
392
+ #assert result.include?('<option value="2003"')
393
+ end
394
+
395
+ def test_select_year_with_default_prompt
396
+ expected = %(<select id="date_year" name="date[year]">\n)
397
+ expected << %(<option value="">Year</option>\n<option value="2003">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
398
+ expected << "</select>\n"
399
+
400
+ assert_dom_equal expected, select_year(nil, :start_year => 2003, :end_year => 2005, :prompt => true)
401
+ end
402
+
403
+ def test_select_year_with_custom_prompt
404
+ expected = %(<select id="date_year" name="date[year]">\n)
405
+ expected << %(<option value="">Choose year</option>\n<option value="2003">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
406
+ expected << "</select>\n"
407
+
408
+ assert_dom_equal expected, select_year(nil, :start_year => 2003, :end_year => 2005, :prompt => 'Choose year')
409
+ end
410
+
411
+ def test_select_hour
412
+ expected = %(<select id="date_hour" name="date[hour]">\n)
413
+ 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)
414
+ expected << "</select>\n"
415
+
416
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
417
+ end
418
+
419
+ def test_select_hour_with_disabled
420
+ expected = %(<select id="date_hour" name="date[hour]" disabled="disabled">\n)
421
+ 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)
422
+ expected << "</select>\n"
423
+
424
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
425
+ end
426
+
427
+ def test_select_hour_with_field_name_override
428
+ expected = %(<select id="date_heure" name="date[heure]">\n)
429
+ 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)
430
+ expected << "</select>\n"
431
+
432
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'heure')
433
+ end
434
+
435
+ def test_select_hour_with_blank
436
+ expected = %(<select id="date_hour" name="date[hour]">\n)
437
+ 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)
438
+ expected << "</select>\n"
439
+
440
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
441
+ end
442
+
443
+ def test_select_hour_nil_with_blank
444
+ expected = %(<select id="date_hour" name="date[hour]">\n)
445
+ 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)
446
+ expected << "</select>\n"
447
+
448
+ assert_dom_equal expected, select_hour(nil, :include_blank => true)
449
+ end
450
+
451
+ def test_select_hour_with_html_options
452
+ expected = %(<select id="date_hour" name="date[hour]" class="selector" accesskey="M">\n)
453
+ 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)
454
+ expected << "</select>\n"
455
+
456
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
457
+ end
458
+
459
+ def test_select_hour_with_default_prompt
460
+ expected = %(<select id="date_hour" name="date[hour]">\n)
461
+ expected << %(<option value="">Hour</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)
462
+ expected << "</select>\n"
463
+
464
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => true)
465
+ end
466
+
467
+ def test_select_hour_with_custom_prompt
468
+ expected = %(<select id="date_hour" name="date[hour]">\n)
469
+ expected << %(<option value="">Choose hour</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)
470
+ expected << "</select>\n"
471
+
472
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => 'Choose hour')
473
+ end
474
+
475
+ def test_select_minute
476
+ expected = %(<select id="date_minute" name="date[minute]">\n)
477
+ 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)
478
+ expected << "</select>\n"
479
+
480
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
481
+ end
482
+
483
+ def test_select_minute_with_disabled
484
+ expected = %(<select id="date_minute" name="date[minute]" disabled="disabled">\n)
485
+ 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)
486
+ expected << "</select>\n"
487
+
488
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
489
+ end
490
+
491
+ def test_select_minute_with_field_name_override
492
+ expected = %(<select id="date_minuto" name="date[minuto]">\n)
493
+ 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)
494
+ expected << "</select>\n"
495
+
496
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'minuto')
497
+ end
498
+
499
+ def test_select_minute_with_blank
500
+ expected = %(<select id="date_minute" name="date[minute]">\n)
501
+ 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)
502
+ expected << "</select>\n"
503
+
504
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
505
+ end
506
+
507
+ def test_select_minute_with_blank_and_step
508
+ expected = %(<select id="date_minute" name="date[minute]">\n)
509
+ 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)
510
+ expected << "</select>\n"
511
+
512
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), { :include_blank => true , :minute_step => 15 })
513
+ end
514
+
515
+ def test_select_minute_nil_with_blank
516
+ expected = %(<select id="date_minute" name="date[minute]">\n)
517
+ 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)
518
+ expected << "</select>\n"
519
+
520
+ assert_dom_equal expected, select_minute(nil, :include_blank => true)
521
+ end
522
+
523
+ def test_select_minute_nil_with_blank_and_step
524
+ expected = %(<select id="date_minute" name="date[minute]">\n)
525
+ 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)
526
+ expected << "</select>\n"
527
+
528
+ assert_dom_equal expected, select_minute(nil, { :include_blank => true , :minute_step => 15 })
529
+ end
530
+
531
+ def test_select_minute_with_hidden
532
+ assert_dom_equal "<input type=\"hidden\" id=\"date_minute\" name=\"date[minute]\" value=\"8\" />\n", select_minute(8, :use_hidden => true)
533
+ end
534
+
535
+ def test_select_minute_with_hidden_and_field_name
536
+ assert_dom_equal "<input type=\"hidden\" id=\"date_minuto\" name=\"date[minuto]\" value=\"8\" />\n", select_minute(8, :use_hidden => true, :field_name => 'minuto')
537
+ end
538
+
539
+ def test_select_minute_with_html_options
540
+ expected = expected = %(<select id="date_minute" name="date[minute]" class="selector" accesskey="M">\n)
541
+ 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)
542
+ expected << "</select>\n"
543
+
544
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
545
+
546
+ #result = select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
547
+ #assert result.include?('<select id="date_minute" name="date[minute]"')
548
+ #assert result.include?('class="selector"')
549
+ #assert result.include?('accesskey="M"')
550
+ #assert result.include?('<option value="00">00')
551
+ end
552
+
553
+ def test_select_minute_with_default_prompt
554
+ expected = %(<select id="date_minute" name="date[minute]">\n)
555
+ expected << %(<option value="">Minute</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)
556
+ expected << "</select>\n"
557
+
558
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => true)
559
+ end
560
+
561
+ def test_select_minute_with_custom_prompt
562
+ expected = %(<select id="date_minute" name="date[minute]">\n)
563
+ expected << %(<option value="">Choose minute</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)
564
+ expected << "</select>\n"
565
+
566
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => 'Choose minute')
567
+ end
568
+
569
+ def test_select_second
570
+ expected = %(<select id="date_second" name="date[second]">\n)
571
+ 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)
572
+ expected << "</select>\n"
573
+
574
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
575
+ end
576
+
577
+ def test_select_second_with_disabled
578
+ expected = %(<select id="date_second" name="date[second]" disabled="disabled">\n)
579
+ 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)
580
+ expected << "</select>\n"
581
+
582
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
583
+ end
584
+
585
+ def test_select_second_with_field_name_override
586
+ expected = %(<select id="date_segundo" name="date[segundo]">\n)
587
+ 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)
588
+ expected << "</select>\n"
589
+
590
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'segundo')
591
+ end
592
+
593
+ def test_select_second_with_blank
594
+ expected = %(<select id="date_second" name="date[second]">\n)
595
+ 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)
596
+ expected << "</select>\n"
597
+
598
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
599
+ end
600
+
601
+ def test_select_second_nil_with_blank
602
+ expected = %(<select id="date_second" name="date[second]">\n)
603
+ 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)
604
+ expected << "</select>\n"
605
+
606
+ assert_dom_equal expected, select_second(nil, :include_blank => true)
607
+ end
608
+
609
+ def test_select_second_with_html_options
610
+ expected = %(<select id="date_second" name="date[second]" class="selector" accesskey="M">\n)
611
+ 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)
612
+ expected << "</select>\n"
613
+
614
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
615
+
616
+ #result = select_second(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector', :accesskey => 'M')
617
+ #assert result.include?('<select id="date_second" name="date[second]"')
618
+ #assert result.include?('class="selector"')
619
+ #assert result.include?('accesskey="M"')
620
+ #assert result.include?('<option value="00">00')
621
+ end
622
+
623
+ def test_select_second_with_default_prompt
624
+ expected = %(<select id="date_second" name="date[second]">\n)
625
+ expected << %(<option value="">Seconds</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)
626
+ expected << "</select>\n"
627
+
628
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => true)
629
+ end
630
+
631
+ def test_select_second_with_custom_prompt
632
+ expected = %(<select id="date_second" name="date[second]">\n)
633
+ expected << %(<option value="">Choose seconds</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)
634
+ expected << "</select>\n"
635
+
636
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => 'Choose seconds')
637
+ end
638
+
639
+ def test_select_date
640
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
641
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
642
+ expected << "</select>\n"
643
+
644
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
645
+ 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)
646
+ expected << "</select>\n"
647
+
648
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
649
+ 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)
650
+ expected << "</select>\n"
651
+
652
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
653
+ end
654
+
655
+ def test_select_date_with_order
656
+ expected = %(<select id="date_first_month" name="date[first][month]">\n)
657
+ 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)
658
+ expected << "</select>\n"
659
+
660
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
661
+ 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)
662
+ expected << "</select>\n"
663
+
664
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
665
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
666
+ expected << "</select>\n"
667
+
668
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:month, :day, :year])
669
+ end
670
+
671
+ def test_select_date_with_incomplete_order
672
+ # NOTE: modified this test because of minimal API change
673
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
674
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
675
+ expected << "</select>\n"
676
+
677
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
678
+ 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)
679
+ expected << "</select>\n"
680
+
681
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
682
+ 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)
683
+ expected << "</select>\n"
684
+
685
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
686
+ end
687
+
688
+ def test_select_date_with_disabled
689
+ expected = %(<select id="date_first_year" name="date[first][year]" disabled="disabled">\n)
690
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
691
+ expected << "</select>\n"
692
+
693
+ expected << %(<select id="date_first_month" name="date[first][month]" disabled="disabled">\n)
694
+ 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)
695
+ expected << "</select>\n"
696
+
697
+ expected << %(<select id="date_first_day" name="date[first][day]" disabled="disabled">\n)
698
+ 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)
699
+ expected << "</select>\n"
700
+
701
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :disabled => true)
702
+ end
703
+
704
+ def test_select_date_with_no_start_year
705
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
706
+ (Date.today.year-5).upto(Date.today.year+1) do |y|
707
+ if y == Date.today.year
708
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
709
+ else
710
+ expected << %(<option value="#{y}">#{y}</option>\n)
711
+ end
712
+ end
713
+ expected << "</select>\n"
714
+
715
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
716
+ 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)
717
+ expected << "</select>\n"
718
+
719
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
720
+ 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)
721
+ expected << "</select>\n"
722
+
723
+ assert_dom_equal expected, select_date(
724
+ Time.mktime(Date.today.year, 8, 16), :end_year => Date.today.year+1, :prefix => "date[first]"
725
+ )
726
+ end
727
+
728
+ def test_select_date_with_no_end_year
729
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
730
+ 2003.upto(2008) do |y|
731
+ if y == 2003
732
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
733
+ else
734
+ expected << %(<option value="#{y}">#{y}</option>\n)
735
+ end
736
+ end
737
+ expected << "</select>\n"
738
+
739
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
740
+ 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)
741
+ expected << "</select>\n"
742
+
743
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
744
+ 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)
745
+ expected << "</select>\n"
746
+
747
+ assert_dom_equal expected, select_date(
748
+ Time.mktime(2003, 8, 16), :start_year => 2003, :prefix => "date[first]"
749
+ )
750
+ end
751
+
752
+ def test_select_date_with_no_start_or_end_year
753
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
754
+ (Date.today.year-5).upto(Date.today.year+5) do |y|
755
+ if y == Date.today.year
756
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
757
+ else
758
+ expected << %(<option value="#{y}">#{y}</option>\n)
759
+ end
760
+ end
761
+ expected << "</select>\n"
762
+
763
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
764
+ 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)
765
+ expected << "</select>\n"
766
+
767
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
768
+ 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)
769
+ expected << "</select>\n"
770
+
771
+ assert_dom_equal expected, select_date(
772
+ Time.mktime(Date.today.year, 8, 16), :prefix => "date[first]"
773
+ )
774
+ end
775
+
776
+ def test_select_date_with_zero_value
777
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
778
+ expected << %(<option value="2003">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
779
+ expected << "</select>\n"
780
+
781
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
782
+ 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)
783
+ expected << "</select>\n"
784
+
785
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
786
+ 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)
787
+ expected << "</select>\n"
788
+
789
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
790
+ end
791
+
792
+ def test_select_date_with_zero_value_and_no_start_year
793
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
794
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
795
+ expected << "</select>\n"
796
+
797
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
798
+ 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)
799
+ expected << "</select>\n"
800
+
801
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
802
+ 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)
803
+ expected << "</select>\n"
804
+
805
+ assert_dom_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
806
+ end
807
+
808
+ def test_select_date_with_zero_value_and_no_end_year
809
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
810
+ last_year = Time.now.year + 5
811
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
812
+ expected << "</select>\n"
813
+
814
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
815
+ 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)
816
+ expected << "</select>\n"
817
+
818
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
819
+ 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)
820
+ expected << "</select>\n"
821
+
822
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
823
+ end
824
+
825
+ def test_select_date_with_zero_value_and_no_start_and_end_year
826
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
827
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
828
+ expected << "</select>\n"
829
+
830
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
831
+ 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)
832
+ expected << "</select>\n"
833
+
834
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
835
+ 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)
836
+ expected << "</select>\n"
837
+
838
+ assert_dom_equal expected, select_date(0, :prefix => "date[first]")
839
+ end
840
+
841
+ def test_select_date_with_nil_value_and_no_start_and_end_year
842
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
843
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
844
+ expected << "</select>\n"
845
+
846
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
847
+ 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)
848
+ expected << "</select>\n"
849
+
850
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
851
+ 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)
852
+ expected << "</select>\n"
853
+
854
+ assert_dom_equal expected, select_date(nil, :prefix => "date[first]")
855
+ end
856
+
857
+ def test_select_date_with_html_options
858
+ expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
859
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
860
+ expected << "</select>\n"
861
+
862
+ expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
863
+ 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)
864
+ expected << "</select>\n"
865
+
866
+ expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
867
+ 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)
868
+ expected << "</select>\n"
869
+
870
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => "selector")
871
+ end
872
+
873
+ def test_select_date_with_separator
874
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
875
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
876
+ expected << "</select>\n"
877
+
878
+ expected << " / "
879
+
880
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
881
+ 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)
882
+ expected << "</select>\n"
883
+
884
+ expected << " / "
885
+
886
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
887
+ 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)
888
+ expected << "</select>\n"
889
+
890
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), { :date_separator => " / ", :start_year => 2003, :end_year => 2005, :prefix => "date[first]"})
891
+ end
892
+
893
+ def test_select_datetime
894
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
895
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
896
+ expected << "</select>\n"
897
+
898
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
899
+ 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)
900
+ expected << "</select>\n"
901
+
902
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
903
+ 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)
904
+ expected << "</select>\n"
905
+
906
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
907
+ 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)
908
+ expected << "</select>\n"
909
+
910
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
911
+ 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)
912
+ expected << "</select>\n"
913
+
914
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
915
+ end
916
+
917
+ def test_select_datetime_with_separators
918
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
919
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
920
+ expected << "</select>\n"
921
+
922
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
923
+ 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)
924
+ expected << "</select>\n"
925
+
926
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
927
+ 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)
928
+ expected << "</select>\n"
929
+
930
+ expected << " &mdash; "
931
+
932
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
933
+ 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)
934
+ expected << "</select>\n"
935
+
936
+ expected << " : "
937
+
938
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
939
+ 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)
940
+ expected << "</select>\n"
941
+
942
+ assert_dom_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 => ' : ')
943
+ end
944
+
945
+ def test_select_datetime_with_nil_value_and_no_start_and_end_year
946
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
947
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
948
+ expected << "</select>\n"
949
+
950
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
951
+ 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)
952
+ expected << "</select>\n"
953
+
954
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
955
+ 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)
956
+ expected << "</select>\n"
957
+
958
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
959
+ 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)
960
+ expected << "</select>\n"
961
+
962
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
963
+ 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)
964
+ expected << "</select>\n"
965
+
966
+ assert_dom_equal expected, select_datetime(nil, :prefix => "date[first]")
967
+ end
968
+
969
+ def test_select_datetime_with_html_options
970
+ expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
971
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
972
+ expected << "</select>\n"
973
+
974
+ expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
975
+ 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)
976
+ expected << "</select>\n"
977
+
978
+ expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
979
+ 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)
980
+ expected << "</select>\n"
981
+
982
+ expected << %(<select id="date_first_hour" name="date[first][hour]" class="selector">\n)
983
+ 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)
984
+ expected << "</select>\n"
985
+
986
+ expected << %(<select id="date_first_minute" name="date[first][minute]" class="selector">\n)
987
+ 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)
988
+ expected << "</select>\n"
989
+
990
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => 'selector')
991
+ end
992
+
993
+ def test_select_datetime_with_all_separators
994
+ expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
995
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
996
+ expected << "</select>\n"
997
+
998
+ expected << "/"
999
+
1000
+ expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
1001
+ 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)
1002
+ expected << "</select>\n"
1003
+
1004
+ expected << "/"
1005
+
1006
+ expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
1007
+ 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)
1008
+ expected << "</select>\n"
1009
+
1010
+ expected << "&mdash;"
1011
+
1012
+ expected << %(<select id="date_first_hour" name="date[first][hour]" class="selector">\n)
1013
+ 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)
1014
+ expected << "</select>\n"
1015
+
1016
+ expected << ":"
1017
+
1018
+ expected << %(<select id="date_first_minute" name="date[first][minute]" class="selector">\n)
1019
+ 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)
1020
+ expected << "</select>\n"
1021
+
1022
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), { :datetime_separator => "&mdash;", :date_separator => "/", :time_separator => ":", :start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => 'selector')
1023
+ end
1024
+
1025
+ def test_select_datetime_should_work_with_date
1026
+ assert_nothing_raised { select_datetime(Date.today) }
1027
+ end
1028
+
1029
+ def test_select_datetime_with_default_prompt
1030
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1031
+ expected << %(<option value="">Year</option>\n<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1032
+ expected << "</select>\n"
1033
+
1034
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1035
+ expected << %(<option value="">Month</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)
1036
+ expected << "</select>\n"
1037
+
1038
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1039
+ expected << %(<option value="">Day</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)
1040
+ expected << "</select>\n"
1041
+
1042
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1043
+ expected << %(<option value="">Hour</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)
1044
+ expected << "</select>\n"
1045
+
1046
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1047
+ expected << %(<option value="">Minute</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)
1048
+ expected << "</select>\n"
1049
+
1050
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005,
1051
+ :prefix => "date[first]", :prompt => true)
1052
+ end
1053
+
1054
+ def test_select_datetime_with_custom_prompt
1055
+
1056
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1057
+ expected << %(<option value="">Choose year</option>\n<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1058
+ expected << "</select>\n"
1059
+
1060
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1061
+ expected << %(<option value="">Choose month</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)
1062
+ expected << "</select>\n"
1063
+
1064
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1065
+ expected << %(<option value="">Choose day</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)
1066
+ expected << "</select>\n"
1067
+
1068
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1069
+ expected << %(<option value="">Choose hour</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)
1070
+ expected << "</select>\n"
1071
+
1072
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1073
+ expected << %(<option value="">Choose minute</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)
1074
+ expected << "</select>\n"
1075
+
1076
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]",
1077
+ :prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year', :hour => 'Choose hour', :minute => 'Choose minute'})
1078
+ end
1079
+
1080
+ def test_select_time
1081
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1082
+ 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)
1083
+ expected << "</select>\n"
1084
+
1085
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1086
+ 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)
1087
+ expected << "</select>\n"
1088
+
1089
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18))
1090
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => false)
1091
+ end
1092
+
1093
+ def test_select_time_with_separator
1094
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1095
+ 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)
1096
+ expected << "</select>\n"
1097
+
1098
+ expected << " : "
1099
+
1100
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1101
+ 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)
1102
+ expected << "</select>\n"
1103
+
1104
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ')
1105
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ', :include_seconds => false)
1106
+ end
1107
+
1108
+ def test_select_time_with_seconds
1109
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1110
+ 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)
1111
+ expected << "</select>\n"
1112
+
1113
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1114
+ 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)
1115
+ expected << "</select>\n"
1116
+
1117
+ expected << %(<select id="date_second" name="date[second]">\n)
1118
+ 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)
1119
+ expected << "</select>\n"
1120
+
1121
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true)
1122
+ end
1123
+
1124
+ def test_select_time_with_seconds_and_separator
1125
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1126
+ 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)
1127
+ expected << "</select>\n"
1128
+
1129
+ expected << " : "
1130
+
1131
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1132
+ 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)
1133
+ expected << "</select>\n"
1134
+
1135
+ expected << " : "
1136
+
1137
+ expected << %(<select id="date_second" name="date[second]">\n)
1138
+ 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)
1139
+ expected << "</select>\n"
1140
+
1141
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :time_separator => ' : ')
1142
+ end
1143
+
1144
+ def test_select_time_with_html_options
1145
+ expected = %(<select id="date_hour" name="date[hour]" class="selector">\n)
1146
+ 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)
1147
+ expected << "</select>\n"
1148
+
1149
+ expected << %(<select id="date_minute" name="date[minute]" class="selector">\n)
1150
+ 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)
1151
+ expected << "</select>\n"
1152
+
1153
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector')
1154
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {:include_seconds => false}, :class => 'selector')
1155
+ end
1156
+
1157
+ def test_select_time_should_work_with_date
1158
+ assert_nothing_raised { select_time(Date.today) }
1159
+ end
1160
+
1161
+ def test_select_time_with_default_prompt
1162
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1163
+ expected << %(<option value="">Hour</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)
1164
+ expected << "</select>\n"
1165
+
1166
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1167
+ expected << %(<option value="">Minute</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)
1168
+ expected << "</select>\n"
1169
+
1170
+ expected << %(<select id="date_second" name="date[second]">\n)
1171
+ expected << %(<option value="">Seconds</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)
1172
+ expected << "</select>\n"
1173
+
1174
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :prompt => true)
1175
+ end
1176
+
1177
+ def test_select_time_with_custom_prompt
1178
+
1179
+ expected = %(<select id="date_hour" name="date[hour]">\n)
1180
+ expected << %(<option value="">Choose hour</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)
1181
+ expected << "</select>\n"
1182
+
1183
+ expected << %(<select id="date_minute" name="date[minute]">\n)
1184
+ expected << %(<option value="">Choose minute</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)
1185
+ expected << "</select>\n"
1186
+
1187
+ expected << %(<select id="date_second" name="date[second]">\n)
1188
+ expected << %(<option value="">Choose seconds</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)
1189
+ expected << "</select>\n"
1190
+
1191
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt => true, :include_seconds => true,
1192
+ :prompt => {:hour => 'Choose hour', :minute => 'Choose minute', :second => 'Choose seconds'})
1193
+ end
1194
+
1195
+ def test_date_select
1196
+ @post = Post.new
1197
+ @post.written_on = Date.new(2004, 6, 15)
1198
+
1199
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1200
+ 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}
1201
+ expected << "</select>\n"
1202
+
1203
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1204
+ 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}
1205
+ expected << "</select>\n"
1206
+
1207
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1208
+ 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}
1209
+
1210
+ expected << "</select>\n"
1211
+
1212
+ assert_dom_equal expected, date_select("post", "written_on")
1213
+ end
1214
+
1215
+ def test_date_select_without_day
1216
+ @post = Post.new
1217
+ @post.written_on = Date.new(2004, 6, 15)
1218
+
1219
+ expected = "<input type=\"hidden\" id=\"post_written_on_3i\" name=\"post[written_on(3i)]\" value=\"1\" />\n"
1220
+
1221
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1222
+ 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}
1223
+ expected << "</select>\n"
1224
+
1225
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1226
+ 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}
1227
+ expected << "</select>\n"
1228
+
1229
+ assert_dom_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
1230
+ end
1231
+
1232
+ def test_date_select_without_day_and_with_disabled_html_option
1233
+ @post = Post.new
1234
+ @post.written_on = Date.new(2004, 6, 15)
1235
+
1236
+ expected = "<input type=\"hidden\" id=\"post_written_on_3i\" disabled=\"disabled\" name=\"post[written_on(3i)]\" value=\"1\" />\n"
1237
+
1238
+ expected << %{<select id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]">\n}
1239
+ 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}
1240
+ expected << "</select>\n"
1241
+
1242
+ expected << %{<select id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]">\n}
1243
+ 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}
1244
+ expected << "</select>\n"
1245
+
1246
+ assert_dom_equal expected, date_select("post", "written_on", { :order => [ :month, :year ] }, :disabled => true)
1247
+ end
1248
+
1249
+ def test_date_select_within_fields_for
1250
+ @post = Post.new
1251
+ @post.written_on = Date.new(2004, 6, 15)
1252
+
1253
+ fields_for :post, @post do |f|
1254
+ concat f.date_select(:written_on)
1255
+ end
1256
+
1257
+ 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"
1258
+ 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"
1259
+ 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"
1260
+
1261
+ assert_dom_equal(expected, output_buffer)
1262
+ end
1263
+
1264
+ def test_date_select_within_fields_for_with_index
1265
+ @post = Post.new
1266
+ @post.written_on = Date.new(2004, 6, 15)
1267
+ id = 27
1268
+
1269
+ fields_for :post, @post, :index => id do |f|
1270
+ concat f.date_select(:written_on)
1271
+ end
1272
+
1273
+ expected = "<select id='post_#{id}_written_on_1i' name='post[#{id}][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"
1274
+ expected << "<select id='post_#{id}_written_on_2i' name='post[#{id}][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"
1275
+ expected << "<select id='post_#{id}_written_on_3i' name='post[#{id}][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"
1276
+
1277
+ assert_dom_equal(expected, output_buffer)
1278
+ end
1279
+
1280
+ def test_date_select_within_fields_for_with_blank_index
1281
+ @post = Post.new
1282
+ @post.written_on = Date.new(2004, 6, 15)
1283
+ id = nil
1284
+
1285
+ fields_for :post, @post, :index => id do |f|
1286
+ concat f.date_select(:written_on)
1287
+ end
1288
+
1289
+ expected = "<select id='post_#{id}_written_on_1i' name='post[#{id}][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"
1290
+ expected << "<select id='post_#{id}_written_on_2i' name='post[#{id}][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"
1291
+ expected << "<select id='post_#{id}_written_on_3i' name='post[#{id}][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"
1292
+
1293
+ assert_dom_equal(expected, output_buffer)
1294
+ end
1295
+
1296
+ def test_date_select_with_index
1297
+ @post = Post.new
1298
+ @post.written_on = Date.new(2004, 6, 15)
1299
+ id = 456
1300
+
1301
+ expected = %{<select id="post_456_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
1302
+ 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}
1303
+ expected << "</select>\n"
1304
+
1305
+ expected << %{<select id="post_456_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
1306
+ 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}
1307
+ expected << "</select>\n"
1308
+
1309
+ expected << %{<select id="post_456_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
1310
+ 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}
1311
+ expected << "</select>\n"
1312
+
1313
+ assert_dom_equal expected, date_select("post", "written_on", :index => id)
1314
+ end
1315
+
1316
+ def test_date_select_with_auto_index
1317
+ @post = Post.new
1318
+ @post.written_on = Date.new(2004, 6, 15)
1319
+ id = 123
1320
+
1321
+ expected = %{<select id="post_123_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
1322
+ 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}
1323
+ expected << "</select>\n"
1324
+
1325
+ expected << %{<select id="post_123_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
1326
+ 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}
1327
+ expected << "</select>\n"
1328
+
1329
+ expected << %{<select id="post_123_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
1330
+ 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}
1331
+ expected << "</select>\n"
1332
+
1333
+ assert_dom_equal expected, date_select("post[]", "written_on")
1334
+ end
1335
+
1336
+ def test_date_select_with_different_order
1337
+ @post = Post.new
1338
+ @post.written_on = Date.new(2004, 6, 15)
1339
+
1340
+ expected = %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1341
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1342
+ expected << "</select>\n"
1343
+
1344
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1345
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1346
+ expected << "</select>\n"
1347
+
1348
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1349
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1350
+ expected << "</select>\n"
1351
+
1352
+ assert_dom_equal expected, date_select("post", "written_on", :order => [:day, :month, :year])
1353
+ end
1354
+
1355
+ def test_date_select_with_nil
1356
+ @post = Post.new
1357
+
1358
+ start_year = Time.now.year-5
1359
+ end_year = Time.now.year+5
1360
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1361
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.year}>#{i}</option>\n) }
1362
+ expected << "</select>\n"
1363
+
1364
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1365
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.month}>#{Date::MONTHNAMES[i]}</option>\n) }
1366
+ expected << "</select>\n"
1367
+
1368
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1369
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
1370
+ expected << "</select>\n"
1371
+
1372
+ assert_dom_equal expected, date_select("post", "written_on")
1373
+ end
1374
+
1375
+ def test_date_select_with_nil_and_blank
1376
+ @post = Post.new
1377
+
1378
+ start_year = Time.now.year-5
1379
+ end_year = Time.now.year+5
1380
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1381
+ expected << "<option value=\"\"></option>\n"
1382
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1383
+ expected << "</select>\n"
1384
+
1385
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1386
+ expected << "<option value=\"\"></option>\n"
1387
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
1388
+ expected << "</select>\n"
1389
+
1390
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1391
+ expected << "<option value=\"\"></option>\n"
1392
+ 1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1393
+ expected << "</select>\n"
1394
+
1395
+ assert_dom_equal expected, date_select("post", "written_on", :include_blank => true)
1396
+ end
1397
+
1398
+ def test_date_select_with_nil_and_blank_and_order
1399
+ @post = Post.new
1400
+
1401
+ start_year = Time.now.year-5
1402
+ end_year = Time.now.year+5
1403
+
1404
+ expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n"
1405
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1406
+ expected << "<option value=\"\"></option>\n"
1407
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1408
+ expected << "</select>\n"
1409
+
1410
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1411
+ expected << "<option value=\"\"></option>\n"
1412
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
1413
+ expected << "</select>\n"
1414
+
1415
+ assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true)
1416
+ end
1417
+
1418
+ def test_date_select_with_nil_and_blank_and_order
1419
+ @post = Post.new
1420
+
1421
+ start_year = Time.now.year-5
1422
+ end_year = Time.now.year+5
1423
+
1424
+ expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n"
1425
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1426
+ expected << "<option value=\"\"></option>\n"
1427
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1428
+ expected << "</select>\n"
1429
+
1430
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1431
+ expected << "<option value=\"\"></option>\n"
1432
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
1433
+ expected << "</select>\n"
1434
+
1435
+ assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true)
1436
+ end
1437
+
1438
+ def test_date_select_cant_override_discard_hour
1439
+ @post = Post.new
1440
+ @post.written_on = Date.new(2004, 6, 15)
1441
+
1442
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1443
+ 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}
1444
+ expected << "</select>\n"
1445
+
1446
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1447
+ 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}
1448
+ expected << "</select>\n"
1449
+
1450
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1451
+ 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}
1452
+ expected << "</select>\n"
1453
+
1454
+ assert_dom_equal expected, date_select("post", "written_on", :discard_hour => false)
1455
+ end
1456
+
1457
+ def test_date_select_with_html_options
1458
+ @post = Post.new
1459
+ @post.written_on = Date.new(2004, 6, 15)
1460
+
1461
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]" class="selector">\n}
1462
+ 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}
1463
+ expected << "</select>\n"
1464
+
1465
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]" class="selector">\n}
1466
+ 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}
1467
+ expected << "</select>\n"
1468
+
1469
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]" class="selector">\n}
1470
+ 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}
1471
+
1472
+ expected << "</select>\n"
1473
+
1474
+ assert_dom_equal expected, date_select("post", "written_on", {}, :class => 'selector')
1475
+ end
1476
+
1477
+ def test_date_select_with_html_options_within_fields_for
1478
+ @post = Post.new
1479
+ @post.written_on = Date.new(2004, 6, 15)
1480
+
1481
+ fields_for :post, @post do |f|
1482
+ concat f.date_select(:written_on, {}, :class => 'selector')
1483
+ end
1484
+
1485
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]" class="selector">\n}
1486
+ 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}
1487
+ expected << "</select>\n"
1488
+
1489
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]" class="selector">\n}
1490
+ 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}
1491
+ expected << "</select>\n"
1492
+
1493
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]" class="selector">\n}
1494
+ 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}
1495
+
1496
+ expected << "</select>\n"
1497
+
1498
+ assert_dom_equal expected, output_buffer
1499
+ end
1500
+
1501
+ def test_date_select_with_separator
1502
+ @post = Post.new
1503
+ @post.written_on = Date.new(2004, 6, 15)
1504
+
1505
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1506
+ 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}
1507
+ expected << "</select>\n"
1508
+
1509
+ expected << " / "
1510
+
1511
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1512
+ 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}
1513
+ expected << "</select>\n"
1514
+
1515
+ expected << " / "
1516
+
1517
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1518
+ 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}
1519
+
1520
+ expected << "</select>\n"
1521
+
1522
+ assert_dom_equal expected, date_select("post", "written_on", { :date_separator => " / " })
1523
+ end
1524
+
1525
+ def test_date_select_with_default_prompt
1526
+ @post = Post.new
1527
+ @post.written_on = Date.new(2004, 6, 15)
1528
+
1529
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1530
+ expected << %{<option value="">Year</option>\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 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}
1531
+ expected << "</select>\n"
1532
+
1533
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1534
+ expected << %{<option value="">Month</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" 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}
1535
+ expected << "</select>\n"
1536
+
1537
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1538
+ expected << %{<option value="">Day</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" 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}
1539
+
1540
+ expected << "</select>\n"
1541
+
1542
+ assert_dom_equal expected, date_select("post", "written_on", :prompt => true)
1543
+ end
1544
+
1545
+ def test_date_select_with_custom_prompt
1546
+ @post = Post.new
1547
+ @post.written_on = Date.new(2004, 6, 15)
1548
+
1549
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
1550
+ expected << %{<option value="">Choose year</option>\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 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}
1551
+ expected << "</select>\n"
1552
+
1553
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
1554
+ expected << %{<option value="">Choose month</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" 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}
1555
+ expected << "</select>\n"
1556
+
1557
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
1558
+ expected << %{<option value="">Choose day</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" 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}
1559
+
1560
+ expected << "</select>\n"
1561
+
1562
+ assert_dom_equal expected, date_select("post", "written_on", :prompt => {:year => 'Choose year', :month => 'Choose month', :day => 'Choose day'})
1563
+ end
1564
+
1565
+ def test_time_select
1566
+ @post = Post.new
1567
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1568
+
1569
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1570
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1571
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1572
+
1573
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1574
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1575
+ expected << "</select>\n"
1576
+ expected << " : "
1577
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1578
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1579
+ expected << "</select>\n"
1580
+
1581
+ assert_dom_equal expected, time_select("post", "written_on")
1582
+ end
1583
+
1584
+ def test_time_select_without_date_hidden_fields
1585
+ @post = Post.new
1586
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1587
+
1588
+ expected = %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1589
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1590
+ expected << "</select>\n"
1591
+ expected << " : "
1592
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1593
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1594
+ expected << "</select>\n"
1595
+
1596
+ assert_dom_equal expected, time_select("post", "written_on", :ignore_date => true)
1597
+ end
1598
+
1599
+ def test_time_select_with_seconds
1600
+ @post = Post.new
1601
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1602
+
1603
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1604
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1605
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1606
+
1607
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1608
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1609
+ expected << "</select>\n"
1610
+ expected << " : "
1611
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1612
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1613
+ expected << "</select>\n"
1614
+ expected << " : "
1615
+ expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
1616
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
1617
+ expected << "</select>\n"
1618
+
1619
+ assert_dom_equal expected, time_select("post", "written_on", :include_seconds => true)
1620
+ end
1621
+
1622
+ def test_time_select_with_html_options
1623
+ @post = Post.new
1624
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1625
+
1626
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1627
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1628
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1629
+
1630
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]" class="selector">\n)
1631
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1632
+ expected << "</select>\n"
1633
+ expected << " : "
1634
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]" class="selector">\n)
1635
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1636
+ expected << "</select>\n"
1637
+
1638
+ assert_dom_equal expected, time_select("post", "written_on", {}, :class => 'selector')
1639
+ end
1640
+
1641
+ def test_time_select_with_html_options_within_fields_for
1642
+ @post = Post.new
1643
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1644
+
1645
+ fields_for :post, @post do |f|
1646
+ concat f.time_select(:written_on, {}, :class => 'selector')
1647
+ end
1648
+
1649
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1650
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1651
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1652
+
1653
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]" class="selector">\n)
1654
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1655
+ expected << "</select>\n"
1656
+ expected << " : "
1657
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]" class="selector">\n)
1658
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1659
+ expected << "</select>\n"
1660
+
1661
+ assert_dom_equal expected, output_buffer
1662
+ end
1663
+
1664
+ def test_time_select_with_separator
1665
+ @post = Post.new
1666
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1667
+
1668
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1669
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1670
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1671
+
1672
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1673
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1674
+ expected << "</select>\n"
1675
+
1676
+ expected << " - "
1677
+
1678
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1679
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1680
+ expected << "</select>\n"
1681
+
1682
+ expected << " - "
1683
+
1684
+ expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
1685
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
1686
+ expected << "</select>\n"
1687
+
1688
+ assert_dom_equal expected, time_select("post", "written_on", { :time_separator => " - ", :include_seconds => true })
1689
+ end
1690
+
1691
+ def test_time_select_with_default_prompt
1692
+ @post = Post.new
1693
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1694
+
1695
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1696
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1697
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1698
+
1699
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1700
+ expected << %(<option value="">Hour</option>\n)
1701
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1702
+ expected << "</select>\n"
1703
+ expected << " : "
1704
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1705
+ expected << %(<option value="">Minute</option>\n)
1706
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1707
+ expected << "</select>\n"
1708
+
1709
+ assert_dom_equal expected, time_select("post", "written_on", :prompt => true)
1710
+ end
1711
+
1712
+ def test_time_select_with_custom_prompt
1713
+ @post = Post.new
1714
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1715
+
1716
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
1717
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
1718
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
1719
+
1720
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
1721
+ expected << %(<option value="">Choose hour</option>\n)
1722
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1723
+ expected << "</select>\n"
1724
+ expected << " : "
1725
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1726
+ expected << %(<option value="">Choose minute</option>\n)
1727
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1728
+ expected << "</select>\n"
1729
+
1730
+ assert_dom_equal expected, time_select("post", "written_on", :prompt => {:hour => 'Choose hour', :minute => 'Choose minute'})
1731
+ end
1732
+
1733
+ def test_time_select_with_disabled_html_option
1734
+ @post = Post.new
1735
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
1736
+
1737
+ expected = %{<input type="hidden" id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]" value="2004" />\n}
1738
+ expected << %{<input type="hidden" id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]" value="6" />\n}
1739
+ expected << %{<input type="hidden" id="post_written_on_3i" disabled="disabled" name="post[written_on(3i)]" value="15" />\n}
1740
+
1741
+ expected << %(<select id="post_written_on_4i" disabled="disabled" name="post[written_on(4i)]">\n)
1742
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1743
+ expected << "</select>\n"
1744
+ expected << " : "
1745
+ expected << %(<select id="post_written_on_5i" disabled="disabled" name="post[written_on(5i)]">\n)
1746
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1747
+ expected << "</select>\n"
1748
+
1749
+ assert_dom_equal expected, time_select("post", "written_on", {}, :disabled => true)
1750
+ end
1751
+
1752
+ def test_datetime_select
1753
+ @post = Post.new
1754
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1755
+
1756
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1757
+ 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}
1758
+ expected << "</select>\n"
1759
+
1760
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1761
+ 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}
1762
+ expected << "</select>\n"
1763
+
1764
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1765
+ 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}
1766
+ expected << "</select>\n"
1767
+
1768
+ expected << " &mdash; "
1769
+
1770
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1771
+ 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}
1772
+ expected << "</select>\n"
1773
+ expected << " : "
1774
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1775
+ 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}
1776
+ expected << "</select>\n"
1777
+
1778
+ assert_dom_equal expected, datetime_select("post", "updated_at")
1779
+ end
1780
+
1781
+ def test_datetime_select_defaults_to_time_zone_now_when_config_time_zone_is_set
1782
+ time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
1783
+ time_zone = mock()
1784
+ time_zone.expects(:now).returns time
1785
+ Time.zone_default = time_zone
1786
+ @post = Post.new
1787
+
1788
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1789
+ 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}
1790
+ expected << "</select>\n"
1791
+
1792
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1793
+ 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}
1794
+ expected << "</select>\n"
1795
+
1796
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1797
+ 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}
1798
+ expected << "</select>\n"
1799
+
1800
+ expected << " &mdash; "
1801
+
1802
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1803
+ 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}
1804
+ expected << "</select>\n"
1805
+ expected << " : "
1806
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1807
+ 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}
1808
+ expected << "</select>\n"
1809
+
1810
+ assert_dom_equal expected, datetime_select("post", "updated_at")
1811
+ ensure
1812
+ Time.zone_default = nil
1813
+ end
1814
+
1815
+ def test_datetime_select_with_html_options_within_fields_for
1816
+ @post = Post.new
1817
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1818
+
1819
+ fields_for :post, @post do |f|
1820
+ concat f.datetime_select(:updated_at, {}, :class => 'selector')
1821
+ end
1822
+
1823
+ expected = "<select id='post_updated_at_1i' name='post[updated_at(1i)]' class='selector'>\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"
1824
+ expected << "<select id='post_updated_at_2i' name='post[updated_at(2i)]' class='selector'>\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"
1825
+ expected << "<select id='post_updated_at_3i' name='post[updated_at(3i)]' class='selector'>\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"
1826
+ expected << " &mdash; <select id='post_updated_at_4i' name='post[updated_at(4i)]' class='selector'>\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"
1827
+ expected << " : <select id='post_updated_at_5i' name='post[updated_at(5i)]' class='selector'>\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"
1828
+
1829
+ assert_dom_equal expected, output_buffer
1830
+ end
1831
+
1832
+ def test_datetime_select_with_separators
1833
+ @post = Post.new
1834
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1835
+
1836
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1837
+ 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}
1838
+ expected << "</select>\n"
1839
+
1840
+ expected << " / "
1841
+
1842
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1843
+ 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}
1844
+ expected << "</select>\n"
1845
+
1846
+ expected << " / "
1847
+
1848
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1849
+ 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}
1850
+ expected << "</select>\n"
1851
+
1852
+ expected << " , "
1853
+
1854
+ expected << %(<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n)
1855
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
1856
+ expected << "</select>\n"
1857
+
1858
+ expected << " - "
1859
+
1860
+ expected << %(<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n)
1861
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
1862
+ expected << "</select>\n"
1863
+
1864
+ expected << " - "
1865
+
1866
+ expected << %(<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n)
1867
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
1868
+ expected << "</select>\n"
1869
+
1870
+ assert_dom_equal expected, datetime_select("post", "updated_at", { :date_separator => " / ", :datetime_separator => " , ", :time_separator => " - ", :include_seconds => true })
1871
+ end
1872
+
1873
+ def test_datetime_select_with_default_prompt
1874
+ @post = Post.new
1875
+ @post.updated_at = nil
1876
+
1877
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1878
+ expected << %{<option value="">Year</option>\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 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}
1879
+ expected << "</select>\n"
1880
+
1881
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1882
+ expected << %{<option value="">Month</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}
1883
+ expected << "</select>\n"
1884
+
1885
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1886
+ expected << %{<option value="">Day</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}
1887
+ expected << "</select>\n"
1888
+
1889
+ expected << " &mdash; "
1890
+
1891
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1892
+ expected << %{<option value="">Hour</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}
1893
+ expected << "</select>\n"
1894
+ expected << " : "
1895
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1896
+ expected << %{<option value="">Minute</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}
1897
+ expected << "</select>\n"
1898
+
1899
+ assert_dom_equal expected, datetime_select("post", "updated_at", :start_year=>1999, :end_year=>2009, :prompt => true)
1900
+ end
1901
+
1902
+ def test_datetime_select_with_custom_prompt
1903
+ @post = Post.new
1904
+ @post.updated_at = nil
1905
+
1906
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1907
+ expected << %{<option value="">Choose year</option>\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 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}
1908
+ expected << "</select>\n"
1909
+
1910
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1911
+ expected << %{<option value="">Choose month</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}
1912
+ expected << "</select>\n"
1913
+
1914
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1915
+ expected << %{<option value="">Choose day</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}
1916
+ expected << "</select>\n"
1917
+
1918
+ expected << " &mdash; "
1919
+
1920
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1921
+ expected << %{<option value="">Choose hour</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}
1922
+ expected << "</select>\n"
1923
+ expected << " : "
1924
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1925
+ expected << %{<option value="">Choose minute</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}
1926
+ expected << "</select>\n"
1927
+
1928
+ assert_dom_equal expected, datetime_select("post", "updated_at", :start_year=>1999, :end_year=>2009, :prompt => {:year => 'Choose year', :month => 'Choose month', :day => 'Choose day', :hour => 'Choose hour', :minute => 'Choose minute'})
1929
+ end
1930
+
1931
+ def test_date_select_with_zero_value_and_no_start_year
1932
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1933
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1934
+ expected << "</select>\n"
1935
+
1936
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1937
+ 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)
1938
+ expected << "</select>\n"
1939
+
1940
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1941
+ 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)
1942
+ expected << "</select>\n"
1943
+
1944
+ assert_dom_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
1945
+ end
1946
+
1947
+ def test_date_select_with_zero_value_and_no_end_year
1948
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1949
+ last_year = Time.now.year + 5
1950
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1951
+ expected << "</select>\n"
1952
+
1953
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1954
+ 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)
1955
+ expected << "</select>\n"
1956
+
1957
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1958
+ 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)
1959
+ expected << "</select>\n"
1960
+
1961
+ assert_dom_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
1962
+ end
1963
+
1964
+ def test_date_select_with_zero_value_and_no_start_and_end_year
1965
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1966
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1967
+ expected << "</select>\n"
1968
+
1969
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1970
+ 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)
1971
+ expected << "</select>\n"
1972
+
1973
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1974
+ 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)
1975
+ expected << "</select>\n"
1976
+
1977
+ assert_dom_equal expected, select_date(0, :prefix => "date[first]")
1978
+ end
1979
+
1980
+ def test_date_select_with_nil_value_and_no_start_and_end_year
1981
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1982
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1983
+ expected << "</select>\n"
1984
+
1985
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1986
+ 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)
1987
+ expected << "</select>\n"
1988
+
1989
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1990
+ 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)
1991
+ expected << "</select>\n"
1992
+
1993
+ assert_dom_equal expected, select_date(nil, :prefix => "date[first]")
1994
+ end
1995
+
1996
+ def test_datetime_select_with_nil_value_and_no_start_and_end_year
1997
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1998
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1999
+ expected << "</select>\n"
2000
+
2001
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
2002
+ 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)
2003
+ expected << "</select>\n"
2004
+
2005
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
2006
+ 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)
2007
+ expected << "</select>\n"
2008
+
2009
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
2010
+ 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)
2011
+ expected << "</select>\n"
2012
+
2013
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
2014
+ 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)
2015
+ expected << "</select>\n"
2016
+
2017
+ assert_dom_equal expected, select_datetime(nil, :prefix => "date[first]")
2018
+ end
2019
+
2020
+ def test_datetime_select_with_options_index
2021
+ @post = Post.new
2022
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
2023
+ id = 456
2024
+
2025
+ expected = %{<select id="post_456_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
2026
+ 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}
2027
+ expected << "</select>\n"
2028
+
2029
+ expected << %{<select id="post_456_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
2030
+ 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}
2031
+ expected << "</select>\n"
2032
+
2033
+ expected << %{<select id="post_456_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
2034
+ 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}
2035
+ expected << "</select>\n"
2036
+
2037
+ expected << " &mdash; "
2038
+
2039
+ expected << %{<select id="post_456_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
2040
+ 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}
2041
+ expected << "</select>\n"
2042
+ expected << " : "
2043
+ expected << %{<select id="post_456_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
2044
+ 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}
2045
+ expected << "</select>\n"
2046
+
2047
+ assert_dom_equal expected, datetime_select("post", "updated_at", :index => id)
2048
+ end
2049
+
2050
+ def test_datetime_select_within_fields_for_with_options_index
2051
+ @post = Post.new
2052
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
2053
+ id = 456
2054
+
2055
+ fields_for :post, @post, :index => id do |f|
2056
+ concat f.datetime_select(:updated_at)
2057
+ end
2058
+
2059
+ expected = %{<select id="post_456_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
2060
+ 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}
2061
+ expected << "</select>\n"
2062
+
2063
+ expected << %{<select id="post_456_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
2064
+ 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}
2065
+ expected << "</select>\n"
2066
+
2067
+ expected << %{<select id="post_456_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
2068
+ 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}
2069
+ expected << "</select>\n"
2070
+
2071
+ expected << " &mdash; "
2072
+
2073
+ expected << %{<select id="post_456_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
2074
+ 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}
2075
+ expected << "</select>\n"
2076
+ expected << " : "
2077
+ expected << %{<select id="post_456_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
2078
+ 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}
2079
+ expected << "</select>\n"
2080
+
2081
+ assert_dom_equal expected, output_buffer
2082
+ end
2083
+
2084
+ def test_datetime_select_with_auto_index
2085
+ @post = Post.new
2086
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
2087
+ id = @post.id
2088
+
2089
+ expected = %{<select id="post_123_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
2090
+ 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}
2091
+ expected << "</select>\n"
2092
+
2093
+ expected << %{<select id="post_123_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
2094
+ 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}
2095
+ expected << "</select>\n"
2096
+
2097
+ expected << %{<select id="post_123_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
2098
+ 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}
2099
+ expected << "</select>\n"
2100
+
2101
+ expected << " &mdash; "
2102
+
2103
+ expected << %{<select id="post_123_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
2104
+ 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}
2105
+ expected << "</select>\n"
2106
+ expected << " : "
2107
+ expected << %{<select id="post_123_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
2108
+ 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}
2109
+ expected << "</select>\n"
2110
+
2111
+ assert_dom_equal expected, datetime_select("post[]", "updated_at")
2112
+ end
2113
+
2114
+ def test_datetime_select_with_seconds
2115
+ @post = Post.new
2116
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2117
+
2118
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2119
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
2120
+ expected << "</select>\n"
2121
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2122
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2123
+ expected << "</select>\n"
2124
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2125
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2126
+ expected << "</select>\n"
2127
+
2128
+ expected << " &mdash; "
2129
+
2130
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2131
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2132
+ expected << "</select>\n"
2133
+ expected << " : "
2134
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2135
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2136
+ expected << "</select>\n"
2137
+ expected << " : "
2138
+ expected << %{<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n}
2139
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
2140
+ expected << "</select>\n"
2141
+
2142
+ assert_dom_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
2143
+ end
2144
+
2145
+ def test_datetime_select_discard_year
2146
+ @post = Post.new
2147
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2148
+
2149
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
2150
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2151
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2152
+ expected << "</select>\n"
2153
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2154
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2155
+ expected << "</select>\n"
2156
+
2157
+ expected << " &mdash; "
2158
+
2159
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2160
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2161
+ expected << "</select>\n"
2162
+ expected << " : "
2163
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2164
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2165
+ expected << "</select>\n"
2166
+
2167
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true)
2168
+ end
2169
+
2170
+ def test_datetime_select_discard_month
2171
+ @post = Post.new
2172
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2173
+
2174
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2175
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
2176
+ expected << "</select>\n"
2177
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
2178
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
2179
+
2180
+ expected << " &mdash; "
2181
+
2182
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2183
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2184
+ expected << "</select>\n"
2185
+ expected << " : "
2186
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2187
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2188
+ expected << "</select>\n"
2189
+
2190
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_month => true)
2191
+ end
2192
+
2193
+ def test_datetime_select_discard_year_and_month
2194
+ @post = Post.new
2195
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2196
+
2197
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
2198
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
2199
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
2200
+
2201
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2202
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2203
+ expected << "</select>\n"
2204
+ expected << " : "
2205
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2206
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2207
+ expected << "</select>\n"
2208
+
2209
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
2210
+ end
2211
+
2212
+ def test_datetime_select_discard_year_and_month_with_disabled_html_option
2213
+ @post = Post.new
2214
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2215
+
2216
+ expected = %{<input type="hidden" id="post_updated_at_1i" disabled="disabled" name="post[updated_at(1i)]" value="2004" />\n}
2217
+ expected << %{<input type="hidden" id="post_updated_at_2i" disabled="disabled" name="post[updated_at(2i)]" value="6" />\n}
2218
+ expected << %{<input type="hidden" id="post_updated_at_3i" disabled="disabled" name="post[updated_at(3i)]" value="15" />\n}
2219
+
2220
+ expected << %{<select id="post_updated_at_4i" disabled="disabled" name="post[updated_at(4i)]">\n}
2221
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2222
+ expected << "</select>\n"
2223
+ expected << " : "
2224
+ expected << %{<select id="post_updated_at_5i" disabled="disabled" name="post[updated_at(5i)]">\n}
2225
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2226
+ expected << "</select>\n"
2227
+
2228
+ assert_dom_equal expected, datetime_select("post", "updated_at", { :discard_year => true, :discard_month => true }, :disabled => true)
2229
+ end
2230
+
2231
+ def test_datetime_select_discard_hour
2232
+ @post = Post.new
2233
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2234
+
2235
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2236
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
2237
+ expected << "</select>\n"
2238
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2239
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2240
+ expected << "</select>\n"
2241
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2242
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2243
+ expected << "</select>\n"
2244
+
2245
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_hour => true)
2246
+ end
2247
+
2248
+ def test_datetime_select_discard_minute
2249
+ @post = Post.new
2250
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2251
+
2252
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2253
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
2254
+ expected << "</select>\n"
2255
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2256
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2257
+ expected << "</select>\n"
2258
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2259
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2260
+ expected << "</select>\n"
2261
+
2262
+ expected << " &mdash; "
2263
+
2264
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2265
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2266
+ expected << "</select>\n"
2267
+ expected << %{<input type="hidden" id="post_updated_at_5i" name="post[updated_at(5i)]" value="16" />\n}
2268
+
2269
+ assert_dom_equal expected, datetime_select("post", "updated_at", :discard_minute => true)
2270
+ end
2271
+
2272
+ def test_datetime_select_invalid_order
2273
+ @post = Post.new
2274
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2275
+
2276
+ expected = %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2277
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2278
+ expected << "</select>\n"
2279
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2280
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2281
+ expected << "</select>\n"
2282
+ expected << %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2283
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
2284
+ expected << "</select>\n"
2285
+
2286
+ expected << " &mdash; "
2287
+
2288
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2289
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2290
+ expected << "</select>\n"
2291
+ expected << " : "
2292
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2293
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2294
+ expected << "</select>\n"
2295
+
2296
+ assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
2297
+ end
2298
+
2299
+ def test_datetime_select_discard_with_order
2300
+ @post = Post.new
2301
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
2302
+
2303
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
2304
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2305
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
2306
+ expected << "</select>\n"
2307
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2308
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
2309
+ expected << "</select>\n"
2310
+
2311
+ expected << " &mdash; "
2312
+
2313
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2314
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2315
+ expected << "</select>\n"
2316
+ expected << " : "
2317
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2318
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2319
+ expected << "</select>\n"
2320
+
2321
+ assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
2322
+ end
2323
+
2324
+ def test_datetime_select_with_default_value_as_time
2325
+ @post = Post.new
2326
+ @post.updated_at = nil
2327
+
2328
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2329
+ 2001.upto(2011) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2006}>#{i}</option>\n) }
2330
+ expected << "</select>\n"
2331
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2332
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 9}>#{Date::MONTHNAMES[i]}</option>\n) }
2333
+ expected << "</select>\n"
2334
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2335
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 19}>#{i}</option>\n) }
2336
+ expected << "</select>\n"
2337
+
2338
+ expected << " &mdash; "
2339
+
2340
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2341
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
2342
+ expected << "</select>\n"
2343
+ expected << " : "
2344
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2345
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
2346
+ expected << "</select>\n"
2347
+
2348
+ assert_dom_equal expected, datetime_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35))
2349
+ end
2350
+
2351
+ def test_include_blank_overrides_default_option
2352
+ @post = Post.new
2353
+ @post.updated_at = nil
2354
+
2355
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2356
+ expected << %(<option value=""></option>\n)
2357
+ (Time.now.year - 5).upto(Time.now.year + 5) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
2358
+ expected << "</select>\n"
2359
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2360
+ expected << %(<option value=""></option>\n)
2361
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
2362
+ expected << "</select>\n"
2363
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2364
+ expected << %(<option value=""></option>\n)
2365
+ 1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
2366
+ expected << "</select>\n"
2367
+
2368
+ assert_dom_equal expected, date_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true)
2369
+ end
2370
+
2371
+ def test_datetime_select_with_default_value_as_hash
2372
+ @post = Post.new
2373
+ @post.updated_at = nil
2374
+
2375
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
2376
+ (Time.now.year - 5).upto(Time.now.year + 5) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.year}>#{i}</option>\n) }
2377
+ expected << "</select>\n"
2378
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
2379
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 10}>#{Date::MONTHNAMES[i]}</option>\n) }
2380
+ expected << "</select>\n"
2381
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
2382
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
2383
+ expected << "</select>\n"
2384
+
2385
+ expected << " &mdash; "
2386
+
2387
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
2388
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 9}>#{sprintf("%02d", i)}</option>\n) }
2389
+ expected << "</select>\n"
2390
+ expected << " : "
2391
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
2392
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 42}>#{sprintf("%02d", i)}</option>\n) }
2393
+ expected << "</select>\n"
2394
+
2395
+ assert_dom_equal expected, datetime_select("post", "updated_at", :default => { :month => 10, :minute => 42, :hour => 9 })
2396
+ end
2397
+
2398
+ def test_datetime_select_with_html_options
2399
+ @post = Post.new
2400
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
2401
+
2402
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]" class="selector">\n}
2403
+ 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}
2404
+ expected << "</select>\n"
2405
+
2406
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]" class="selector">\n}
2407
+ 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}
2408
+ expected << "</select>\n"
2409
+
2410
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]" class="selector">\n}
2411
+ 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}
2412
+ expected << "</select>\n"
2413
+
2414
+ expected << " &mdash; "
2415
+
2416
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]" class="selector">\n}
2417
+ 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}
2418
+ expected << "</select>\n"
2419
+ expected << " : "
2420
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]" class="selector">\n}
2421
+ 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}
2422
+ expected << "</select>\n"
2423
+
2424
+ assert_dom_equal expected, datetime_select("post", "updated_at", {}, :class => 'selector')
2425
+ end
2426
+
2427
+ def test_date_select_should_not_change_passed_options_hash
2428
+ @post = Post.new
2429
+ @post.updated_at = Time.local(2008, 7, 16, 23, 30)
2430
+
2431
+ options = {
2432
+ :order => [ :year, :month, :day ],
2433
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2434
+ :discard_type => false,
2435
+ :include_blank => false,
2436
+ :ignore_date => false,
2437
+ :include_seconds => true
2438
+ }
2439
+ date_select(@post, :updated_at, options)
2440
+
2441
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2442
+ # don't change this!
2443
+ assert_equal({
2444
+ :order => [ :year, :month, :day ],
2445
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2446
+ :discard_type => false,
2447
+ :include_blank => false,
2448
+ :ignore_date => false,
2449
+ :include_seconds => true
2450
+ }, options)
2451
+ end
2452
+
2453
+ def test_datetime_select_should_not_change_passed_options_hash
2454
+ @post = Post.new
2455
+ @post.updated_at = Time.local(2008, 7, 16, 23, 30)
2456
+
2457
+ options = {
2458
+ :order => [ :year, :month, :day ],
2459
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2460
+ :discard_type => false,
2461
+ :include_blank => false,
2462
+ :ignore_date => false,
2463
+ :include_seconds => true
2464
+ }
2465
+ datetime_select(@post, :updated_at, options)
2466
+
2467
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2468
+ # don't change this!
2469
+ assert_equal({
2470
+ :order => [ :year, :month, :day ],
2471
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2472
+ :discard_type => false,
2473
+ :include_blank => false,
2474
+ :ignore_date => false,
2475
+ :include_seconds => true
2476
+ }, options)
2477
+ end
2478
+
2479
+ def test_time_select_should_not_change_passed_options_hash
2480
+ @post = Post.new
2481
+ @post.updated_at = Time.local(2008, 7, 16, 23, 30)
2482
+
2483
+ options = {
2484
+ :order => [ :year, :month, :day ],
2485
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2486
+ :discard_type => false,
2487
+ :include_blank => false,
2488
+ :ignore_date => false,
2489
+ :include_seconds => true
2490
+ }
2491
+ time_select(@post, :updated_at, options)
2492
+
2493
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2494
+ # don't change this!
2495
+ assert_equal({
2496
+ :order => [ :year, :month, :day ],
2497
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2498
+ :discard_type => false,
2499
+ :include_blank => false,
2500
+ :ignore_date => false,
2501
+ :include_seconds => true
2502
+ }, options)
2503
+ end
2504
+
2505
+ def test_select_date_should_not_change_passed_options_hash
2506
+ options = {
2507
+ :order => [ :year, :month, :day ],
2508
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2509
+ :discard_type => false,
2510
+ :include_blank => false,
2511
+ :ignore_date => false,
2512
+ :include_seconds => true
2513
+ }
2514
+ select_date(Date.today, options)
2515
+
2516
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2517
+ # don't change this!
2518
+ assert_equal({
2519
+ :order => [ :year, :month, :day ],
2520
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2521
+ :discard_type => false,
2522
+ :include_blank => false,
2523
+ :ignore_date => false,
2524
+ :include_seconds => true
2525
+ }, options)
2526
+ end
2527
+
2528
+ def test_select_datetime_should_not_change_passed_options_hash
2529
+ options = {
2530
+ :order => [ :year, :month, :day ],
2531
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2532
+ :discard_type => false,
2533
+ :include_blank => false,
2534
+ :ignore_date => false,
2535
+ :include_seconds => true
2536
+ }
2537
+ select_datetime(Time.now, options)
2538
+
2539
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2540
+ # don't change this!
2541
+ assert_equal({
2542
+ :order => [ :year, :month, :day ],
2543
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2544
+ :discard_type => false,
2545
+ :include_blank => false,
2546
+ :ignore_date => false,
2547
+ :include_seconds => true
2548
+ }, options)
2549
+ end
2550
+
2551
+ def test_select_time_should_not_change_passed_options_hash
2552
+ options = {
2553
+ :order => [ :year, :month, :day ],
2554
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2555
+ :discard_type => false,
2556
+ :include_blank => false,
2557
+ :ignore_date => false,
2558
+ :include_seconds => true
2559
+ }
2560
+ select_time(Time.now, options)
2561
+
2562
+ # note: the literal hash is intentional to show that the actual options hash isn't modified
2563
+ # don't change this!
2564
+ assert_equal({
2565
+ :order => [ :year, :month, :day ],
2566
+ :default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
2567
+ :discard_type => false,
2568
+ :include_blank => false,
2569
+ :ignore_date => false,
2570
+ :include_seconds => true
2571
+ }, options)
2572
+ end
2573
+
2574
+ def test_select_html_safety
2575
+ assert select_day(16).html_safe?
2576
+ assert select_month(8).html_safe?
2577
+ assert select_year(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
2578
+ assert select_minute(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
2579
+ assert select_second(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
2580
+
2581
+ assert select_minute(8, :use_hidden => true).html_safe?
2582
+ assert select_month(8, :prompt => 'Choose month').html_safe?
2583
+
2584
+ assert select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector').html_safe?
2585
+ assert select_date(Time.mktime(2003, 8, 16), :date_separator => " / ", :start_year => 2003, :end_year => 2005, :prefix => "date[first]").html_safe?
2586
+ end
2587
+
2588
+ def test_object_select_html_safety
2589
+ @post = Post.new
2590
+ @post.written_on = Date.new(2004, 6, 15)
2591
+
2592
+ assert date_select("post", "written_on", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true).html_safe?
2593
+ assert time_select("post", "written_on", :ignore_date => true).html_safe?
2594
+ end
2595
+
2596
+ protected
2597
+ def with_env_tz(new_tz = 'US/Eastern')
2598
+ old_tz, ENV['TZ'] = ENV['TZ'], new_tz
2599
+ yield
2600
+ ensure
2601
+ old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
2602
+ end
2603
+ end