spree 0.0.8 → 0.0.9

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

Potentially problematic release.


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

Files changed (1960) hide show
  1. data/CHANGELOG +47 -0
  2. data/CONTRIBUTORS +27 -0
  3. data/INSTALL +27 -0
  4. data/{starter-app/vendor/plugins/spree/LICENSE → LICENSE} +0 -0
  5. data/{README.txt → README} +0 -0
  6. data/Rakefile +11 -4
  7. data/{starter-app/vendor/plugins/spree/app → app}/controllers/account_controller.rb +0 -0
  8. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/base_controller.rb +0 -0
  9. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/categories_controller.rb +0 -0
  10. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/images_controller.rb +0 -0
  11. data/app/controllers/admin/inventory_units_controller.rb +27 -0
  12. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/option_types_controller.rb +0 -0
  13. data/app/controllers/admin/orders_controller.rb +272 -0
  14. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/overview_controller.rb +0 -0
  15. data/app/controllers/admin/products_controller.rb +169 -0
  16. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/reports_controller.rb +0 -0
  17. data/{starter-app/vendor/plugins/spree/app → app}/controllers/admin/users_controller.rb +0 -0
  18. data/app/controllers/application.rb +24 -0
  19. data/app/controllers/cart_controller.rb +44 -0
  20. data/app/controllers/checkout_controller.rb +180 -0
  21. data/app/controllers/spree/base_controller.rb +47 -0
  22. data/{starter-app/vendor/plugins/spree/app → app}/controllers/store_controller.rb +0 -0
  23. data/{starter-app/vendor/plugins/spree/app → app}/helpers/account_helper.rb +0 -0
  24. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/base_helper.rb +0 -0
  25. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/categories_helper.rb +0 -0
  26. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/option_values_helper.rb +0 -0
  27. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/orders_helper.rb +0 -0
  28. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/overview_helper.rb +0 -0
  29. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/products_helper.rb +0 -0
  30. data/{starter-app/vendor/plugins/spree/app → app}/helpers/admin/users_helper.rb +0 -0
  31. data/app/helpers/application_helper.rb +9 -0
  32. data/{starter-app/vendor/plugins/spree/app → app}/helpers/cart_helper.rb +0 -0
  33. data/app/helpers/checkout_helper.rb +14 -0
  34. data/{starter-app/vendor/plugins/spree/app → app}/helpers/search_helper.rb +0 -0
  35. data/app/helpers/spree/base_helper.rb +105 -0
  36. data/{starter-app/vendor/plugins/spree/app → app}/helpers/store_helper.rb +0 -0
  37. data/{starter-app/vendor/plugins/spree/app → app}/models/address.rb +0 -0
  38. data/{starter-app/vendor/plugins/spree/app → app}/models/cart.rb +0 -0
  39. data/app/models/cart_item.rb +29 -0
  40. data/{starter-app/vendor/plugins/spree/app → app}/models/category.rb +0 -0
  41. data/{starter-app/vendor/plugins/spree/app → app}/models/country.rb +0 -0
  42. data/{starter-app/vendor/plugins/spree/app → app}/models/credit_card.rb +0 -0
  43. data/app/models/image.rb +13 -0
  44. data/app/models/inventory_level.rb +19 -0
  45. data/app/models/inventory_unit.rb +49 -0
  46. data/{starter-app/vendor/plugins/spree/app → app}/models/line_item.rb +0 -0
  47. data/{starter-app/vendor/plugins/spree/app → app}/models/option_type.rb +0 -0
  48. data/{starter-app/vendor/plugins/spree/app → app}/models/option_value.rb +0 -0
  49. data/app/models/order.rb +88 -0
  50. data/{starter-app/vendor/plugins/spree/app → app}/models/order_mailer.rb +0 -0
  51. data/{starter-app/vendor/plugins/spree/app → app}/models/order_operation.rb +0 -0
  52. data/{starter-app/vendor/plugins/spree/app → app}/models/payment.rb +0 -0
  53. data/app/models/product.rb +64 -0
  54. data/{starter-app/vendor/plugins/spree/app → app}/models/product_option_type.rb +0 -0
  55. data/{starter-app/app → app}/models/role.rb +0 -0
  56. data/{starter-app/vendor/plugins/spree/app → app}/models/search_criteria.rb +0 -0
  57. data/{starter-app/vendor/plugins/spree/app → app}/models/state.rb +0 -0
  58. data/{starter-app/vendor/plugins/spree/app → app}/models/tax_treatment.rb +0 -0
  59. data/{starter-app/vendor/plugins/spree/app → app}/models/txn.rb +0 -0
  60. data/{starter-app/app → app}/models/user.rb +0 -0
  61. data/app/models/variant.rb +11 -0
  62. data/{starter-app/vendor/plugins/spree/app → app}/views/account/index.rhtml +0 -0
  63. data/{starter-app/vendor/plugins/spree/app → app}/views/account/login.rhtml +0 -0
  64. data/{starter-app/vendor/plugins/spree/app → app}/views/account/signup.rhtml +0 -0
  65. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/categories/_form.rhtml +0 -0
  66. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/categories/edit.rhtml +0 -0
  67. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/categories/list.rhtml +0 -0
  68. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/categories/new.rhtml +0 -0
  69. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/images/new.html.erb +0 -0
  70. data/app/views/admin/inventory_units/adjust.html.erb +32 -0
  71. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/_form.rhtml +0 -0
  72. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/_new_option_value.rhtml +0 -0
  73. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/_option_values.rhtml +0 -0
  74. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/edit.rhtml +0 -0
  75. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/index.rhtml +0 -0
  76. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/new.rhtml +0 -0
  77. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/option_types/select.rhtml +0 -0
  78. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/orders/_address.rhtml +0 -0
  79. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/orders/index.rhtml +0 -0
  80. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/orders/show.rhtml +0 -0
  81. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/overview/index.rhtml +0 -0
  82. data/app/views/admin/products/_form.rhtml +70 -0
  83. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/products/_menu.rhtml +0 -0
  84. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/products/_new_variant.rhtml +0 -0
  85. data/app/views/admin/products/_option_types.rhtml +42 -0
  86. data/app/views/admin/products/_variants.rhtml +50 -0
  87. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/products/edit.rhtml +0 -0
  88. data/app/views/admin/products/index.rhtml +62 -0
  89. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/products/new.rhtml +0 -0
  90. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/reports/index.rhtml +0 -0
  91. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/reports/sales_total.rhtml +0 -0
  92. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/_form.rhtml +0 -0
  93. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/_menu.rhtml +0 -0
  94. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/edit.rhtml +0 -0
  95. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/index.rhtml +0 -0
  96. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/new.rhtml +0 -0
  97. data/{starter-app/vendor/plugins/spree/app → app}/views/admin/users/show.rhtml +0 -0
  98. data/app/views/cart/index.rhtml +49 -0
  99. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/_address.rhtml +0 -0
  100. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/_address_ro.rhtml +0 -0
  101. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/_cart_item.rhtml +0 -0
  102. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/_extra.rhtml +0 -0
  103. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/addresses.rhtml +0 -0
  104. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/cvv.rhtml +0 -0
  105. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/empty_cart.rhtml +0 -0
  106. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/final_confirmation.rhtml +0 -0
  107. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/incomplete.rhtml +0 -0
  108. data/{starter-app/vendor/plugins/spree/app → app}/views/checkout/thank_you.rhtml +0 -0
  109. data/app/views/layouts/admin.rhtml +70 -0
  110. data/app/views/layouts/application.rhtml +50 -0
  111. data/app/views/layouts/products.rhtml +19 -0
  112. data/{starter-app/vendor/plugins/spree/app → app}/views/layouts/simple.rhtml +0 -0
  113. data/app/views/order_mailer/cancel.rhtml +15 -0
  114. data/app/views/order_mailer/confirm.rhtml +18 -0
  115. data/{starter-app/vendor/plugins/spree/app → app}/views/shared/_images.html.erb +0 -0
  116. data/{starter-app/vendor/plugins/spree/app → app}/views/shared/_order_details.rhtml +0 -0
  117. data/{starter-app/vendor/plugins/spree/app → app}/views/shared/_paginate.rhtml +0 -0
  118. data/{starter-app/vendor/plugins/spree/app → app}/views/shared/_report_criteria.rhtml +0 -0
  119. data/{starter-app/app → app}/views/shared/_store_menu.rhtml +0 -0
  120. data/{starter-app/vendor/plugins/spree/app → app}/views/shared/_tax_treatments.rhtml +0 -0
  121. data/{starter-app/vendor/plugins/spree/app → app}/views/store/_image.html.erb +0 -0
  122. data/{starter-app/vendor/plugins/spree/app → app}/views/store/_products.rhtml +0 -0
  123. data/{starter-app/vendor/plugins/spree/app → app}/views/store/_thumbnails.html.erb +0 -0
  124. data/app/views/store/list.rhtml +14 -0
  125. data/app/views/store/show.rhtml +60 -0
  126. data/bin/spree +35 -144
  127. data/config/boot.rb +148 -0
  128. data/{starter-app/config → config}/database.yml +0 -0
  129. data/config/environment.rb +143 -0
  130. data/config/environments/development.rb +24 -0
  131. data/{starter-app/config → config}/environments/production.rb +0 -0
  132. data/{starter-app/config → config}/environments/test.rb +0 -0
  133. data/config/routes.rb +31 -0
  134. data/db/development_structure.sql +267 -0
  135. data/{starter-app/vendor/plugins/spree/db → db}/migrate/001_create_addresses.rb +0 -0
  136. data/{starter-app/vendor/plugins/spree/db → db}/migrate/002_create_cart_items.rb +0 -0
  137. data/{starter-app/vendor/plugins/spree/db → db}/migrate/003_create_carts.rb +0 -0
  138. data/{starter-app/vendor/plugins/spree/db → db}/migrate/004_create_categories.rb +0 -0
  139. data/{starter-app/vendor/plugins/spree/db → db}/migrate/005_create_categories_products.rb +0 -0
  140. data/{starter-app/vendor/plugins/spree/db → db}/migrate/006_create_line_items.rb +0 -0
  141. data/{starter-app/vendor/plugins/spree/db → db}/migrate/007_create_option_values.rb +0 -0
  142. data/db/migrate/008_create_orders.rb +23 -0
  143. data/db/migrate/009_create_products.rb +16 -0
  144. data/{starter-app/vendor/plugins/spree/db → db}/migrate/010_create_txns.rb +0 -0
  145. data/db/migrate/011_create_variants.rb +12 -0
  146. data/{starter-app/vendor/plugins/spree/db → db}/migrate/012_create_tax_treatments.rb +0 -0
  147. data/{starter-app/vendor/plugins/spree/db/migrate/014_create_countries.rb → db/migrate/013_create_countries.rb} +0 -0
  148. data/{starter-app/vendor/plugins/spree/db/migrate/015_create_states.rb → db/migrate/014_create_states.rb} +0 -0
  149. data/{starter-app/vendor/plugins/spree/db/migrate/016_create_option_types.rb → db/migrate/015_create_option_types.rb} +0 -0
  150. data/{starter-app/vendor/plugins/spree/db/migrate/017_create_product_option_types.rb → db/migrate/016_create_product_option_types.rb} +0 -0
  151. data/{starter-app/vendor/plugins/spree/db/migrate/018_create_option_values_variants.rb → db/migrate/017_create_option_values_variants.rb} +0 -0
  152. data/db/migrate/018_create_images.rb +20 -0
  153. data/{starter-app/vendor/plugins/spree/db/migrate/020_create_credit_cards.rb → db/migrate/019_create_credit_cards.rb} +0 -0
  154. data/{starter-app/vendor/plugins/spree/db/migrate/021_create_order_operations.rb → db/migrate/020_create_order_operations.rb} +0 -0
  155. data/db/migrate/021_create_inventory_units.rb +15 -0
  156. data/{starter-app/db/migrate/001_create_users.rb → db/migrate/022_create_users.rb} +0 -0
  157. data/{starter-app/db/migrate/002_create_roles.rb → db/migrate/023_create_roles.rb} +0 -0
  158. data/{starter-app/db → db}/sample/addresses.yml +0 -0
  159. data/{starter-app/db → db}/sample/categories.yml +0 -0
  160. data/{starter-app/db → db}/sample/countries.yml +0 -0
  161. data/db/sample/credit_cards.yml +12 -0
  162. data/db/sample/images.yml +300 -0
  163. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_bag.jpg +0 -0
  164. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_baseball_jersey.jpg +0 -0
  165. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_jr_spaghetti.jpg +0 -0
  166. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_mug.jpg +0 -0
  167. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_ringer_tshirt.jpg +0 -0
  168. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_stein.jpg +0 -0
  169. data/{starter-app/vendor/plugins/spree/assets/images/products → db/sample/images}/ror_tote.jpg +0 -0
  170. data/db/sample/inventory_units.yml +98 -0
  171. data/db/sample/line_items.yml +25 -0
  172. data/{starter-app/db → db}/sample/option_types.yml +0 -0
  173. data/{starter-app/db → db}/sample/option_values.yml +0 -0
  174. data/db/sample/orders.yml +15 -0
  175. data/{starter-app/db → db}/sample/product_option_types.yml +0 -0
  176. data/{starter-app/db → db}/sample/products.yml +0 -0
  177. data/{starter-app/db → db}/sample/roles.yml +0 -0
  178. data/{starter-app/db → db}/sample/states.yml +0 -0
  179. data/{starter-app/db → db}/sample/txns.yml +0 -0
  180. data/{starter-app/db → db}/sample/users.yml +0 -0
  181. data/db/sample/variants.yml +61 -0
  182. data/{starter-app/lib → lib}/authenticated_system.rb +0 -0
  183. data/{starter-app/lib → lib}/authenticated_test_helper.rb +0 -0
  184. data/{starter-app/lib → lib}/custom_fixtures.rb +0 -0
  185. data/{starter-app/vendor/plugins/spree/lib/shipping → lib}/flat_rate.rb +0 -0
  186. data/{starter-app/vendor/plugins/spree/lib → lib}/format.rb +0 -0
  187. data/lib/generators/instance/instance_generator.rb +129 -0
  188. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  189. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  190. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  191. data/lib/generators/instance/templates/databases/sqlserver.yml +20 -0
  192. data/lib/generators/instance/templates/demo_mongrel_cluster.yml +7 -0
  193. data/lib/generators/instance/templates/demo_robots.txt +2 -0
  194. data/lib/generators/instance/templates/instance_boot.rb +148 -0
  195. data/lib/generators/instance/templates/instance_environment.rb +136 -0
  196. data/lib/generators/instance/templates/instance_generate +16 -0
  197. data/lib/generators/instance/templates/instance_rakefile +3 -0
  198. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  199. data/{starter-app/lib → lib}/hijacker.rb +0 -0
  200. data/lib/plugins/extension_patches/init.rb +7 -0
  201. data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +80 -0
  202. data/lib/plugins/extension_patches/lib/mailer_hack.rb +8 -0
  203. data/lib/plugins/extension_patches/lib/routing_extension.rb +37 -0
  204. data/{starter-app/vendor → lib}/plugins/paginating_find/CHANGELOG +0 -0
  205. data/{starter-app/vendor → lib}/plugins/paginating_find/README +0 -0
  206. data/{starter-app/vendor → lib}/plugins/paginating_find/init.rb +0 -0
  207. data/{starter-app/vendor → lib}/plugins/paginating_find/lib/paginating_find.rb +0 -0
  208. data/{starter-app/vendor → lib}/plugins/paginating_find/lib/paging_enumerator.rb +0 -0
  209. data/{starter-app/vendor → lib}/plugins/paginating_find/lib/paging_helper.rb +0 -0
  210. data/{starter-app → lib/plugins/paginating_find/test_app}/Rakefile +0 -0
  211. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/app/controllers/application.rb +0 -0
  212. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/config/boot.rb +0 -0
  213. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/config/database.yml +0 -0
  214. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/config/environment.rb +0 -0
  215. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/config/environments/test.rb +0 -0
  216. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/config/routes.rb +0 -0
  217. data/{starter-app → lib/plugins/paginating_find/test_app}/script/breakpointer +0 -0
  218. data/{starter-app → lib/plugins/paginating_find/test_app}/script/console +0 -0
  219. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/fixtures/articles.yml +0 -0
  220. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/fixtures/authors.yml +0 -0
  221. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/fixtures/edits.yml +0 -0
  222. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/fixtures/models.rb +0 -0
  223. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/test_helper.rb +0 -0
  224. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/unit/abstract_test.rb +0 -0
  225. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/unit/group_test.rb +0 -0
  226. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/unit/paginating_find_test.rb +0 -0
  227. data/{starter-app/vendor → lib}/plugins/paginating_find/test_app/test/unit/paging_enumerator_test.rb +0 -0
  228. data/{starter-app/lib → lib}/role_requirement_system.rb +0 -0
  229. data/{starter-app/lib → lib}/role_requirement_test_helper.rb +0 -0
  230. data/lib/sales_tax.rb +26 -0
  231. data/lib/spree.rb +22 -0
  232. data/{starter-app/vendor/plugins/spree/lib/gateway → lib/spree}/bogus_gateway.rb +0 -0
  233. data/lib/spree/initializer.rb +154 -0
  234. data/lib/spree/setup.rb +146 -0
  235. data/lib/tasks/database.rake +35 -0
  236. data/lib/tasks/environments.rake +11 -0
  237. data/lib/tasks/instance.rake +26 -0
  238. data/lib/tasks/release.rake +98 -0
  239. data/{starter-app/lib → lib}/tasks/sample/products/0000/0001/ror_tote.jpeg +0 -0
  240. data/{starter-app/lib → lib}/tasks/sample/products/0000/0001/ror_tote_mini.jpeg +0 -0
  241. data/{starter-app/lib → lib}/tasks/sample/products/0000/0001/ror_tote_product.jpeg +0 -0
  242. data/{starter-app/lib → lib}/tasks/sample/products/0000/0001/ror_tote_small.jpeg +0 -0
  243. data/{starter-app/lib → lib}/tasks/sample/products/0000/0002/ror_tote_back.jpeg +0 -0
  244. data/{starter-app/lib → lib}/tasks/sample/products/0000/0002/ror_tote_back_mini.jpeg +0 -0
  245. data/{starter-app/lib → lib}/tasks/sample/products/0000/0002/ror_tote_back_product.jpeg +0 -0
  246. data/{starter-app/lib → lib}/tasks/sample/products/0000/0002/ror_tote_back_small.jpeg +0 -0
  247. data/{starter-app/lib → lib}/tasks/sample/products/0000/0003/ror_bag.jpeg +0 -0
  248. data/{starter-app/lib → lib}/tasks/sample/products/0000/0003/ror_bag_mini.jpeg +0 -0
  249. data/{starter-app/lib → lib}/tasks/sample/products/0000/0003/ror_bag_product.jpeg +0 -0
  250. data/{starter-app/lib → lib}/tasks/sample/products/0000/0003/ror_bag_small.jpeg +0 -0
  251. data/{starter-app/lib → lib}/tasks/sample/products/0000/0004/ror_baseball.jpeg +0 -0
  252. data/{starter-app/lib → lib}/tasks/sample/products/0000/0004/ror_baseball_mini.jpeg +0 -0
  253. data/{starter-app/lib → lib}/tasks/sample/products/0000/0004/ror_baseball_product.jpeg +0 -0
  254. data/{starter-app/lib → lib}/tasks/sample/products/0000/0004/ror_baseball_small.jpeg +0 -0
  255. data/{starter-app/lib → lib}/tasks/sample/products/0000/0005/ror_baseball_back.jpeg +0 -0
  256. data/{starter-app/lib → lib}/tasks/sample/products/0000/0005/ror_baseball_back_mini.jpeg +0 -0
  257. data/{starter-app/lib → lib}/tasks/sample/products/0000/0005/ror_baseball_back_product.jpeg +0 -0
  258. data/{starter-app/lib → lib}/tasks/sample/products/0000/0005/ror_baseball_back_small.jpeg +0 -0
  259. data/{starter-app/lib → lib}/tasks/sample/products/0000/0006/ror_jr_spaghetti.jpeg +0 -0
  260. data/{starter-app/lib → lib}/tasks/sample/products/0000/0006/ror_jr_spaghetti_mini.jpeg +0 -0
  261. data/{starter-app/lib → lib}/tasks/sample/products/0000/0006/ror_jr_spaghetti_product.jpeg +0 -0
  262. data/{starter-app/lib → lib}/tasks/sample/products/0000/0006/ror_jr_spaghetti_small.jpeg +0 -0
  263. data/{starter-app/lib → lib}/tasks/sample/products/0000/0007/ror_mug.jpeg +0 -0
  264. data/{starter-app/lib → lib}/tasks/sample/products/0000/0007/ror_mug_mini.jpeg +0 -0
  265. data/{starter-app/lib → lib}/tasks/sample/products/0000/0007/ror_mug_product.jpeg +0 -0
  266. data/{starter-app/lib → lib}/tasks/sample/products/0000/0007/ror_mug_small.jpeg +0 -0
  267. data/{starter-app/lib → lib}/tasks/sample/products/0000/0008/ror_mug_back.jpeg +0 -0
  268. data/{starter-app/lib → lib}/tasks/sample/products/0000/0008/ror_mug_back_mini.jpeg +0 -0
  269. data/{starter-app/lib → lib}/tasks/sample/products/0000/0008/ror_mug_back_product.jpeg +0 -0
  270. data/{starter-app/lib → lib}/tasks/sample/products/0000/0008/ror_mug_back_small.jpeg +0 -0
  271. data/{starter-app/lib → lib}/tasks/sample/products/0000/0009/ror_ringer.jpeg +0 -0
  272. data/{starter-app/lib → lib}/tasks/sample/products/0000/0009/ror_ringer_mini.jpeg +0 -0
  273. data/{starter-app/lib → lib}/tasks/sample/products/0000/0009/ror_ringer_product.jpeg +0 -0
  274. data/{starter-app/lib → lib}/tasks/sample/products/0000/0009/ror_ringer_small.jpeg +0 -0
  275. data/{starter-app/lib → lib}/tasks/sample/products/0000/0010/ror_ringer_back.jpeg +0 -0
  276. data/{starter-app/lib → lib}/tasks/sample/products/0000/0010/ror_ringer_back_mini.jpeg +0 -0
  277. data/{starter-app/lib → lib}/tasks/sample/products/0000/0010/ror_ringer_back_product.jpeg +0 -0
  278. data/{starter-app/lib → lib}/tasks/sample/products/0000/0010/ror_ringer_back_small.jpeg +0 -0
  279. data/{starter-app/lib → lib}/tasks/sample/products/0000/0011/ror_stein.jpeg +0 -0
  280. data/{starter-app/lib → lib}/tasks/sample/products/0000/0011/ror_stein_mini.jpeg +0 -0
  281. data/{starter-app/lib → lib}/tasks/sample/products/0000/0011/ror_stein_product.jpeg +0 -0
  282. data/{starter-app/lib → lib}/tasks/sample/products/0000/0011/ror_stein_small.jpeg +0 -0
  283. data/{starter-app/lib → lib}/tasks/sample/products/0000/0012/ror_stein_back.jpeg +0 -0
  284. data/{starter-app/lib → lib}/tasks/sample/products/0000/0012/ror_stein_back_mini.jpeg +0 -0
  285. data/{starter-app/lib → lib}/tasks/sample/products/0000/0012/ror_stein_back_product.jpeg +0 -0
  286. data/{starter-app/lib → lib}/tasks/sample/products/0000/0012/ror_stein_back_small.jpeg +0 -0
  287. data/{starter-app/lib → lib}/tasks/spree_sample_data.rake +0 -0
  288. data/{starter-app/log → log}/README +0 -0
  289. data/{starter-app/public → public}/.htaccess +0 -0
  290. data/{starter-app/public → public}/404.html +0 -0
  291. data/{starter-app/public → public}/500.html +0 -0
  292. data/{starter-app/public → public}/dispatch.cgi +0 -0
  293. data/{starter-app/public → public}/dispatch.fcgi +0 -0
  294. data/{starter-app/public → public}/dispatch.rb +0 -0
  295. data/{starter-app/public → public}/favicon.ico +0 -0
  296. data/{starter-app/vendor/plugins/spree/assets → public}/images/amex_cid.gif +0 -0
  297. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/images/calendar_date_select/calendar.gif +0 -0
  298. data/{starter-app/vendor/plugins/spree/assets → public}/images/creditcard.gif +0 -0
  299. data/{starter-app/vendor/plugins/spree/assets → public}/images/discover_cid.gif +0 -0
  300. data/{starter-app/vendor/plugins/spree/assets → public}/images/master_cid.jpg +0 -0
  301. data/{starter-app/public → public}/images/rails.png +0 -0
  302. data/{starter-app/vendor/plugins/spree/assets → public}/images/spinner.gif +0 -0
  303. data/{starter-app/public → public}/images/spree.jpg +0 -0
  304. data/{starter-app/vendor/plugins/spree/assets → public}/images/spree/progress.gif +0 -0
  305. data/{starter-app/vendor/plugins/spree/assets → public}/images/spree/spinner.gif +0 -0
  306. data/{starter-app/vendor/plugins/spree/assets → public}/images/spree/spree.jpg +0 -0
  307. data/{starter-app/vendor/plugins/spree/assets → public}/images/visa_cid.gif +0 -0
  308. data/{starter-app/public → public}/javascripts/application.js +0 -0
  309. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/calendar_date_select.js +0 -0
  310. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/format_american.js +0 -0
  311. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/format_euro_24hr.js +0 -0
  312. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/format_finnish.js +0 -0
  313. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/format_hyphen_ampm.js +0 -0
  314. data/{starter-app/vendor/plugins/calendar_date_select/public → public}/javascripts/calendar_date_select/format_italian.js +0 -0
  315. data/{starter-app/public → public}/javascripts/controls.js +0 -0
  316. data/{starter-app/public → public}/javascripts/dragdrop.js +0 -0
  317. data/{starter-app/public → public}/javascripts/effects.js +0 -0
  318. data/{starter-app/public → public}/javascripts/prototype.js +0 -0
  319. data/public/plugin_assets/README +5 -0
  320. data/public/plugin_assets/calendar_date_select/images/calendar_date_select/calendar.gif +0 -0
  321. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/calendar_date_select.js +439 -0
  322. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/format_american.js +34 -0
  323. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  324. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/format_finnish.js +24 -0
  325. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  326. data/public/plugin_assets/calendar_date_select/javascripts/calendar_date_select/format_italian.js +24 -0
  327. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/javascripts/calendar_date_select/locale/fi.js +0 -0
  328. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/stylesheets/calendar_date_select/blue.css +0 -0
  329. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/stylesheets/calendar_date_select/default.css +0 -0
  330. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/stylesheets/calendar_date_select/plain.css +0 -0
  331. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/stylesheets/calendar_date_select/red.css +0 -0
  332. data/{starter-app/vendor/plugins/calendar_date_select/public → public/plugin_assets/calendar_date_select}/stylesheets/calendar_date_select/silver.css +0 -0
  333. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/404.html +0 -0
  334. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/500.html +0 -0
  335. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/dispatch.cgi +0 -0
  336. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/dispatch.fcgi +0 -0
  337. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/dispatch.rb +0 -0
  338. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/favicon.ico +0 -0
  339. data/public/plugin_assets/spree/images/amex_cid.gif +0 -0
  340. data/public/plugin_assets/spree/images/creditcard.gif +0 -0
  341. data/public/plugin_assets/spree/images/discover_cid.gif +0 -0
  342. data/public/plugin_assets/spree/images/master_cid.jpg +0 -0
  343. data/public/plugin_assets/spree/images/products/ror_bag.jpg +0 -0
  344. data/public/plugin_assets/spree/images/products/ror_baseball_jersey.jpg +0 -0
  345. data/public/plugin_assets/spree/images/products/ror_jr_spaghetti.jpg +0 -0
  346. data/public/plugin_assets/spree/images/products/ror_mug.jpg +0 -0
  347. data/public/plugin_assets/spree/images/products/ror_ringer_tshirt.jpg +0 -0
  348. data/public/plugin_assets/spree/images/products/ror_stein.jpg +0 -0
  349. data/public/plugin_assets/spree/images/products/ror_tote.jpg +0 -0
  350. data/{starter-app/vendor/plugins/attachment_fu/test/fixtures/files → public/plugin_assets/spree/images}/rails.png +0 -0
  351. data/public/plugin_assets/spree/images/spinner.gif +0 -0
  352. data/public/plugin_assets/spree/images/spree/progress.gif +0 -0
  353. data/public/plugin_assets/spree/images/spree/spinner.gif +0 -0
  354. data/public/plugin_assets/spree/images/spree/spree.jpg +0 -0
  355. data/public/plugin_assets/spree/images/spree/spree_logo142x65.gif +0 -0
  356. data/public/plugin_assets/spree/images/spree/spree_logo245x112.gif +0 -0
  357. data/public/plugin_assets/spree/images/visa_cid.gif +0 -0
  358. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/application.js +0 -0
  359. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/controls.js +0 -0
  360. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/dragdrop.js +0 -0
  361. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/effects.js +0 -0
  362. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/lowpro.js +0 -0
  363. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/javascripts/prototype.js +0 -0
  364. data/{starter-app/public → public/plugin_assets/spree}/robots.txt +0 -0
  365. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/cart/_controller.css +0 -0
  366. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/checkout/_controller.css +0 -0
  367. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/fullscreen.css +0 -0
  368. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/orders/_controller.css +0 -0
  369. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/products/_controller.css +0 -0
  370. data/public/plugin_assets/spree/stylesheets/spree-admin.css +355 -0
  371. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/spree.css +0 -0
  372. data/{starter-app/vendor/plugins/spree/assets → public/plugin_assets/spree}/stylesheets/store/_controller.css +0 -0
  373. data/{starter-app/vendor/plugins/spree/assets → public}/robots.txt +0 -0
  374. data/{starter-app/public → public}/stylesheets/application.css +0 -0
  375. data/public/stylesheets/calendar_date_select/blue.css +130 -0
  376. data/public/stylesheets/calendar_date_select/default.css +135 -0
  377. data/public/stylesheets/calendar_date_select/plain.css +128 -0
  378. data/public/stylesheets/calendar_date_select/red.css +135 -0
  379. data/public/stylesheets/calendar_date_select/silver.css +133 -0
  380. data/public/stylesheets/cart/_controller.css +71 -0
  381. data/{starter-app/public/stylesheets/checkout/_controller.css → public/stylesheets/checkout/_controller-override.css} +0 -0
  382. data/public/stylesheets/checkout/_controller.css +31 -0
  383. data/public/stylesheets/fullscreen.css +63 -0
  384. data/public/stylesheets/orders/_controller.css +3 -0
  385. data/public/stylesheets/products/_controller.css +38 -0
  386. data/public/stylesheets/spree-admin.css +355 -0
  387. data/public/stylesheets/spree.css +66 -0
  388. data/public/stylesheets/store/_controller.css +23 -0
  389. data/{starter-app/script → script}/about +0 -0
  390. data/{starter-app/vendor/plugins/paginating_find/test_app/script → script}/breakpointer +0 -0
  391. data/{starter-app/vendor/plugins/paginating_find/test_app/script → script}/console +0 -0
  392. data/script/destroy +2 -13
  393. data/script/generate +2 -13
  394. data/{starter-app/script → script}/performance/benchmarker +0 -0
  395. data/{starter-app/script → script}/performance/profiler +0 -0
  396. data/{starter-app/script → script}/plugin +0 -0
  397. data/{starter-app/script → script}/process/inspector +0 -0
  398. data/{starter-app/script → script}/process/reaper +0 -0
  399. data/{starter-app/script → script}/process/spawner +0 -0
  400. data/{starter-app/script → script}/runner +0 -0
  401. data/{starter-app/script → script}/server +0 -0
  402. data/{starter-app/script → script}/spec +0 -0
  403. data/{starter-app/script → script}/spec_server +0 -0
  404. data/spec/helpers/spree/base_helper_spec.rb +6 -0
  405. data/{starter-app/spec → spec}/models/cart_item_spec.rb +0 -0
  406. data/{starter-app/spec → spec}/models/cart_spec.rb +0 -0
  407. data/spec/models/inventory_unit_spec.rb +18 -0
  408. data/{starter-app/spec → spec}/models/line_item_spec.rb +0 -0
  409. data/spec/models/product_spec.rb +48 -0
  410. data/{starter-app/spec → spec}/rcov.opts +0 -0
  411. data/{starter-app/spec → spec}/spec.opts +0 -0
  412. data/{starter-app/spec → spec}/spec_helper.rb +0 -0
  413. data/spree.tmproj +444 -0
  414. data/{starter-app/stories → stories}/all.rb +0 -0
  415. data/{starter-app/stories → stories}/helper.rb +0 -0
  416. data/vendor/extensions/bogus_gateway/LICENSE +26 -0
  417. data/{starter-app/vendor → vendor}/plugins/acts_as_list/README +0 -0
  418. data/{starter-app/vendor → vendor}/plugins/acts_as_list/init.rb +0 -0
  419. data/{starter-app/vendor → vendor}/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -0
  420. data/{starter-app/vendor → vendor}/plugins/acts_as_list/test/list_test.rb +0 -0
  421. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/README +0 -0
  422. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/Rakefile +0 -0
  423. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/init.rb +0 -0
  424. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -0
  425. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  426. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -0
  427. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/database.yml +0 -0
  428. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  429. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  430. data/{starter-app/vendor → vendor}/plugins/acts_as_tree/test/schema.rb +0 -0
  431. data/{starter-app/vendor → vendor}/plugins/attachment_fu/CHANGELOG +0 -0
  432. data/{starter-app/vendor → vendor}/plugins/attachment_fu/README +0 -0
  433. data/{starter-app/vendor → vendor}/plugins/attachment_fu/Rakefile +0 -0
  434. data/{starter-app/vendor → vendor}/plugins/attachment_fu/amazon_s3.yml.tpl +0 -0
  435. data/{starter-app/vendor → vendor}/plugins/attachment_fu/init.rb +0 -0
  436. data/{starter-app/vendor → vendor}/plugins/attachment_fu/install.rb +0 -0
  437. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/geometry.rb +0 -0
  438. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb +0 -0
  439. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/db_file_backend.rb +0 -0
  440. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +0 -0
  441. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb +0 -0
  442. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb +0 -0
  443. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb +0 -0
  444. data/{starter-app/vendor → vendor}/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb +0 -0
  445. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/amazon_s3.yml +0 -0
  446. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/backends/db_file_test.rb +0 -0
  447. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/backends/file_system_test.rb +0 -0
  448. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/backends/remote/s3_test.rb +0 -0
  449. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/base_attachment_tests.rb +0 -0
  450. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/basic_test.rb +0 -0
  451. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/database.yml +0 -0
  452. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/extra_attachment_test.rb +0 -0
  453. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/fixtures/attachment.rb +0 -0
  454. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/fixtures/files/fake/rails.png +0 -0
  455. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/fixtures/files/foo.txt +0 -0
  456. data/{starter-app/vendor/plugins/spree/assets/images → vendor/plugins/attachment_fu/test/fixtures/files}/rails.png +0 -0
  457. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/geometry_test.rb +0 -0
  458. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/processors/image_science_test.rb +0 -0
  459. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/processors/mini_magick_test.rb +0 -0
  460. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/processors/rmagick_test.rb +0 -0
  461. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/schema.rb +0 -0
  462. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/test_helper.rb +0 -0
  463. data/{starter-app/vendor → vendor}/plugins/attachment_fu/test/validation_test.rb +0 -0
  464. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/CHANGELOG +0 -0
  465. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/MIT-LICENSE +0 -0
  466. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/README +0 -0
  467. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/init.rb +0 -0
  468. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/js_test/functional/cds_test.html +0 -0
  469. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/js_test/prototype.js +0 -0
  470. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/js_test/test.css +0 -0
  471. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/js_test/unit/cds_helper_methods.html +0 -0
  472. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/js_test/unittest.js +0 -0
  473. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/lib/calendar_date_select.rb +0 -0
  474. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/lib/includes_helper.rb +0 -0
  475. data/vendor/plugins/calendar_date_select/public/images/calendar_date_select/calendar.gif +0 -0
  476. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/calendar_date_select.js +439 -0
  477. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_american.js +34 -0
  478. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  479. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_finnish.js +24 -0
  480. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  481. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_italian.js +24 -0
  482. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  483. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/blue.css +130 -0
  484. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/default.css +135 -0
  485. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/plain.css +128 -0
  486. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/red.css +135 -0
  487. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/silver.css +133 -0
  488. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/test/functional/calendar_date_select_test.rb +0 -0
  489. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/test/functional/helper_methods_test.rb +0 -0
  490. data/{starter-app/vendor → vendor}/plugins/calendar_date_select/test/test_helper.rb +0 -0
  491. data/vendor/plugins/enumerable_constants/README +4 -0
  492. data/vendor/plugins/enumerable_constants/Rakefile +22 -0
  493. data/vendor/plugins/enumerable_constants/init.rb +1 -0
  494. data/{starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt → vendor/plugins/enumerable_constants/install.rb} +0 -0
  495. data/vendor/plugins/enumerable_constants/lib/enumerable_constants.rb +204 -0
  496. data/vendor/plugins/enumerable_constants/tasks/enumerable_constants_tasks.rake +4 -0
  497. data/vendor/plugins/enumerable_constants/test/enumerable_constants_test.rb +8 -0
  498. data/{starter-app/vendor → vendor}/plugins/in_place_editing/README +0 -0
  499. data/{starter-app/vendor → vendor}/plugins/in_place_editing/Rakefile +0 -0
  500. data/{starter-app/vendor → vendor}/plugins/in_place_editing/init.rb +0 -0
  501. data/{starter-app/vendor → vendor}/plugins/in_place_editing/lib/in_place_editing.rb +0 -0
  502. data/{starter-app/vendor → vendor}/plugins/in_place_editing/lib/in_place_macros_helper.rb +0 -0
  503. data/{starter-app/vendor → vendor}/plugins/in_place_editing/test/in_place_editing_test.rb +0 -0
  504. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/MIT-LICENSE +0 -0
  505. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/README +0 -0
  506. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/Rakefile +0 -0
  507. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/CHANGES +0 -0
  508. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +0 -0
  509. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/all_stories.rb +0 -0
  510. data/{starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml → vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt} +0 -0
  511. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/rcov.opts +0 -0
  512. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/script/spec +0 -0
  513. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +0 -0
  514. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +0 -0
  515. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +0 -0
  516. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec/templates/stories_helper.rb +0 -0
  517. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_controller/USAGE +0 -0
  518. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +0 -0
  519. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +0 -0
  520. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +0 -0
  521. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +0 -0
  522. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_model/USAGE +0 -0
  523. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +0 -0
  524. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +0 -0
  525. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +0 -0
  526. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +0 -0
  527. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +0 -0
  528. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +0 -0
  529. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +0 -0
  530. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +0 -0
  531. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/routing_spec.rb +0 -0
  532. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +0 -0
  533. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/init.rb +0 -0
  534. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/autotest/discover.rb +0 -0
  535. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +0 -0
  536. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails.rb +0 -0
  537. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example.rb +0 -0
  538. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/assigns_hash_proxy.rb +0 -0
  539. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/controller_example_group.rb +0 -0
  540. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/functional_example_group.rb +0 -0
  541. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/helper_example_group.rb +0 -0
  542. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/ivar_proxy.rb +0 -0
  543. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/model_example_group.rb +0 -0
  544. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/rails_example_group.rb +0 -0
  545. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/render_observer.rb +0 -0
  546. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/example/view_example_group.rb +0 -0
  547. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +0 -0
  548. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +0 -0
  549. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +0 -0
  550. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +0 -0
  551. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +0 -0
  552. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +0 -0
  553. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +0 -0
  554. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/spec/example/configuration.rb +0 -0
  555. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/extensions/spec/matchers/have.rb +0 -0
  556. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +0 -0
  557. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +0 -0
  558. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +0 -0
  559. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +0 -0
  560. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +0 -0
  561. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/story_adapter.rb +0 -0
  562. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/lib/spec/rails/version.rb +0 -0
  563. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/autotest/mappings_spec.rb +0 -0
  564. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/autotest/rails_rspec_spec.rb +0 -0
  565. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb +0 -0
  566. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb +0 -0
  567. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb +0 -0
  568. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb +0 -0
  569. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb +0 -0
  570. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb +0 -0
  571. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb +0 -0
  572. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb +0 -0
  573. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb +0 -0
  574. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb +0 -0
  575. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb +0 -0
  576. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/extensions/action_controller_rescue_action_spec.rb +0 -0
  577. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/extensions/action_view_base_spec.rb +0 -0
  578. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +0 -0
  579. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +0 -0
  580. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +0 -0
  581. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/errors_on_spec.rb +0 -0
  582. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb +0 -0
  583. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +0 -0
  584. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +0 -0
  585. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/mocks/mock_model_spec.rb +0 -0
  586. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/sample_spec.rb +0 -0
  587. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb +0 -0
  588. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails/spec_spec.rb +0 -0
  589. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/rails_suite.rb +0 -0
  590. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec/spec_helper.rb +0 -0
  591. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/controllers/action_view_base_spec_controller.rb +0 -0
  592. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +0 -0
  593. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +0 -0
  594. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +0 -0
  595. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +0 -0
  596. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +0 -0
  597. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +0 -0
  598. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +0 -0
  599. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +0 -0
  600. data/{starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml → vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml} +0 -0
  601. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +0 -0
  602. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +0 -0
  603. data/{starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml → vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml} +0 -0
  604. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +0 -0
  605. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +0 -0
  606. data/{starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml → vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml} +0 -0
  607. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +0 -0
  608. data/{starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml → vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml} +0 -0
  609. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +0 -0
  610. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +0 -0
  611. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +0 -0
  612. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +0 -0
  613. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +0 -0
  614. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +0 -0
  615. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +0 -0
  616. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +0 -0
  617. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +0 -0
  618. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +0 -0
  619. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +0 -0
  620. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +0 -0
  621. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +0 -0
  622. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial.rhtml +0 -0
  623. data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml +0 -0
  624. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +0 -0
  625. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml +0 -0
  626. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +0 -0
  627. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +0 -0
  628. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +0 -0
  629. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +0 -0
  630. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/foo/show.rhtml +0 -0
  631. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/implicit_helper.rhtml +0 -0
  632. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +0 -0
  633. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial.rhtml +0 -0
  634. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml +0 -0
  635. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml +0 -0
  636. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/stories/all.rb +0 -0
  637. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/stories/helper.rb +0 -0
  638. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/stories/steps/people.rb +0 -0
  639. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/stories/transactions_should_rollback +0 -0
  640. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/stories/transactions_should_rollback.rb +0 -0
  641. data/{starter-app/vendor → vendor}/plugins/rspec_on_rails/tasks/rspec.rake +0 -0
  642. data/vendor/rails/TAG_rel_2-0-2 +0 -0
  643. data/vendor/rails/actionmailer/CHANGELOG +325 -0
  644. data/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  645. data/vendor/rails/actionmailer/README +145 -0
  646. data/vendor/rails/actionmailer/Rakefile +96 -0
  647. data/vendor/rails/actionmailer/install.rb +30 -0
  648. data/vendor/rails/actionmailer/lib/action_mailer.rb +52 -0
  649. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  650. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +603 -0
  651. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +111 -0
  652. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +19 -0
  653. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +110 -0
  654. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +51 -0
  655. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +59 -0
  656. data/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +59 -0
  657. data/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +67 -0
  658. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +8 -0
  659. data/vendor/rails/actionmailer/lib/action_mailer/vendor.rb +14 -0
  660. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  661. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail.rb +4 -0
  662. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/Makefile +19 -0
  663. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/address.rb +245 -0
  664. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/attachments.rb +47 -0
  665. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/base64.rb +52 -0
  666. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/compat.rb +39 -0
  667. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/config.rb +71 -0
  668. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/core_extensions.rb +67 -0
  669. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/encode.rb +481 -0
  670. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/facade.rb +552 -0
  671. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/header.rb +931 -0
  672. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/info.rb +35 -0
  673. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/interface.rb +540 -0
  674. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/loader.rb +1 -0
  675. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/mail.rb +462 -0
  676. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/mailbox.rb +435 -0
  677. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/mbox.rb +1 -0
  678. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/net.rb +282 -0
  679. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/obsolete.rb +137 -0
  680. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/parser.rb +1475 -0
  681. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/parser.y +381 -0
  682. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/port.rb +379 -0
  683. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/quoting.rb +142 -0
  684. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/scanner.rb +43 -0
  685. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/scanner_r.rb +263 -0
  686. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/stringio.rb +279 -0
  687. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/tmail.rb +1 -0
  688. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/utils.rb +281 -0
  689. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.1.0/tmail/version.rb +38 -0
  690. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  691. data/vendor/rails/actionmailer/lib/actionmailer.rb +1 -0
  692. data/vendor/rails/actionmailer/test/abstract_unit.rb +49 -0
  693. data/vendor/rails/actionmailer/test/delivery_method_test.rb +51 -0
  694. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  695. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.rhtml +0 -0
  696. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  697. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.rhtml +0 -0
  698. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +1 -0
  699. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.rhtml +0 -0
  700. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  701. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.rhtml +0 -0
  702. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  703. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.rhtml +0 -0
  704. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +5 -0
  705. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  706. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +0 -0
  707. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml +0 -0
  708. data/vendor/rails/actionmailer/test/fixtures/raw_base64_decoded_string +0 -0
  709. data/vendor/rails/actionmailer/test/fixtures/raw_base64_encoded_string +1 -0
  710. data/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  711. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  712. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  713. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  714. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  715. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  716. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  717. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  718. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  719. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  720. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  721. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  722. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  723. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  724. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +100 -0
  725. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  726. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  727. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.rhtml +0 -0
  728. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  729. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.rhtml +0 -0
  730. data/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  731. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  732. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  733. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  734. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +0 -0
  735. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  736. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +0 -0
  737. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  738. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +0 -0
  739. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  740. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +0 -0
  741. data/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  742. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +2 -0
  743. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  744. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.erb +3 -0
  745. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.rhtml +0 -0
  746. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  747. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.rhtml +0 -0
  748. data/vendor/rails/actionmailer/test/mail_helper_test.rb +95 -0
  749. data/vendor/rails/actionmailer/test/mail_render_test.rb +122 -0
  750. data/vendor/rails/actionmailer/test/mail_service_test.rb +939 -0
  751. data/vendor/rails/actionmailer/test/quoting_test.rb +111 -0
  752. data/vendor/rails/actionmailer/test/test_helper_test.rb +117 -0
  753. data/vendor/rails/actionmailer/test/tmail_test.rb +22 -0
  754. data/vendor/rails/actionmailer/test/url_test.rb +76 -0
  755. data/vendor/rails/actionpack/CHANGELOG +4606 -0
  756. data/vendor/rails/actionpack/MIT-LICENSE +21 -0
  757. data/vendor/rails/actionpack/README +469 -0
  758. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +24 -0
  759. data/vendor/rails/actionpack/Rakefile +153 -0
  760. data/vendor/rails/actionpack/install.rb +30 -0
  761. data/vendor/rails/actionpack/lib/action_controller.rb +79 -0
  762. data/vendor/rails/actionpack/lib/action_controller/assertions.rb +69 -0
  763. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +39 -0
  764. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +19 -0
  765. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +166 -0
  766. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +143 -0
  767. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +640 -0
  768. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +130 -0
  769. data/vendor/rails/actionpack/lib/action_controller/base.rb +1295 -0
  770. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +94 -0
  771. data/vendor/rails/actionpack/lib/action_controller/caching.rb +683 -0
  772. data/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +16 -0
  773. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +106 -0
  774. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  775. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb +73 -0
  776. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +23 -0
  777. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +221 -0
  778. data/vendor/rails/actionpack/lib/action_controller/components.rb +165 -0
  779. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +84 -0
  780. data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +195 -0
  781. data/vendor/rails/actionpack/lib/action_controller/filters.rb +767 -0
  782. data/vendor/rails/actionpack/lib/action_controller/flash.rb +177 -0
  783. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +204 -0
  784. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +126 -0
  785. data/vendor/rails/actionpack/lib/action_controller/integration.rb +581 -0
  786. data/vendor/rails/actionpack/lib/action_controller/layout.rb +326 -0
  787. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +170 -0
  788. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +163 -0
  789. data/vendor/rails/actionpack/lib/action_controller/mime_types.rb +20 -0
  790. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +88 -0
  791. data/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +91 -0
  792. data/vendor/rails/actionpack/lib/action_controller/request.rb +730 -0
  793. data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +132 -0
  794. data/vendor/rails/actionpack/lib/action_controller/request_profiler.rb +138 -0
  795. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +258 -0
  796. data/vendor/rails/actionpack/lib/action_controller/resources.rb +529 -0
  797. data/vendor/rails/actionpack/lib/action_controller/response.rb +76 -0
  798. data/vendor/rails/actionpack/lib/action_controller/routing.rb +1499 -0
  799. data/vendor/rails/actionpack/lib/action_controller/routing_optimisation.rb +119 -0
  800. data/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +336 -0
  801. data/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +164 -0
  802. data/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +32 -0
  803. data/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +35 -0
  804. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +98 -0
  805. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +151 -0
  806. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  807. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +141 -0
  808. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  809. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +26 -0
  810. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  811. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +29 -0
  812. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  813. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  814. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +21 -0
  815. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  816. data/vendor/rails/actionpack/lib/action_controller/test_case.rb +53 -0
  817. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +520 -0
  818. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +135 -0
  819. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  820. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +530 -0
  821. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  822. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  823. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  824. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  825. data/vendor/rails/actionpack/lib/action_controller/verification.rb +114 -0
  826. data/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  827. data/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  828. data/vendor/rails/actionpack/lib/action_view.rb +37 -0
  829. data/vendor/rails/actionpack/lib/action_view/base.rb +642 -0
  830. data/vendor/rails/actionpack/lib/action_view/compiled_templates.rb +69 -0
  831. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +255 -0
  832. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +548 -0
  833. data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +111 -0
  834. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +31 -0
  835. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +39 -0
  836. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +162 -0
  837. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +689 -0
  838. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +31 -0
  839. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +689 -0
  840. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +425 -0
  841. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +432 -0
  842. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +217 -0
  843. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +963 -0
  844. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +972 -0
  845. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +1120 -0
  846. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +4225 -0
  847. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +179 -0
  848. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1268 -0
  849. data/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +20 -0
  850. data/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +59 -0
  851. data/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +223 -0
  852. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +199 -0
  853. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +133 -0
  854. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +479 -0
  855. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +524 -0
  856. data/vendor/rails/actionpack/lib/action_view/partials.rb +200 -0
  857. data/vendor/rails/actionpack/lib/action_view/template_error.rb +102 -0
  858. data/vendor/rails/actionpack/lib/action_view/template_handler.rb +17 -0
  859. data/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +19 -0
  860. data/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +21 -0
  861. data/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +14 -0
  862. data/vendor/rails/actionpack/lib/actionpack.rb +1 -0
  863. data/vendor/rails/actionpack/test/abstract_unit.rb +36 -0
  864. data/vendor/rails/actionpack/test/action_view_test.rb +44 -0
  865. data/vendor/rails/actionpack/test/active_record_unit.rb +108 -0
  866. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +142 -0
  867. data/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +74 -0
  868. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +492 -0
  869. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +43 -0
  870. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +682 -0
  871. data/vendor/rails/actionpack/test/controller/base_test.rb +134 -0
  872. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +33 -0
  873. data/vendor/rails/actionpack/test/controller/caching_test.rb +349 -0
  874. data/vendor/rails/actionpack/test/controller/capture_test.rb +89 -0
  875. data/vendor/rails/actionpack/test/controller/cgi_test.rb +115 -0
  876. data/vendor/rails/actionpack/test/controller/components_test.rb +140 -0
  877. data/vendor/rails/actionpack/test/controller/content_type_test.rb +139 -0
  878. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  879. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  880. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  881. data/vendor/rails/actionpack/test/controller/cookie_test.rb +135 -0
  882. data/vendor/rails/actionpack/test/controller/custom_handler_test.rb +41 -0
  883. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
  884. data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +123 -0
  885. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +16 -0
  886. data/vendor/rails/actionpack/test/controller/fake_models.rb +5 -0
  887. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +43 -0
  888. data/vendor/rails/actionpack/test/controller/filters_test.rb +856 -0
  889. data/vendor/rails/actionpack/test/controller/flash_test.rb +146 -0
  890. data/vendor/rails/actionpack/test/controller/fragment_store_setting_test.rb +47 -0
  891. data/vendor/rails/actionpack/test/controller/helper_test.rb +206 -0
  892. data/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +124 -0
  893. data/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +69 -0
  894. data/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +250 -0
  895. data/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +239 -0
  896. data/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +51 -0
  897. data/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +125 -0
  898. data/vendor/rails/actionpack/test/controller/http_authentication_test.rb +54 -0
  899. data/vendor/rails/actionpack/test/controller/integration_test.rb +255 -0
  900. data/vendor/rails/actionpack/test/controller/layout_test.rb +239 -0
  901. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +506 -0
  902. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +55 -0
  903. data/vendor/rails/actionpack/test/controller/new_render_test.rb +832 -0
  904. data/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +98 -0
  905. data/vendor/rails/actionpack/test/controller/record_identifier_test.rb +103 -0
  906. data/vendor/rails/actionpack/test/controller/redirect_test.rb +258 -0
  907. data/vendor/rails/actionpack/test/controller/render_test.rb +464 -0
  908. data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +217 -0
  909. data/vendor/rails/actionpack/test/controller/request_test.rb +836 -0
  910. data/vendor/rails/actionpack/test/controller/rescue_test.rb +501 -0
  911. data/vendor/rails/actionpack/test/controller/resources_test.rb +787 -0
  912. data/vendor/rails/actionpack/test/controller/routing_test.rb +2203 -0
  913. data/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  914. data/vendor/rails/actionpack/test/controller/send_file_test.rb +127 -0
  915. data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +246 -0
  916. data/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +182 -0
  917. data/vendor/rails/actionpack/test/controller/session_fixation_test.rb +89 -0
  918. data/vendor/rails/actionpack/test/controller/session_management_test.rb +156 -0
  919. data/vendor/rails/actionpack/test/controller/test_test.rb +623 -0
  920. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +246 -0
  921. data/vendor/rails/actionpack/test/controller/verification_test.rb +253 -0
  922. data/vendor/rails/actionpack/test/controller/view_paths_test.rb +137 -0
  923. data/vendor/rails/actionpack/test/controller/webservice_test.rb +184 -0
  924. data/vendor/rails/actionpack/test/fixtures/addresses/list.erb +1 -0
  925. data/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  926. data/vendor/rails/actionpack/test/fixtures/company.rb +9 -0
  927. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  928. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  929. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  930. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  931. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +43 -0
  932. data/vendor/rails/actionpack/test/fixtures/developer.rb +9 -0
  933. data/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  934. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  935. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +1 -0
  936. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  937. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  938. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  939. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  940. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  941. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  942. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  943. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  944. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  945. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  946. data/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  947. data/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +1 -0
  948. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  949. data/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  950. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  951. data/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  952. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  953. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  954. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  955. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  956. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  957. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +1 -0
  958. data/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +1 -0
  959. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  960. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  961. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  962. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  963. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  964. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  965. data/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  966. data/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  967. data/vendor/rails/actionpack/test/fixtures/public/404.html +1 -0
  968. data/vendor/rails/actionpack/test/fixtures/public/500.html +1 -0
  969. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  970. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +0 -0
  971. data/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +1 -0
  972. data/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +1 -0
  973. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +1 -0
  974. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +1 -0
  975. data/vendor/rails/actionpack/test/fixtures/replies.yml +15 -0
  976. data/vendor/rails/actionpack/test/fixtures/reply.rb +6 -0
  977. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  978. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  979. data/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  980. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  981. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  982. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  983. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  984. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  985. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  986. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  987. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  988. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  989. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  990. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  991. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +1 -0
  992. data/vendor/rails/actionpack/test/fixtures/test/_customer.erb +1 -0
  993. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +1 -0
  994. data/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +1 -0
  995. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +2 -0
  996. data/vendor/rails/actionpack/test/fixtures/test/_hello.builder +1 -0
  997. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  998. data/vendor/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  999. data/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  1000. data/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  1001. data/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  1002. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +1 -0
  1003. data/vendor/rails/actionpack/test/fixtures/test/_person.erb +2 -0
  1004. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +2 -0
  1005. data/vendor/rails/actionpack/test/fixtures/test/block_content_for.erb +2 -0
  1006. data/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  1007. data/vendor/rails/actionpack/test/fixtures/test/capturing.erb +4 -0
  1008. data/vendor/rails/actionpack/test/fixtures/test/content_for.erb +2 -0
  1009. data/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +3 -0
  1010. data/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +2 -0
  1011. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  1012. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  1013. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  1014. data/vendor/rails/actionpack/test/fixtures/test/erb_content_for.erb +2 -0
  1015. data/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  1016. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  1017. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  1018. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  1019. data/vendor/rails/actionpack/test/fixtures/test/greeting.erb +1 -0
  1020. data/vendor/rails/actionpack/test/fixtures/test/hello.builder +4 -0
  1021. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  1022. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +3 -0
  1023. data/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  1024. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  1025. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  1026. data/vendor/rails/actionpack/test/fixtures/test/list.erb +1 -0
  1027. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  1028. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +4 -0
  1029. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  1030. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  1031. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +1 -0
  1032. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +9 -0
  1033. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  1034. data/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  1035. data/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  1036. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +251 -0
  1037. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +438 -0
  1038. data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +101 -0
  1039. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +72 -0
  1040. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +193 -0
  1041. data/vendor/rails/actionpack/test/template/date_helper_test.rb +1438 -0
  1042. data/vendor/rails/actionpack/test/template/erb_util_test.rb +56 -0
  1043. data/vendor/rails/actionpack/test/template/form_helper_test.rb +792 -0
  1044. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +1296 -0
  1045. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +238 -0
  1046. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +115 -0
  1047. data/vendor/rails/actionpack/test/template/number_helper_test.rb +93 -0
  1048. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +627 -0
  1049. data/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +49 -0
  1050. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +96 -0
  1051. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +80 -0
  1052. data/vendor/rails/actionpack/test/template/text_helper_test.rb +335 -0
  1053. data/vendor/rails/actionpack/test/template/url_helper_test.rb +536 -0
  1054. data/vendor/rails/actionpack/test/testing_sandbox.rb +11 -0
  1055. data/vendor/rails/activerecord/CHANGELOG +5527 -0
  1056. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  1057. data/vendor/rails/activerecord/README +346 -0
  1058. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +33 -0
  1059. data/vendor/rails/activerecord/Rakefile +248 -0
  1060. data/vendor/rails/activerecord/examples/associations.png +0 -0
  1061. data/vendor/rails/activerecord/install.rb +30 -0
  1062. data/vendor/rails/activerecord/lib/active_record.rb +76 -0
  1063. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +180 -0
  1064. data/vendor/rails/activerecord/lib/active_record/associations.rb +1769 -0
  1065. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +240 -0
  1066. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +160 -0
  1067. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +56 -0
  1068. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +50 -0
  1069. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +164 -0
  1070. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +174 -0
  1071. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +284 -0
  1072. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +96 -0
  1073. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +328 -0
  1074. data/vendor/rails/activerecord/lib/active_record/base.rb +2471 -0
  1075. data/vendor/rails/activerecord/lib/active_record/calculations.rb +267 -0
  1076. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +341 -0
  1077. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +308 -0
  1078. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +171 -0
  1079. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +87 -0
  1080. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +69 -0
  1081. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +472 -0
  1082. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +306 -0
  1083. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +172 -0
  1084. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +496 -0
  1085. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +847 -0
  1086. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  1087. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +391 -0
  1088. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +1034 -0
  1089. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +144 -0
  1090. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  1091. data/vendor/rails/activerecord/lib/active_record/migration.rb +417 -0
  1092. data/vendor/rails/activerecord/lib/active_record/observer.rb +181 -0
  1093. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +21 -0
  1094. data/vendor/rails/activerecord/lib/active_record/reflection.rb +219 -0
  1095. data/vendor/rails/activerecord/lib/active_record/schema.rb +58 -0
  1096. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +171 -0
  1097. data/vendor/rails/activerecord/lib/active_record/serialization.rb +98 -0
  1098. data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +71 -0
  1099. data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +315 -0
  1100. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +41 -0
  1101. data/vendor/rails/activerecord/lib/active_record/transactions.rb +132 -0
  1102. data/vendor/rails/activerecord/lib/active_record/validations.rb +1025 -0
  1103. data/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +362 -0
  1104. data/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +1214 -0
  1105. data/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  1106. data/vendor/rails/activerecord/lib/activerecord.rb +1 -0
  1107. data/vendor/rails/activerecord/test/aaa_create_tables_test.rb +72 -0
  1108. data/vendor/rails/activerecord/test/abstract_unit.rb +84 -0
  1109. data/vendor/rails/activerecord/test/active_schema_test_mysql.rb +43 -0
  1110. data/vendor/rails/activerecord/test/adapter_test.rb +105 -0
  1111. data/vendor/rails/activerecord/test/adapter_test_sqlserver.rb +95 -0
  1112. data/vendor/rails/activerecord/test/aggregations_test.rb +128 -0
  1113. data/vendor/rails/activerecord/test/all.sh +8 -0
  1114. data/vendor/rails/activerecord/test/ar_schema_test.rb +33 -0
  1115. data/vendor/rails/activerecord/test/association_inheritance_reload.rb +14 -0
  1116. data/vendor/rails/activerecord/test/associations/callbacks_test.rb +147 -0
  1117. data/vendor/rails/activerecord/test/associations/cascaded_eager_loading_test.rb +110 -0
  1118. data/vendor/rails/activerecord/test/associations/eager_singularization_test.rb +145 -0
  1119. data/vendor/rails/activerecord/test/associations/eager_test.rb +442 -0
  1120. data/vendor/rails/activerecord/test/associations/extension_test.rb +47 -0
  1121. data/vendor/rails/activerecord/test/associations/inner_join_association_test.rb +88 -0
  1122. data/vendor/rails/activerecord/test/associations/join_model_test.rb +559 -0
  1123. data/vendor/rails/activerecord/test/associations_test.rb +2147 -0
  1124. data/vendor/rails/activerecord/test/attribute_methods_test.rb +146 -0
  1125. data/vendor/rails/activerecord/test/base_test.rb +1745 -0
  1126. data/vendor/rails/activerecord/test/binary_test.rb +32 -0
  1127. data/vendor/rails/activerecord/test/calculations_test.rb +251 -0
  1128. data/vendor/rails/activerecord/test/callbacks_test.rb +400 -0
  1129. data/vendor/rails/activerecord/test/class_inheritable_attributes_test.rb +32 -0
  1130. data/vendor/rails/activerecord/test/column_alias_test.rb +17 -0
  1131. data/vendor/rails/activerecord/test/connection_test_firebird.rb +8 -0
  1132. data/vendor/rails/activerecord/test/connection_test_mysql.rb +30 -0
  1133. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  1134. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  1135. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  1136. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +27 -0
  1137. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  1138. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  1139. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +23 -0
  1140. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +25 -0
  1141. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +25 -0
  1142. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  1143. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  1144. data/vendor/rails/activerecord/test/copy_table_test_sqlite.rb +69 -0
  1145. data/vendor/rails/activerecord/test/datatype_test_postgresql.rb +203 -0
  1146. data/vendor/rails/activerecord/test/date_time_test.rb +37 -0
  1147. data/vendor/rails/activerecord/test/default_test_firebird.rb +16 -0
  1148. data/vendor/rails/activerecord/test/defaults_test.rb +67 -0
  1149. data/vendor/rails/activerecord/test/deprecated_finder_test.rb +30 -0
  1150. data/vendor/rails/activerecord/test/finder_test.rb +650 -0
  1151. data/vendor/rails/activerecord/test/fixtures/accounts.yml +28 -0
  1152. data/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  1153. data/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  1154. data/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  1155. data/vendor/rails/activerecord/test/fixtures/author.rb +109 -0
  1156. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  1157. data/vendor/rails/activerecord/test/fixtures/authors.yml +7 -0
  1158. data/vendor/rails/activerecord/test/fixtures/auto_id.rb +4 -0
  1159. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_numeric_first_char +1 -0
  1160. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_spaces +1 -0
  1161. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/blank_line +3 -0
  1162. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/duplicate_attributes +3 -0
  1163. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/missing_value +1 -0
  1164. data/vendor/rails/activerecord/test/fixtures/binaries.yml +132 -0
  1165. data/vendor/rails/activerecord/test/fixtures/binary.rb +2 -0
  1166. data/vendor/rails/activerecord/test/fixtures/book.rb +4 -0
  1167. data/vendor/rails/activerecord/test/fixtures/books.yml +7 -0
  1168. data/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  1169. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  1170. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  1171. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  1172. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  1173. data/vendor/rails/activerecord/test/fixtures/categorization.rb +5 -0
  1174. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  1175. data/vendor/rails/activerecord/test/fixtures/category.rb +26 -0
  1176. data/vendor/rails/activerecord/test/fixtures/citation.rb +6 -0
  1177. data/vendor/rails/activerecord/test/fixtures/column_name.rb +3 -0
  1178. data/vendor/rails/activerecord/test/fixtures/comment.rb +23 -0
  1179. data/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  1180. data/vendor/rails/activerecord/test/fixtures/companies.yml +55 -0
  1181. data/vendor/rails/activerecord/test/fixtures/company.rb +114 -0
  1182. data/vendor/rails/activerecord/test/fixtures/company_in_module.rb +59 -0
  1183. data/vendor/rails/activerecord/test/fixtures/computer.rb +4 -0
  1184. data/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  1185. data/vendor/rails/activerecord/test/fixtures/contact.rb +16 -0
  1186. data/vendor/rails/activerecord/test/fixtures/course.rb +3 -0
  1187. data/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  1188. data/vendor/rails/activerecord/test/fixtures/customer.rb +55 -0
  1189. data/vendor/rails/activerecord/test/fixtures/customers.yml +17 -0
  1190. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.drop.sql +33 -0
  1191. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.sql +235 -0
  1192. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.drop.sql +2 -0
  1193. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.sql +5 -0
  1194. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.drop.sql +65 -0
  1195. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.sql +310 -0
  1196. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.drop.sql +2 -0
  1197. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.sql +6 -0
  1198. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.drop.sql +33 -0
  1199. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.sql +273 -0
  1200. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.drop.sql +1 -0
  1201. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.sql +4 -0
  1202. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.drop.sql +2 -0
  1203. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.sql +318 -0
  1204. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.drop.sql +2 -0
  1205. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.sql +7 -0
  1206. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.drop.sql +67 -0
  1207. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.sql +330 -0
  1208. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.drop.sql +2 -0
  1209. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.sql +6 -0
  1210. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.drop.sql +44 -0
  1211. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.sql +292 -0
  1212. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.drop.sql +2 -0
  1213. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.sql +4 -0
  1214. data/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb +354 -0
  1215. data/vendor/rails/activerecord/test/fixtures/db_definitions/schema2.rb +11 -0
  1216. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.drop.sql +33 -0
  1217. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.sql +219 -0
  1218. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.drop.sql +2 -0
  1219. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.sql +5 -0
  1220. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.drop.sql +35 -0
  1221. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.sql +222 -0
  1222. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.drop.sql +4 -0
  1223. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.sql +5 -0
  1224. data/vendor/rails/activerecord/test/fixtures/default.rb +2 -0
  1225. data/vendor/rails/activerecord/test/fixtures/developer.rb +72 -0
  1226. data/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  1227. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  1228. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_action_controller +3 -0
  1229. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_active_record +3 -0
  1230. data/vendor/rails/activerecord/test/fixtures/developers_projects/jamis_active_record +2 -0
  1231. data/vendor/rails/activerecord/test/fixtures/edge.rb +5 -0
  1232. data/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  1233. data/vendor/rails/activerecord/test/fixtures/entrant.rb +3 -0
  1234. data/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  1235. data/vendor/rails/activerecord/test/fixtures/example.log +1 -0
  1236. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  1237. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  1238. data/vendor/rails/activerecord/test/fixtures/flowers.jpg +0 -0
  1239. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  1240. data/vendor/rails/activerecord/test/fixtures/item.rb +7 -0
  1241. data/vendor/rails/activerecord/test/fixtures/items.yml +4 -0
  1242. data/vendor/rails/activerecord/test/fixtures/joke.rb +3 -0
  1243. data/vendor/rails/activerecord/test/fixtures/keyboard.rb +3 -0
  1244. data/vendor/rails/activerecord/test/fixtures/legacy_thing.rb +3 -0
  1245. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  1246. data/vendor/rails/activerecord/test/fixtures/matey.rb +4 -0
  1247. data/vendor/rails/activerecord/test/fixtures/mateys.yml +4 -0
  1248. data/vendor/rails/activerecord/test/fixtures/migrations/1_people_have_last_names.rb +9 -0
  1249. data/vendor/rails/activerecord/test/fixtures/migrations/2_we_need_reminders.rb +12 -0
  1250. data/vendor/rails/activerecord/test/fixtures/migrations/3_innocent_jointable.rb +12 -0
  1251. data/vendor/rails/activerecord/test/fixtures/migrations_with_decimal/1_give_me_big_numbers.rb +15 -0
  1252. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/1_people_have_last_names.rb +9 -0
  1253. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/2_we_need_reminders.rb +12 -0
  1254. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_foo.rb +7 -0
  1255. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_innocent_jointable.rb +12 -0
  1256. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1000_people_have_middle_names.rb +9 -0
  1257. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1_people_have_last_names.rb +9 -0
  1258. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/3_we_need_reminders.rb +12 -0
  1259. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/4_innocent_jointable.rb +12 -0
  1260. data/vendor/rails/activerecord/test/fixtures/minimalistic.rb +2 -0
  1261. data/vendor/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  1262. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkey.rb +3 -0
  1263. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  1264. data/vendor/rails/activerecord/test/fixtures/mixins.yml +29 -0
  1265. data/vendor/rails/activerecord/test/fixtures/movie.rb +5 -0
  1266. data/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  1267. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  1268. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  1269. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  1270. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  1271. data/vendor/rails/activerecord/test/fixtures/order.rb +4 -0
  1272. data/vendor/rails/activerecord/test/fixtures/parrot.rb +13 -0
  1273. data/vendor/rails/activerecord/test/fixtures/parrots.yml +27 -0
  1274. data/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  1275. data/vendor/rails/activerecord/test/fixtures/people.yml +3 -0
  1276. data/vendor/rails/activerecord/test/fixtures/person.rb +4 -0
  1277. data/vendor/rails/activerecord/test/fixtures/pirate.rb +5 -0
  1278. data/vendor/rails/activerecord/test/fixtures/pirates.yml +9 -0
  1279. data/vendor/rails/activerecord/test/fixtures/post.rb +59 -0
  1280. data/vendor/rails/activerecord/test/fixtures/posts.yml +48 -0
  1281. data/vendor/rails/activerecord/test/fixtures/project.rb +28 -0
  1282. data/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  1283. data/vendor/rails/activerecord/test/fixtures/reader.rb +4 -0
  1284. data/vendor/rails/activerecord/test/fixtures/readers.yml +4 -0
  1285. data/vendor/rails/activerecord/test/fixtures/reply.rb +37 -0
  1286. data/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  1287. data/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +11 -0
  1288. data/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  1289. data/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  1290. data/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  1291. data/vendor/rails/activerecord/test/fixtures/ship.rb +3 -0
  1292. data/vendor/rails/activerecord/test/fixtures/ships.yml +5 -0
  1293. data/vendor/rails/activerecord/test/fixtures/subject.rb +4 -0
  1294. data/vendor/rails/activerecord/test/fixtures/subscriber.rb +6 -0
  1295. data/vendor/rails/activerecord/test/fixtures/subscribers/first +2 -0
  1296. data/vendor/rails/activerecord/test/fixtures/subscribers/second +2 -0
  1297. data/vendor/rails/activerecord/test/fixtures/tag.rb +7 -0
  1298. data/vendor/rails/activerecord/test/fixtures/tagging.rb +10 -0
  1299. data/vendor/rails/activerecord/test/fixtures/taggings.yml +25 -0
  1300. data/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  1301. data/vendor/rails/activerecord/test/fixtures/task.rb +3 -0
  1302. data/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  1303. data/vendor/rails/activerecord/test/fixtures/topic.rb +37 -0
  1304. data/vendor/rails/activerecord/test/fixtures/topics.yml +22 -0
  1305. data/vendor/rails/activerecord/test/fixtures/treasure.rb +4 -0
  1306. data/vendor/rails/activerecord/test/fixtures/treasures.yml +10 -0
  1307. data/vendor/rails/activerecord/test/fixtures/vertex.rb +9 -0
  1308. data/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  1309. data/vendor/rails/activerecord/test/fixtures_test.rb +602 -0
  1310. data/vendor/rails/activerecord/test/inheritance_test.rb +211 -0
  1311. data/vendor/rails/activerecord/test/json_serialization_test.rb +180 -0
  1312. data/vendor/rails/activerecord/test/lifecycle_test.rb +137 -0
  1313. data/vendor/rails/activerecord/test/locking_test.rb +282 -0
  1314. data/vendor/rails/activerecord/test/method_scoping_test.rb +416 -0
  1315. data/vendor/rails/activerecord/test/migration_test.rb +933 -0
  1316. data/vendor/rails/activerecord/test/migration_test_firebird.rb +124 -0
  1317. data/vendor/rails/activerecord/test/mixin_test.rb +95 -0
  1318. data/vendor/rails/activerecord/test/modules_test.rb +34 -0
  1319. data/vendor/rails/activerecord/test/multiple_db_test.rb +60 -0
  1320. data/vendor/rails/activerecord/test/pk_test.rb +101 -0
  1321. data/vendor/rails/activerecord/test/query_cache_test.rb +104 -0
  1322. data/vendor/rails/activerecord/test/readonly_test.rb +107 -0
  1323. data/vendor/rails/activerecord/test/reflection_test.rb +175 -0
  1324. data/vendor/rails/activerecord/test/reserved_word_test_mysql.rb +177 -0
  1325. data/vendor/rails/activerecord/test/schema_authorization_test_postgresql.rb +75 -0
  1326. data/vendor/rails/activerecord/test/schema_dumper_test.rb +131 -0
  1327. data/vendor/rails/activerecord/test/schema_test_postgresql.rb +64 -0
  1328. data/vendor/rails/activerecord/test/serialization_test.rb +47 -0
  1329. data/vendor/rails/activerecord/test/synonym_test_oracle.rb +17 -0
  1330. data/vendor/rails/activerecord/test/table_name_test_sqlserver.rb +23 -0
  1331. data/vendor/rails/activerecord/test/threaded_connections_test.rb +48 -0
  1332. data/vendor/rails/activerecord/test/transactions_test.rb +281 -0
  1333. data/vendor/rails/activerecord/test/unconnected_test.rb +32 -0
  1334. data/vendor/rails/activerecord/test/validations_test.rb +1395 -0
  1335. data/vendor/rails/activerecord/test/xml_serialization_test.rb +202 -0
  1336. data/vendor/rails/activeresource/CHANGELOG +223 -0
  1337. data/vendor/rails/activeresource/MIT-LICENSE +20 -0
  1338. data/vendor/rails/activeresource/README +165 -0
  1339. data/vendor/rails/activeresource/Rakefile +134 -0
  1340. data/vendor/rails/activeresource/lib/active_resource.rb +47 -0
  1341. data/vendor/rails/activeresource/lib/active_resource/base.rb +872 -0
  1342. data/vendor/rails/activeresource/lib/active_resource/connection.rb +172 -0
  1343. data/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +105 -0
  1344. data/vendor/rails/activeresource/lib/active_resource/formats.rb +14 -0
  1345. data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +23 -0
  1346. data/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +34 -0
  1347. data/vendor/rails/activeresource/lib/active_resource/http_mock.rb +147 -0
  1348. data/vendor/rails/activeresource/lib/active_resource/validations.rb +288 -0
  1349. data/vendor/rails/activeresource/lib/active_resource/version.rb +9 -0
  1350. data/vendor/rails/activeresource/lib/activeresource.rb +1 -0
  1351. data/vendor/rails/activeresource/test/abstract_unit.rb +10 -0
  1352. data/vendor/rails/activeresource/test/authorization_test.rb +82 -0
  1353. data/vendor/rails/activeresource/test/base/custom_methods_test.rb +96 -0
  1354. data/vendor/rails/activeresource/test/base/equality_test.rb +43 -0
  1355. data/vendor/rails/activeresource/test/base/load_test.rb +111 -0
  1356. data/vendor/rails/activeresource/test/base_errors_test.rb +48 -0
  1357. data/vendor/rails/activeresource/test/base_test.rb +454 -0
  1358. data/vendor/rails/activeresource/test/connection_test.rb +170 -0
  1359. data/vendor/rails/activeresource/test/fixtures/beast.rb +14 -0
  1360. data/vendor/rails/activeresource/test/fixtures/person.rb +3 -0
  1361. data/vendor/rails/activeresource/test/fixtures/street_address.rb +4 -0
  1362. data/vendor/rails/activeresource/test/format_test.rb +42 -0
  1363. data/vendor/rails/activeresource/test/setter_trap.rb +27 -0
  1364. data/vendor/rails/activesupport/CHANGELOG +986 -0
  1365. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1366. data/vendor/rails/activesupport/README +43 -0
  1367. data/vendor/rails/activesupport/Rakefile +84 -0
  1368. data/vendor/rails/activesupport/install.rb +30 -0
  1369. data/vendor/rails/activesupport/lib/active_support.rb +49 -0
  1370. data/vendor/rails/activesupport/lib/active_support/basic_object.rb +5 -0
  1371. data/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +107 -0
  1372. data/vendor/rails/activesupport/lib/active_support/clean_logger.rb +127 -0
  1373. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +4 -0
  1374. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +13 -0
  1375. data/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +28 -0
  1376. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +94 -0
  1377. data/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +19 -0
  1378. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +68 -0
  1379. data/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +12 -0
  1380. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +2 -0
  1381. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +6 -0
  1382. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +50 -0
  1383. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1384. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  1385. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +4 -0
  1386. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +48 -0
  1387. data/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +40 -0
  1388. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1389. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +24 -0
  1390. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +10 -0
  1391. data/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +13 -0
  1392. data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +188 -0
  1393. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +98 -0
  1394. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +10 -0
  1395. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +77 -0
  1396. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +74 -0
  1397. data/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +37 -0
  1398. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +63 -0
  1399. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +33 -0
  1400. data/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +21 -0
  1401. data/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +5 -0
  1402. data/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +24 -0
  1403. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +13 -0
  1404. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +242 -0
  1405. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +19 -0
  1406. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +24 -0
  1407. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +102 -0
  1408. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +54 -0
  1409. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +25 -0
  1410. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +28 -0
  1411. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +7 -0
  1412. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +24 -0
  1413. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +21 -0
  1414. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1415. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1416. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +15 -0
  1417. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +13 -0
  1418. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +51 -0
  1419. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1420. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1421. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +16 -0
  1422. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +8 -0
  1423. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +70 -0
  1424. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  1425. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +31 -0
  1426. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +48 -0
  1427. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +62 -0
  1428. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +11 -0
  1429. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +35 -0
  1430. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +13 -0
  1431. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +17 -0
  1432. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +7 -0
  1433. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1434. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +91 -0
  1435. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +4 -0
  1436. data/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +14 -0
  1437. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +58 -0
  1438. data/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +22 -0
  1439. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +59 -0
  1440. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1441. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1442. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1443. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +11 -0
  1444. data/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +22 -0
  1445. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +23 -0
  1446. data/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +22 -0
  1447. data/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +12 -0
  1448. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +23 -0
  1449. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +58 -0
  1450. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +28 -0
  1451. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +153 -0
  1452. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +17 -0
  1453. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +27 -0
  1454. data/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +42 -0
  1455. data/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +11 -0
  1456. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +14 -0
  1457. data/vendor/rails/activesupport/lib/active_support/core_ext/test.rb +1 -0
  1458. data/vendor/rails/activesupport/lib/active_support/core_ext/test/unit/assertions.rb +62 -0
  1459. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +19 -0
  1460. data/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +13 -0
  1461. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +224 -0
  1462. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +94 -0
  1463. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +540 -0
  1464. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +204 -0
  1465. data/vendor/rails/activesupport/lib/active_support/duration.rb +96 -0
  1466. data/vendor/rails/activesupport/lib/active_support/inflections.rb +53 -0
  1467. data/vendor/rails/activesupport/lib/active_support/inflector.rb +282 -0
  1468. data/vendor/rails/activesupport/lib/active_support/json.rb +31 -0
  1469. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +60 -0
  1470. data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +5 -0
  1471. data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +5 -0
  1472. data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +12 -0
  1473. data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +5 -0
  1474. data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +50 -0
  1475. data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +5 -0
  1476. data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +5 -0
  1477. data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -0
  1478. data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +5 -0
  1479. data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +30 -0
  1480. data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +5 -0
  1481. data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +5 -0
  1482. data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +5 -0
  1483. data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +38 -0
  1484. data/vendor/rails/activesupport/lib/active_support/json/variable.rb +10 -0
  1485. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +9 -0
  1486. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +141 -0
  1487. data/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +149 -0
  1488. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +9 -0
  1489. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +564 -0
  1490. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +43 -0
  1491. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  1492. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +49 -0
  1493. data/vendor/rails/activesupport/lib/active_support/test_case.rb +5 -0
  1494. data/vendor/rails/activesupport/lib/active_support/testing.rb +1 -0
  1495. data/vendor/rails/activesupport/lib/active_support/testing/default.rb +12 -0
  1496. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +181 -0
  1497. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1498. data/vendor/rails/activesupport/lib/active_support/vendor.rb +14 -0
  1499. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  1500. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  1501. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  1502. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  1503. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  1504. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  1505. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  1506. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  1507. data/vendor/rails/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb +1021 -0
  1508. data/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  1509. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +38 -0
  1510. data/vendor/rails/activesupport/lib/activesupport.rb +1 -0
  1511. data/vendor/rails/activesupport/test/abstract_unit.rb +20 -0
  1512. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  1513. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  1514. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  1515. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  1516. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  1517. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  1518. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  1519. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  1520. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  1521. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  1522. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  1523. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  1524. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  1525. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  1526. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  1527. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  1528. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1529. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1530. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1531. data/vendor/rails/activesupport/test/buffered_logger_test.rb +107 -0
  1532. data/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  1533. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +250 -0
  1534. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +19 -0
  1535. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1536. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1537. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  1538. data/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +105 -0
  1539. data/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  1540. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +196 -0
  1541. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +230 -0
  1542. data/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  1543. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +21 -0
  1544. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +61 -0
  1545. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +64 -0
  1546. data/vendor/rails/activesupport/test/core_ext/file_test.rb +29 -0
  1547. data/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  1548. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +743 -0
  1549. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1550. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1551. data/vendor/rails/activesupport/test/core_ext/load_error_tests.rb +16 -0
  1552. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  1553. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1554. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1555. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  1556. data/vendor/rails/activesupport/test/core_ext/module_test.rb +293 -0
  1557. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +24 -0
  1558. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +147 -0
  1559. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +242 -0
  1560. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1561. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1562. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  1563. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +180 -0
  1564. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1565. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +420 -0
  1566. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1567. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1568. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1569. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1570. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1571. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1572. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1573. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1574. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1575. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1576. data/vendor/rails/activesupport/test/dependencies_test.rb +751 -0
  1577. data/vendor/rails/activesupport/test/deprecation_test.rb +151 -0
  1578. data/vendor/rails/activesupport/test/inflector_test.rb +248 -0
  1579. data/vendor/rails/activesupport/test/inflector_test_cases.rb +208 -0
  1580. data/vendor/rails/activesupport/test/json/decoding_test.rb +41 -0
  1581. data/vendor/rails/activesupport/test/json/encoding_test.rb +111 -0
  1582. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +173 -0
  1583. data/vendor/rails/activesupport/test/multibyte_conformance.rb +141 -0
  1584. data/vendor/rails/activesupport/test/multibyte_handler_test.rb +367 -0
  1585. data/vendor/rails/activesupport/test/option_merger_test.rb +50 -0
  1586. data/vendor/rails/activesupport/test/ordered_options_test.rb +84 -0
  1587. data/vendor/rails/activesupport/test/test_test.rb +73 -0
  1588. data/vendor/rails/activesupport/test/time_zone_test.rb +98 -0
  1589. data/vendor/rails/activesupport/test/whiny_nil_test.rb +38 -0
  1590. data/vendor/rails/railties/CHANGELOG +1899 -0
  1591. data/vendor/rails/railties/MIT-LICENSE +20 -0
  1592. data/vendor/rails/railties/README +203 -0
  1593. data/vendor/rails/railties/Rakefile +358 -0
  1594. data/vendor/rails/railties/bin/about +3 -0
  1595. data/vendor/rails/railties/bin/console +3 -0
  1596. data/vendor/rails/railties/bin/destroy +3 -0
  1597. data/vendor/rails/railties/bin/generate +3 -0
  1598. data/{starter-app/vendor/plugins/spree/script → vendor/rails/railties/bin}/performance/benchmarker +0 -0
  1599. data/{starter-app/vendor/plugins/spree/script → vendor/rails/railties/bin}/performance/profiler +0 -0
  1600. data/vendor/rails/railties/bin/performance/request +3 -0
  1601. data/vendor/rails/railties/bin/plugin +3 -0
  1602. data/{starter-app/vendor/plugins/spree/script → vendor/rails/railties/bin}/process/inspector +0 -0
  1603. data/{starter-app/vendor/plugins/spree/script → vendor/rails/railties/bin}/process/reaper +0 -0
  1604. data/{starter-app/vendor/plugins/spree/script → vendor/rails/railties/bin}/process/spawner +0 -0
  1605. data/vendor/rails/railties/bin/rails +19 -0
  1606. data/vendor/rails/railties/bin/runner +3 -0
  1607. data/vendor/rails/railties/bin/server +3 -0
  1608. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +123 -0
  1609. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  1610. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  1611. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  1612. data/vendor/rails/railties/configs/apache.conf +40 -0
  1613. data/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  1614. data/vendor/rails/railties/configs/databases/mysql.yml +54 -0
  1615. data/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  1616. data/vendor/rails/railties/configs/databases/postgresql.yml +48 -0
  1617. data/vendor/rails/railties/configs/databases/sqlite2.yml +16 -0
  1618. data/vendor/rails/railties/configs/databases/sqlite3.yml +19 -0
  1619. data/vendor/rails/railties/configs/empty.log +0 -0
  1620. data/vendor/rails/railties/configs/initializers/inflections.rb +10 -0
  1621. data/vendor/rails/railties/configs/initializers/mime_types.rb +5 -0
  1622. data/vendor/rails/railties/configs/lighttpd.conf +54 -0
  1623. data/vendor/rails/railties/configs/routes.rb +35 -0
  1624. data/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  1625. data/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  1626. data/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  1627. data/vendor/rails/railties/doc/README_FOR_APP +2 -0
  1628. data/vendor/rails/railties/environments/boot.rb +109 -0
  1629. data/vendor/rails/railties/environments/development.rb +18 -0
  1630. data/vendor/rails/railties/environments/environment.rb +59 -0
  1631. data/vendor/rails/railties/environments/production.rb +19 -0
  1632. data/vendor/rails/railties/environments/test.rb +22 -0
  1633. data/{starter-app/vendor/plugins/paginating_find/test_app/Rakefile → vendor/rails/railties/fresh_rakefile} +0 -0
  1634. data/vendor/rails/railties/helpers/application.rb +10 -0
  1635. data/{starter-app/app → vendor/rails/railties}/helpers/application_helper.rb +0 -0
  1636. data/vendor/rails/railties/helpers/test_helper.rb +38 -0
  1637. data/vendor/rails/railties/html/404.html +30 -0
  1638. data/vendor/rails/railties/html/422.html +30 -0
  1639. data/vendor/rails/railties/html/500.html +30 -0
  1640. data/vendor/rails/railties/html/favicon.ico +0 -0
  1641. data/vendor/rails/railties/html/images/rails.png +0 -0
  1642. data/vendor/rails/railties/html/index.html +277 -0
  1643. data/vendor/rails/railties/html/javascripts/application.js +2 -0
  1644. data/vendor/rails/railties/html/javascripts/controls.js +963 -0
  1645. data/vendor/rails/railties/html/javascripts/dragdrop.js +972 -0
  1646. data/vendor/rails/railties/html/javascripts/effects.js +1120 -0
  1647. data/vendor/rails/railties/html/javascripts/prototype.js +4225 -0
  1648. data/vendor/rails/railties/html/robots.txt +5 -0
  1649. data/vendor/rails/railties/lib/code_statistics.rb +107 -0
  1650. data/vendor/rails/railties/lib/commands.rb +17 -0
  1651. data/vendor/rails/railties/lib/commands/about.rb +2 -0
  1652. data/vendor/rails/railties/lib/commands/console.rb +32 -0
  1653. data/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  1654. data/vendor/rails/railties/lib/commands/generate.rb +6 -0
  1655. data/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  1656. data/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  1657. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  1658. data/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  1659. data/vendor/rails/railties/lib/commands/performance/request.rb +6 -0
  1660. data/vendor/rails/railties/lib/commands/plugin.rb +923 -0
  1661. data/vendor/rails/railties/lib/commands/process/inspector.rb +68 -0
  1662. data/vendor/rails/railties/lib/commands/process/reaper.rb +149 -0
  1663. data/vendor/rails/railties/lib/commands/process/spawner.rb +219 -0
  1664. data/vendor/rails/railties/lib/commands/process/spinner.rb +57 -0
  1665. data/vendor/rails/railties/lib/commands/runner.rb +48 -0
  1666. data/vendor/rails/railties/lib/commands/server.rb +39 -0
  1667. data/vendor/rails/railties/lib/commands/servers/base.rb +31 -0
  1668. data/vendor/rails/railties/lib/commands/servers/lighttpd.rb +94 -0
  1669. data/vendor/rails/railties/lib/commands/servers/mongrel.rb +69 -0
  1670. data/vendor/rails/railties/lib/commands/servers/webrick.rb +66 -0
  1671. data/vendor/rails/railties/lib/commands/update.rb +4 -0
  1672. data/vendor/rails/railties/lib/console_app.rb +30 -0
  1673. data/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  1674. data/vendor/rails/railties/lib/console_with_helpers.rb +26 -0
  1675. data/vendor/rails/railties/lib/dispatcher.rb +24 -0
  1676. data/vendor/rails/railties/lib/fcgi_handler.rb +223 -0
  1677. data/vendor/rails/railties/lib/initializer.rb +682 -0
  1678. data/vendor/rails/railties/lib/rails/plugin.rb +84 -0
  1679. data/vendor/rails/railties/lib/rails/plugin/loader.rb +150 -0
  1680. data/vendor/rails/railties/lib/rails/plugin/locator.rb +78 -0
  1681. data/vendor/rails/railties/lib/rails/version.rb +9 -0
  1682. data/vendor/rails/railties/lib/rails_generator.rb +43 -0
  1683. data/vendor/rails/railties/lib/rails_generator/base.rb +263 -0
  1684. data/vendor/rails/railties/lib/rails_generator/commands.rb +591 -0
  1685. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +42 -0
  1686. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +9 -0
  1687. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +179 -0
  1688. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +29 -0
  1689. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
  1690. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +10 -0
  1691. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +8 -0
  1692. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  1693. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +2 -0
  1694. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +8 -0
  1695. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  1696. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  1697. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +16 -0
  1698. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +34 -0
  1699. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +3 -0
  1700. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  1701. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +13 -0
  1702. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +21 -0
  1703. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +3 -0
  1704. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  1705. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +29 -0
  1706. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +20 -0
  1707. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +11 -0
  1708. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +27 -0
  1709. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +45 -0
  1710. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +19 -0
  1711. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +16 -0
  1712. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
  1713. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +8 -0
  1714. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +13 -0
  1715. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  1716. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  1717. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +8 -0
  1718. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +25 -0
  1719. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +39 -0
  1720. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +20 -0
  1721. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +13 -0
  1722. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
  1723. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  1724. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  1725. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  1726. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  1727. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  1728. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  1729. data/{starter-app/vendor/plugins/spree → vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates}/uninstall.rb +0 -0
  1730. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  1731. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +23 -0
  1732. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +74 -0
  1733. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  1734. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +8 -0
  1735. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  1736. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +25 -0
  1737. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +92 -0
  1738. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +85 -0
  1739. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +45 -0
  1740. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  1741. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +17 -0
  1742. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +74 -0
  1743. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +19 -0
  1744. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +24 -0
  1745. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +18 -0
  1746. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +10 -0
  1747. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +10 -0
  1748. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  1749. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  1750. data/vendor/rails/railties/lib/rails_generator/lookup.rb +244 -0
  1751. data/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  1752. data/vendor/rails/railties/lib/rails_generator/options.rb +143 -0
  1753. data/vendor/rails/railties/lib/rails_generator/scripts.rb +86 -0
  1754. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +30 -0
  1755. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  1756. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  1757. data/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +160 -0
  1758. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  1759. data/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  1760. data/vendor/rails/railties/lib/railties_path.rb +1 -0
  1761. data/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  1762. data/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  1763. data/vendor/rails/railties/lib/source_annotation_extractor.rb +62 -0
  1764. data/vendor/rails/railties/lib/tasks/annotations.rake +23 -0
  1765. data/vendor/rails/railties/lib/tasks/databases.rake +363 -0
  1766. data/vendor/rails/railties/lib/tasks/documentation.rake +80 -0
  1767. data/vendor/rails/railties/lib/tasks/framework.rake +118 -0
  1768. data/vendor/rails/railties/lib/tasks/log.rake +9 -0
  1769. data/vendor/rails/railties/lib/tasks/misc.rake +10 -0
  1770. data/vendor/rails/railties/lib/tasks/rails.rb +8 -0
  1771. data/vendor/rails/railties/lib/tasks/routes.rake +17 -0
  1772. data/vendor/rails/railties/lib/tasks/statistics.rake +18 -0
  1773. data/vendor/rails/railties/lib/tasks/testing.rake +118 -0
  1774. data/vendor/rails/railties/lib/tasks/tmp.rake +37 -0
  1775. data/vendor/rails/railties/lib/test_help.rb +20 -0
  1776. data/vendor/rails/railties/lib/webrick_server.rb +165 -0
  1777. data/vendor/rails/railties/test/abstract_unit.rb +24 -0
  1778. data/vendor/rails/railties/test/boot_test.rb +179 -0
  1779. data/vendor/rails/railties/test/console_app_test.rb +29 -0
  1780. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +265 -0
  1781. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1782. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1783. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1784. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  1785. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1786. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1787. data/vendor/rails/railties/test/generators/generator_test_helper.rb +195 -0
  1788. data/vendor/rails/railties/test/generators/rails_model_generator_test.rb +109 -0
  1789. data/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +106 -0
  1790. data/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +185 -0
  1791. data/vendor/rails/railties/test/initializer_test.rb +218 -0
  1792. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1793. data/vendor/rails/railties/test/plugin_loader_test.rb +140 -0
  1794. data/vendor/rails/railties/test/plugin_locator_test.rb +69 -0
  1795. data/vendor/rails/railties/test/plugin_test.rb +141 -0
  1796. data/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  1797. data/vendor/rails/railties/test/rails_generator_test.rb +137 -0
  1798. data/vendor/rails/railties/test/rails_info_controller_test.rb +48 -0
  1799. data/vendor/rails/railties/test/rails_info_test.rb +105 -0
  1800. data/vendor/rails/railties/test/secret_key_generation_test.rb +35 -0
  1801. metadata +2304 -693
  1802. data/History.txt +0 -40
  1803. data/License.txt +0 -26
  1804. data/Manifest.txt +0 -671
  1805. data/config/hoe.rb +0 -80
  1806. data/config/requirements.rb +0 -15
  1807. data/lib/spree/version.rb +0 -9
  1808. data/script/txt2html +0 -74
  1809. data/setup.rb +0 -1585
  1810. data/starter-app/README +0 -182
  1811. data/starter-app/app/controllers/application.rb +0 -14
  1812. data/starter-app/app/models/tag.rb +0 -37
  1813. data/starter-app/app/models/tagging.rb +0 -16
  1814. data/starter-app/app/views/layouts/application.rhtml +0 -48
  1815. data/starter-app/config/boot.rb +0 -45
  1816. data/starter-app/config/environment.rb +0 -140
  1817. data/starter-app/config/environments/development.rb +0 -21
  1818. data/starter-app/config/routes.rb +0 -28
  1819. data/starter-app/db/migrate/003_create_tags_and_taggings.rb +0 -28
  1820. data/starter-app/db/migrate/004_spree_to_version_21.rb +0 -9
  1821. data/starter-app/db/sample/credit_cards.yml +0 -12
  1822. data/starter-app/db/sample/images.yml +0 -252
  1823. data/starter-app/db/sample/line_items.yml +0 -25
  1824. data/starter-app/db/sample/orders.yml +0 -15
  1825. data/starter-app/db/sample/skus.yml +0 -28
  1826. data/starter-app/db/sample/taggings.yml +0 -16
  1827. data/starter-app/db/sample/tags.yml +0 -6
  1828. data/starter-app/db/sample/variants.yml +0 -47
  1829. data/starter-app/doc/README_FOR_APP +0 -2
  1830. data/starter-app/lib/tagging_extensions.rb +0 -104
  1831. data/starter-app/public/index.html +0 -277
  1832. data/starter-app/public/stylesheets/cart/_controller.css +0 -4
  1833. data/starter-app/script/destroy +0 -3
  1834. data/starter-app/script/generate +0 -3
  1835. data/starter-app/spec/models/product_spec.rb +0 -29
  1836. data/starter-app/test/fixtures/users.yml +0 -7
  1837. data/starter-app/test/test_helper.rb +0 -28
  1838. data/starter-app/test/unit/user_test.rb +0 -8
  1839. data/starter-app/vendor/plugins/engines/CHANGELOG +0 -258
  1840. data/starter-app/vendor/plugins/engines/MIT-LICENSE +0 -21
  1841. data/starter-app/vendor/plugins/engines/README +0 -63
  1842. data/starter-app/vendor/plugins/engines/Rakefile +0 -32
  1843. data/starter-app/vendor/plugins/engines/about.yml +0 -7
  1844. data/starter-app/vendor/plugins/engines/boot.rb +0 -18
  1845. data/starter-app/vendor/plugins/engines/generators/plugin_migration/USAGE +0 -45
  1846. data/starter-app/vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb +0 -79
  1847. data/starter-app/vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb +0 -13
  1848. data/starter-app/vendor/plugins/engines/init.rb +0 -2
  1849. data/starter-app/vendor/plugins/engines/lib/engines.rb +0 -169
  1850. data/starter-app/vendor/plugins/engines/lib/engines/assets.rb +0 -38
  1851. data/starter-app/vendor/plugins/engines/lib/engines/plugin.rb +0 -125
  1852. data/starter-app/vendor/plugins/engines/lib/engines/plugin/list.rb +0 -30
  1853. data/starter-app/vendor/plugins/engines/lib/engines/plugin/loader.rb +0 -18
  1854. data/starter-app/vendor/plugins/engines/lib/engines/plugin/locator.rb +0 -11
  1855. data/starter-app/vendor/plugins/engines/lib/engines/plugin/migrator.rb +0 -60
  1856. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb +0 -85
  1857. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb +0 -24
  1858. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb +0 -119
  1859. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb +0 -145
  1860. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb +0 -161
  1861. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/rails.rb +0 -11
  1862. data/starter-app/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb +0 -84
  1863. data/starter-app/vendor/plugins/engines/lib/engines/testing.rb +0 -87
  1864. data/starter-app/vendor/plugins/engines/tasks/engines.rake +0 -176
  1865. data/starter-app/vendor/plugins/paginating_find/test_app/db/schema.rb +0 -16
  1866. data/starter-app/vendor/plugins/spree/.rakeTasks +0 -7
  1867. data/starter-app/vendor/plugins/spree/CHANGELOG +0 -1
  1868. data/starter-app/vendor/plugins/spree/README +0 -1
  1869. data/starter-app/vendor/plugins/spree/Rakefile +0 -10
  1870. data/starter-app/vendor/plugins/spree/VERSION +0 -1
  1871. data/starter-app/vendor/plugins/spree/app/controllers/admin/orders_controller.rb +0 -247
  1872. data/starter-app/vendor/plugins/spree/app/controllers/admin/products_controller.rb +0 -207
  1873. data/starter-app/vendor/plugins/spree/app/controllers/cart_controller.rb +0 -39
  1874. data/starter-app/vendor/plugins/spree/app/controllers/checkout_controller.rb +0 -184
  1875. data/starter-app/vendor/plugins/spree/app/controllers/spree/base_controller.rb +0 -47
  1876. data/starter-app/vendor/plugins/spree/app/helpers/checkout_helper.rb +0 -17
  1877. data/starter-app/vendor/plugins/spree/app/helpers/spree/base_helper.rb +0 -101
  1878. data/starter-app/vendor/plugins/spree/app/models/cart_item.rb +0 -26
  1879. data/starter-app/vendor/plugins/spree/app/models/image.rb +0 -12
  1880. data/starter-app/vendor/plugins/spree/app/models/order.rb +0 -87
  1881. data/starter-app/vendor/plugins/spree/app/models/product.rb +0 -58
  1882. data/starter-app/vendor/plugins/spree/app/models/sku.rb +0 -7
  1883. data/starter-app/vendor/plugins/spree/app/models/variant.rb +0 -5
  1884. data/starter-app/vendor/plugins/spree/app/views/admin/products/_form.rhtml +0 -65
  1885. data/starter-app/vendor/plugins/spree/app/views/admin/products/_option_types.rhtml +0 -42
  1886. data/starter-app/vendor/plugins/spree/app/views/admin/products/_variants.rhtml +0 -43
  1887. data/starter-app/vendor/plugins/spree/app/views/admin/products/index.rhtml +0 -65
  1888. data/starter-app/vendor/plugins/spree/app/views/cart/index.rhtml +0 -49
  1889. data/starter-app/vendor/plugins/spree/app/views/layouts/admin.rhtml +0 -69
  1890. data/starter-app/vendor/plugins/spree/app/views/layouts/products.rhtml +0 -20
  1891. data/starter-app/vendor/plugins/spree/app/views/order_mailer/cancel.rhtml +0 -15
  1892. data/starter-app/vendor/plugins/spree/app/views/order_mailer/confirm.rhtml +0 -18
  1893. data/starter-app/vendor/plugins/spree/app/views/store/list.rhtml +0 -15
  1894. data/starter-app/vendor/plugins/spree/app/views/store/show.rhtml +0 -70
  1895. data/starter-app/vendor/plugins/spree/assets/.htaccess +0 -40
  1896. data/starter-app/vendor/plugins/spree/assets/stylesheets/spree-admin.css +0 -348
  1897. data/starter-app/vendor/plugins/spree/db/migrate/008_create_orders.rb +0 -24
  1898. data/starter-app/vendor/plugins/spree/db/migrate/009_create_products.rb +0 -20
  1899. data/starter-app/vendor/plugins/spree/db/migrate/011_create_variants.rb +0 -11
  1900. data/starter-app/vendor/plugins/spree/db/migrate/013_create_skus.rb +0 -13
  1901. data/starter-app/vendor/plugins/spree/db/migrate/019_create_images.rb +0 -19
  1902. data/starter-app/vendor/plugins/spree/init.rb +0 -11
  1903. data/starter-app/vendor/plugins/spree/install.rb +0 -3
  1904. data/starter-app/vendor/plugins/spree/lib/constants/enumerable_constants.rb +0 -207
  1905. data/starter-app/vendor/plugins/spree/lib/tasks/spree_bootstrap.rake +0 -24
  1906. data/starter-app/vendor/plugins/spree/lib/tax/sales_tax.rb +0 -26
  1907. data/starter-app/vendor/plugins/spree/routes.rb +0 -3
  1908. data/starter-app/vendor/plugins/spree/script/about +0 -3
  1909. data/starter-app/vendor/plugins/spree/script/breakpointer +0 -3
  1910. data/starter-app/vendor/plugins/spree/script/console +0 -3
  1911. data/starter-app/vendor/plugins/spree/script/destroy +0 -3
  1912. data/starter-app/vendor/plugins/spree/script/generate +0 -3
  1913. data/starter-app/vendor/plugins/spree/script/plugin +0 -3
  1914. data/starter-app/vendor/plugins/spree/script/runner +0 -3
  1915. data/starter-app/vendor/plugins/spree/script/server +0 -3
  1916. data/starter-app/vendor/plugins/spree/test/fixtures/addresses.yml +0 -29
  1917. data/starter-app/vendor/plugins/spree/test/fixtures/categories.yml +0 -40
  1918. data/starter-app/vendor/plugins/spree/test/fixtures/line_items.yml +0 -32
  1919. data/starter-app/vendor/plugins/spree/test/fixtures/orders.yml +0 -17
  1920. data/starter-app/vendor/plugins/spree/test/fixtures/products.yml +0 -63
  1921. data/starter-app/vendor/plugins/spree/test/fixtures/products_tags.yml +0 -10
  1922. data/starter-app/vendor/plugins/spree/test/fixtures/roles.yml +0 -6
  1923. data/starter-app/vendor/plugins/spree/test/fixtures/roles_users.yml +0 -3
  1924. data/starter-app/vendor/plugins/spree/test/fixtures/skus.yml +0 -5
  1925. data/starter-app/vendor/plugins/spree/test/fixtures/tags.yml +0 -7
  1926. data/starter-app/vendor/plugins/spree/test/fixtures/tax_treatments.yml +0 -7
  1927. data/starter-app/vendor/plugins/spree/test/fixtures/txns.yml +0 -13
  1928. data/starter-app/vendor/plugins/spree/test/fixtures/users.yml +0 -40
  1929. data/starter-app/vendor/plugins/spree/test/fixtures/variations.yml +0 -16
  1930. data/starter-app/vendor/plugins/spree/test/functional/account_controller_test.rb +0 -129
  1931. data/starter-app/vendor/plugins/spree/test/functional/admin/base_controller_test.rb +0 -18
  1932. data/starter-app/vendor/plugins/spree/test/functional/admin/option_groups_controller_test.rb +0 -18
  1933. data/starter-app/vendor/plugins/spree/test/functional/admin/option_values_controller_test.rb +0 -18
  1934. data/starter-app/vendor/plugins/spree/test/functional/admin/orders_controller_test.rb +0 -18
  1935. data/starter-app/vendor/plugins/spree/test/functional/admin/overview_controller_test.rb +0 -18
  1936. data/starter-app/vendor/plugins/spree/test/functional/admin/products_controller_test.rb +0 -125
  1937. data/starter-app/vendor/plugins/spree/test/functional/admin/users_controller_test.rb +0 -58
  1938. data/starter-app/vendor/plugins/spree/test/functional/application_controller_test.rb +0 -30
  1939. data/starter-app/vendor/plugins/spree/test/functional/cart_controller_test.rb +0 -76
  1940. data/starter-app/vendor/plugins/spree/test/functional/checkout_controller_test.rb +0 -20
  1941. data/starter-app/vendor/plugins/spree/test/integration/authentication_test.rb +0 -53
  1942. data/starter-app/vendor/plugins/spree/test/integration/product_admin_test.rb +0 -135
  1943. data/starter-app/vendor/plugins/spree/test/integration/user_stories_test.rb +0 -59
  1944. data/starter-app/vendor/plugins/spree/test/test_helper.rb +0 -45
  1945. data/starter-app/vendor/plugins/spree/test/unit/address_test.rb +0 -10
  1946. data/starter-app/vendor/plugins/spree/test/unit/category_test.rb +0 -52
  1947. data/starter-app/vendor/plugins/spree/test/unit/option_group_test.rb +0 -12
  1948. data/starter-app/vendor/plugins/spree/test/unit/order_test.rb +0 -49
  1949. data/starter-app/vendor/plugins/spree/test/unit/product_test.rb +0 -74
  1950. data/starter-app/vendor/plugins/spree/test/unit/role_test.rb +0 -10
  1951. data/starter-app/vendor/plugins/spree/test/unit/sales_tax_test.rb +0 -46
  1952. data/starter-app/vendor/plugins/spree/test/unit/sku_test.rb +0 -10
  1953. data/starter-app/vendor/plugins/spree/test/unit/tag_test.rb +0 -9
  1954. data/starter-app/vendor/plugins/spree/test/unit/tax_treatment_test.rb +0 -10
  1955. data/starter-app/vendor/plugins/spree/test/unit/txn_test.rb +0 -10
  1956. data/tasks/deployment.rake +0 -34
  1957. data/tasks/environment.rake +0 -7
  1958. data/tasks/website.rake +0 -17
  1959. data/test/test_helper.rb +0 -2
  1960. data/test/test_railscart.rb +0 -11
@@ -0,0 +1,101 @@
1
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
+
3
+ Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at)
4
+
5
+ class ScrollsController < ActionController::Base
6
+ FEEDS = {}
7
+ FEEDS["defaults"] = <<-EOT
8
+ atom_feed do |feed|
9
+ feed.title("My great blog!")
10
+ feed.updated((@scrolls.first.created_at))
11
+
12
+ for scroll in @scrolls
13
+ feed.entry(scroll) do |entry|
14
+ entry.title(scroll.title)
15
+ entry.content(scroll.body, :type => 'html')
16
+
17
+ entry.author do |author|
18
+ author.name("DHH")
19
+ end
20
+ end
21
+ end
22
+ end
23
+ EOT
24
+ FEEDS["entry_options"] = <<-EOT
25
+ atom_feed do |feed|
26
+ feed.title("My great blog!")
27
+ feed.updated((@scrolls.first.created_at))
28
+
29
+ for scroll in @scrolls
30
+ feed.entry(scroll, :url => "/otherstuff/" + scroll.to_param, :updated => Time.utc(2007, 1, scroll.id)) do |entry|
31
+ entry.title(scroll.title)
32
+ entry.content(scroll.body, :type => 'html')
33
+
34
+ entry.author do |author|
35
+ author.name("DHH")
36
+ end
37
+ end
38
+ end
39
+ end
40
+ EOT
41
+
42
+ def index
43
+ @scrolls = [
44
+ Scroll.new(1, "1", "Hello One", "Something <i>COOL!</i>", Time.utc(2007, 12, 12, 15), Time.utc(2007, 12, 12, 15)),
45
+ Scroll.new(2, "2", "Hello Two", "Something Boring", Time.utc(2007, 12, 12, 15)),
46
+ ]
47
+
48
+ render :inline => FEEDS[params[:id]], :type => :builder
49
+ end
50
+ end
51
+
52
+ class AtomFeedTest < Test::Unit::TestCase
53
+ def setup
54
+ @request = ActionController::TestRequest.new
55
+ @response = ActionController::TestResponse.new
56
+ @controller = ScrollsController.new
57
+
58
+ @request.host = "www.nextangle.com"
59
+ end
60
+
61
+ def test_feed_should_use_default_language_if_none_is_given
62
+ with_restful_routing(:scrolls) do
63
+ get :index, :id => "defaults"
64
+ assert_match %r{xml:lang="en-US"}, @response.body
65
+ end
66
+ end
67
+
68
+ def test_feed_should_include_two_entries
69
+ with_restful_routing(:scrolls) do
70
+ get :index, :id => "defaults"
71
+ assert_select "entry", 2
72
+ end
73
+ end
74
+
75
+ def test_entry_should_only_use_published_if_created_at_is_present
76
+ with_restful_routing(:scrolls) do
77
+ get :index, :id => "defaults"
78
+ assert_select "published", 1
79
+ end
80
+ end
81
+
82
+ def test_entry_with_prefilled_options_should_use_those_instead_of_querying_the_record
83
+ with_restful_routing(:scrolls) do
84
+ get :index, :id => "entry_options"
85
+
86
+ assert_select "updated", Time.utc(2007, 1, 1).xmlschema
87
+ assert_select "updated", Time.utc(2007, 1, 2).xmlschema
88
+ end
89
+ end
90
+
91
+
92
+ private
93
+ def with_restful_routing(resources)
94
+ with_routing do |set|
95
+ set.draw do |map|
96
+ map.resources(resources)
97
+ end
98
+ yield
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,72 @@
1
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
+ require 'action_view/helpers/benchmark_helper'
3
+
4
+ class BenchmarkHelperTest < Test::Unit::TestCase
5
+ include ActionView::Helpers::BenchmarkHelper
6
+
7
+ class MockLogger
8
+ attr_reader :logged
9
+
10
+ def initialize
11
+ @logged = []
12
+ end
13
+
14
+ def method_missing(method, *args)
15
+ @logged << [method, args]
16
+ end
17
+ end
18
+
19
+ def setup
20
+ @logger = MockLogger.new
21
+ end
22
+
23
+ def test_without_logger_or_block
24
+ @logger = nil
25
+ assert_nothing_raised { benchmark }
26
+ end
27
+
28
+ def test_without_block
29
+ assert_raise(LocalJumpError) { benchmark }
30
+ assert @logger.logged.empty?
31
+ end
32
+
33
+ def test_without_logger
34
+ @logger = nil
35
+ i_was_run = false
36
+ benchmark { i_was_run = true }
37
+ assert !i_was_run
38
+ end
39
+
40
+ def test_defaults
41
+ i_was_run = false
42
+ benchmark { i_was_run = true }
43
+ assert i_was_run
44
+ assert 1, @logger.logged.size
45
+ assert_last_logged
46
+ end
47
+
48
+ def test_with_message
49
+ i_was_run = false
50
+ benchmark('test_run') { i_was_run = true }
51
+ assert i_was_run
52
+ assert 1, @logger.logged.size
53
+ assert_last_logged 'test_run'
54
+ end
55
+
56
+ def test_with_message_and_level
57
+ i_was_run = false
58
+ benchmark('debug_run', :debug) { i_was_run = true }
59
+ assert i_was_run
60
+ assert 1, @logger.logged.size
61
+ assert_last_logged 'debug_run', :debug
62
+ end
63
+
64
+ private
65
+ def assert_last_logged(message = 'Benchmarking', level = :info)
66
+ last = @logger.logged.last
67
+ assert 2, last.size
68
+ assert_equal level, last.first
69
+ assert 1, last[1].size
70
+ assert last[1][0] =~ /^#{message} \(.*\)$/
71
+ end
72
+ end
@@ -0,0 +1,193 @@
1
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
+ require 'action_view/helpers/date_helper'
3
+ require 'action_view/compiled_templates'
4
+
5
+ class CompiledTemplateTests < Test::Unit::TestCase
6
+ def setup
7
+ @ct = ActionView::CompiledTemplates.new
8
+ @v = Class.new
9
+ @v.send :include, @ct
10
+ @a = './test_compile_template_a.rhtml'
11
+ @b = './test_compile_template_b.rhtml'
12
+ @s = './test_compile_template_link.rhtml'
13
+ end
14
+ def teardown
15
+ [@a, @b, @s].each do |f|
16
+ FileUtils.rm(f) if File.exist?(f) || File.symlink?(f)
17
+ end
18
+ end
19
+ attr_reader :ct, :v
20
+
21
+ def test_name_allocation
22
+ hi_world = ct.method_names['hi world']
23
+ hi_sexy = ct.method_names['hi sexy']
24
+ wish_upon_a_star = ct.method_names['I love seeing decent error messages']
25
+
26
+ assert_equal hi_world, ct.method_names['hi world']
27
+ assert_equal hi_sexy, ct.method_names['hi sexy']
28
+ assert_equal wish_upon_a_star, ct.method_names['I love seeing decent error messages']
29
+ assert_equal 3, [hi_world, hi_sexy, wish_upon_a_star].uniq.length
30
+ end
31
+
32
+ def test_wrap_source
33
+ assert_equal(
34
+ "def aliased_assignment(value)\nself.value = value\nend",
35
+ @ct.wrap_source(:aliased_assignment, [:value], 'self.value = value')
36
+ )
37
+
38
+ assert_equal(
39
+ "def simple()\nnil\nend",
40
+ @ct.wrap_source(:simple, [], 'nil')
41
+ )
42
+ end
43
+
44
+ def test_compile_source_single_method
45
+ selector = ct.compile_source('doubling method', [:a], 'a + a')
46
+ assert_equal 2, @v.new.send(selector, 1)
47
+ assert_equal 4, @v.new.send(selector, 2)
48
+ assert_equal -4, @v.new.send(selector, -2)
49
+ assert_equal 0, @v.new.send(selector, 0)
50
+ selector
51
+ end
52
+
53
+ def test_compile_source_two_method
54
+ sel1 = test_compile_source_single_method # compile the method in the other test
55
+ sel2 = ct.compile_source('doubling method', [:a, :b], 'a + b + a + b')
56
+ assert_not_equal sel1, sel2
57
+
58
+ assert_equal 2, @v.new.send(sel1, 1)
59
+ assert_equal 4, @v.new.send(sel1, 2)
60
+
61
+ assert_equal 6, @v.new.send(sel2, 1, 2)
62
+ assert_equal 32, @v.new.send(sel2, 15, 1)
63
+ end
64
+
65
+ def test_mtime
66
+ t1 = Time.now
67
+ test_compile_source_single_method
68
+ assert (t1..Time.now).include?(ct.mtime('doubling method', [:a]))
69
+ end
70
+
71
+ uses_mocha 'test_compile_time' do
72
+ def test_compile_time
73
+ t = Time.now
74
+
75
+ File.open(@a, "w"){|f| f.puts @a}
76
+ File.open(@b, "w"){|f| f.puts @b}
77
+ # windows doesn't support symlinks (even under cygwin)
78
+ windows = (RUBY_PLATFORM =~ /win32/)
79
+ `ln -s #{@a} #{@s}` unless windows
80
+
81
+ v = ActionView::Base.new
82
+ v.base_path = '.'
83
+ v.cache_template_loading = false
84
+
85
+ # All templates were created at t+1
86
+ File::Stat.any_instance.expects(:mtime).times(windows ? 2 : 3).returns(t + 1.second)
87
+
88
+ # private methods template_changed_since? and compile_template?
89
+ # should report true for all since they have not been compiled
90
+ assert v.send(:template_changed_since?, @a, t)
91
+ assert v.send(:template_changed_since?, @b, t)
92
+ assert v.send(:template_changed_since?, @s, t) unless windows
93
+
94
+ assert v.send(:compile_template?, nil, @a, {})
95
+ assert v.send(:compile_template?, nil, @b, {})
96
+ assert v.send(:compile_template?, nil, @s, {}) unless windows
97
+
98
+ @handler = ActionView::Base.handler_for_extension(:rhtml)
99
+
100
+ # All templates are rendered at t+2
101
+ Time.expects(:now).times(windows ? 2 : 3).returns(t + 2.seconds)
102
+ v.send(:compile_and_render_template, @handler, '', @a)
103
+ v.send(:compile_and_render_template, @handler, '', @b)
104
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
105
+ a_n = v.method_names[@a]
106
+ b_n = v.method_names[@b]
107
+ s_n = v.method_names[@s] unless windows
108
+ # all of the files have changed since last compile
109
+ assert v.compile_time[a_n] > t
110
+ assert v.compile_time[b_n] > t
111
+ assert v.compile_time[s_n] > t unless windows
112
+
113
+ # private methods template_changed_since? and compile_template?
114
+ # should report false for all since none have changed since compile
115
+ File::Stat.any_instance.expects(:mtime).times(windows ? 6 : 12).returns(t + 1.second)
116
+ assert !v.send(:template_changed_since?, @a, v.compile_time[a_n])
117
+ assert !v.send(:template_changed_since?, @b, v.compile_time[b_n])
118
+ assert !v.send(:template_changed_since?, @s, v.compile_time[s_n]) unless windows
119
+ assert !v.send(:compile_template?, nil, @a, {})
120
+ assert !v.send(:compile_template?, nil, @b, {})
121
+ assert !v.send(:compile_template?, nil, @s, {}) unless windows
122
+ v.send(:compile_and_render_template, @handler, '', @a)
123
+ v.send(:compile_and_render_template, @handler, '', @b)
124
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
125
+ # none of the files have changed since last compile
126
+ assert v.compile_time[a_n] < t + 3.seconds
127
+ assert v.compile_time[b_n] < t + 3.seconds
128
+ assert v.compile_time[s_n] < t + 3.seconds unless windows
129
+
130
+ `rm #{@s}; ln -s #{@b} #{@s}` unless windows
131
+ # private methods template_changed_since? and compile_template?
132
+ # should report true for symlink since it has changed since compile
133
+
134
+ # t + 3.seconds is for the symlink
135
+ File::Stat.any_instance.expects(:mtime).times(windows ? 6 : 9).returns(
136
+ *(windows ? [ t + 1.second, t + 1.second ] :
137
+ [ t + 1.second, t + 1.second, t + 3.second ]) * 3)
138
+ assert !v.send(:template_changed_since?, @a, v.compile_time[a_n])
139
+ assert !v.send(:template_changed_since?, @b, v.compile_time[b_n])
140
+ assert v.send(:template_changed_since?, @s, v.compile_time[s_n]) unless windows
141
+ assert !v.send(:compile_template?, nil, @a, {})
142
+ assert !v.send(:compile_template?, nil, @b, {})
143
+ assert v.send(:compile_template?, nil, @s, {}) unless windows
144
+
145
+ # Only the symlink template gets rendered at t+3
146
+ Time.stubs(:now).returns(t + 3.seconds) unless windows
147
+ v.send(:compile_and_render_template, @handler, '', @a)
148
+ v.send(:compile_and_render_template, @handler, '', @b)
149
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
150
+ # the symlink has changed since last compile
151
+ assert v.compile_time[a_n] < t + 3.seconds
152
+ assert v.compile_time[b_n] < t + 3.seconds
153
+ assert_equal v.compile_time[s_n], t + 3.seconds unless windows
154
+
155
+ FileUtils.touch @b
156
+ # private methods template_changed_since? and compile_template?
157
+ # should report true for symlink and file at end of symlink
158
+ # since it has changed since last compile
159
+ #
160
+ # t+4 is for @b and also for the file that @s points to, which is @b
161
+ File::Stat.any_instance.expects(:mtime).times(windows ? 6 : 12).returns(
162
+ *(windows ? [ t + 1.second, t + 4.seconds ] :
163
+ [ t + 1.second, t + 4.seconds, t + 3.second, t + 4.seconds ]) * 3)
164
+ assert !v.send(:template_changed_since?, @a, v.compile_time[a_n])
165
+ assert v.send(:template_changed_since?, @b, v.compile_time[b_n])
166
+ assert v.send(:template_changed_since?, @s, v.compile_time[s_n]) unless windows
167
+ assert !v.send(:compile_template?, nil, @a, {})
168
+ assert v.send(:compile_template?, nil, @b, {})
169
+ assert v.send(:compile_template?, nil, @s, {}) unless windows
170
+
171
+ Time.expects(:now).times(windows ? 1 : 2).returns(t + 5.seconds)
172
+ v.send(:compile_and_render_template, @handler, '', @a)
173
+ v.send(:compile_and_render_template, @handler, '', @b)
174
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
175
+ # the file at the end of the symlink has changed since last compile
176
+ # both the symlink and the file at the end of it should be recompiled
177
+ assert v.compile_time[a_n] < t + 5.seconds
178
+ assert_equal v.compile_time[b_n], t + 5.seconds
179
+ assert_equal v.compile_time[s_n], t + 5.seconds unless windows
180
+ end
181
+ end
182
+ end
183
+
184
+ module ActionView
185
+ class Base
186
+ def compile_time
187
+ @@compile_time
188
+ end
189
+ def method_names
190
+ @@method_names
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,1438 @@
1
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
+
3
+ class DateHelperTest < Test::Unit::TestCase
4
+ include ActionView::Helpers::DateHelper
5
+ include ActionView::Helpers::FormHelper
6
+
7
+ silence_warnings do
8
+ Post = Struct.new("Post", :id, :written_on, :updated_at)
9
+ Post.class_eval do
10
+ def id
11
+ 123
12
+ end
13
+ def id_before_type_cast
14
+ 123
15
+ end
16
+ def to_param
17
+ '123'
18
+ end
19
+ end
20
+ end
21
+
22
+ def test_distance_in_words
23
+ from = Time.mktime(2004, 6, 6, 21, 45, 0)
24
+
25
+ # 0..1 with include_seconds
26
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 0.seconds, true)
27
+ assert_equal "less than 5 seconds", distance_of_time_in_words(from, from + 4.seconds, true)
28
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 5.seconds, true)
29
+ assert_equal "less than 10 seconds", distance_of_time_in_words(from, from + 9.seconds, true)
30
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 10.seconds, true)
31
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from, from + 19.seconds, true)
32
+ assert_equal "half a minute", distance_of_time_in_words(from, from + 20.seconds, true)
33
+ assert_equal "half a minute", distance_of_time_in_words(from, from + 39.seconds, true)
34
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 40.seconds, true)
35
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 59.seconds, true)
36
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 60.seconds, true)
37
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 89.seconds, true)
38
+
39
+ # First case 0..1
40
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 0.seconds)
41
+ assert_equal "less than a minute", distance_of_time_in_words(from, from + 29.seconds)
42
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 30.seconds)
43
+ assert_equal "1 minute", distance_of_time_in_words(from, from + 1.minutes + 29.seconds)
44
+
45
+ # 2..44
46
+ assert_equal "2 minutes", distance_of_time_in_words(from, from + 1.minutes + 30.seconds)
47
+ assert_equal "44 minutes", distance_of_time_in_words(from, from + 44.minutes + 29.seconds)
48
+
49
+ # 45..89
50
+ assert_equal "about 1 hour", distance_of_time_in_words(from, from + 44.minutes + 30.seconds)
51
+ assert_equal "about 1 hour", distance_of_time_in_words(from, from + 89.minutes + 29.seconds)
52
+
53
+ # 90..1439
54
+ assert_equal "about 2 hours", distance_of_time_in_words(from, from + 89.minutes + 30.seconds)
55
+ assert_equal "about 24 hours", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 29.seconds)
56
+
57
+ # 1440..2879
58
+ assert_equal "1 day", distance_of_time_in_words(from, from + 23.hours + 59.minutes + 30.seconds)
59
+ assert_equal "1 day", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 29.seconds)
60
+
61
+ # 2880..43199
62
+ assert_equal "2 days", distance_of_time_in_words(from, from + 47.hours + 59.minutes + 30.seconds)
63
+ assert_equal "29 days", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 29.seconds)
64
+
65
+ # 43200..86399
66
+ assert_equal "about 1 month", distance_of_time_in_words(from, from + 29.days + 23.hours + 59.minutes + 30.seconds)
67
+ assert_equal "about 1 month", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 29.seconds)
68
+
69
+ # 86400..525599
70
+ assert_equal "2 months", distance_of_time_in_words(from, from + 59.days + 23.hours + 59.minutes + 30.seconds)
71
+ assert_equal "12 months", distance_of_time_in_words(from, from + 1.years - 31.seconds)
72
+
73
+ # 525600..1051199
74
+ assert_equal "about 1 year", distance_of_time_in_words(from, from + 1.years - 30.seconds)
75
+ assert_equal "about 1 year", distance_of_time_in_words(from, from + 2.years - 31.seconds)
76
+
77
+ # > 1051199
78
+ assert_equal "over 2 years", distance_of_time_in_words(from, from + 2.years + 30.seconds)
79
+ assert_equal "over 10 years", distance_of_time_in_words(from, from + 10.years)
80
+
81
+ # test to < from
82
+ assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, from)
83
+ assert_equal "less than 20 seconds", distance_of_time_in_words(from + 19.seconds, from, true)
84
+
85
+ # test with integers
86
+ assert_equal "less than a minute", distance_of_time_in_words(59)
87
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60)
88
+ assert_equal "less than a minute", distance_of_time_in_words(0, 59)
89
+ assert_equal "about 1 hour", distance_of_time_in_words(60*60, 0)
90
+ end
91
+
92
+ def test_distance_in_words_with_dates
93
+ start_date = Date.new 1975, 1, 31
94
+ end_date = Date.new 1977, 1, 31
95
+ assert_equal("over 2 years", distance_of_time_in_words(start_date, end_date))
96
+ end
97
+
98
+ def test_time_ago_in_words
99
+ assert_equal "about 1 year", time_ago_in_words(1.year.ago - 1.day)
100
+ end
101
+
102
+ def test_select_day
103
+ expected = %(<select id="date_day" name="date[day]">\n)
104
+ 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)
105
+ expected << "</select>\n"
106
+
107
+ assert_equal expected, select_day(Time.mktime(2003, 8, 16))
108
+ assert_equal expected, select_day(16)
109
+ end
110
+
111
+ def test_select_day_with_blank
112
+ expected = %(<select id="date_day" name="date[day]">\n)
113
+ 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)
114
+ expected << "</select>\n"
115
+
116
+ assert_equal expected, select_day(Time.mktime(2003, 8, 16), :include_blank => true)
117
+ assert_equal expected, select_day(16, :include_blank => true)
118
+ end
119
+
120
+ def test_select_day_nil_with_blank
121
+ expected = %(<select id="date_day" name="date[day]">\n)
122
+ 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)
123
+ expected << "</select>\n"
124
+
125
+ assert_equal expected, select_day(nil, :include_blank => true)
126
+ end
127
+
128
+ def test_select_month
129
+ expected = %(<select id="date_month" name="date[month]">\n)
130
+ 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)
131
+ expected << "</select>\n"
132
+
133
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16))
134
+ assert_equal expected, select_month(8)
135
+ end
136
+
137
+ def test_select_month_with_disabled
138
+ expected = %(<select id="date_month" name="date[month]" disabled="disabled">\n)
139
+ 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)
140
+ expected << "</select>\n"
141
+
142
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :disabled => true)
143
+ assert_equal expected, select_month(8, :disabled => true)
144
+ end
145
+
146
+ def test_select_month_with_field_name_override
147
+ expected = %(<select id="date_mois" name="date[mois]">\n)
148
+ 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)
149
+ expected << "</select>\n"
150
+
151
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :field_name => 'mois')
152
+ assert_equal expected, select_month(8, :field_name => 'mois')
153
+ end
154
+
155
+ def test_select_month_with_blank
156
+ expected = %(<select id="date_month" name="date[month]">\n)
157
+ 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)
158
+ expected << "</select>\n"
159
+
160
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :include_blank => true)
161
+ assert_equal expected, select_month(8, :include_blank => true)
162
+ end
163
+
164
+ def test_select_month_nil_with_blank
165
+ expected = %(<select id="date_month" name="date[month]">\n)
166
+ 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)
167
+ expected << "</select>\n"
168
+
169
+ assert_equal expected, select_month(nil, :include_blank => true)
170
+ end
171
+
172
+ def test_select_month_with_numbers
173
+ expected = %(<select id="date_month" name="date[month]">\n)
174
+ 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)
175
+ expected << "</select>\n"
176
+
177
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_numbers => true)
178
+ assert_equal expected, select_month(8, :use_month_numbers => true)
179
+ end
180
+
181
+ def test_select_month_with_numbers_and_names
182
+ expected = %(<select id="date_month" name="date[month]">\n)
183
+ 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)
184
+ expected << "</select>\n"
185
+
186
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true)
187
+ assert_equal expected, select_month(8, :add_month_numbers => true)
188
+ end
189
+
190
+ def test_select_month_with_numbers_and_names_with_abbv
191
+ expected = %(<select id="date_month" name="date[month]">\n)
192
+ 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)
193
+ expected << "</select>\n"
194
+
195
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :add_month_numbers => true, :use_short_month => true)
196
+ assert_equal expected, select_month(8, :add_month_numbers => true, :use_short_month => true)
197
+ end
198
+
199
+ def test_select_month_with_abbv
200
+ expected = %(<select id="date_month" name="date[month]">\n)
201
+ 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)
202
+ expected << "</select>\n"
203
+
204
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_short_month => true)
205
+ assert_equal expected, select_month(8, :use_short_month => true)
206
+ end
207
+
208
+ def test_select_month_with_custom_names
209
+ month_names = %w(nil Januar Februar Marts April Maj Juni Juli August September Oktober November December)
210
+
211
+ expected = %(<select id="date_month" name="date[month]">\n)
212
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month]}</option>\n) }
213
+ expected << "</select>\n"
214
+
215
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
216
+ assert_equal expected, select_month(8, :use_month_names => month_names)
217
+ end
218
+
219
+ def test_select_month_with_zero_indexed_custom_names
220
+ month_names = %w(Januar Februar Marts April Maj Juni Juli August September Oktober November December)
221
+
222
+ expected = %(<select id="date_month" name="date[month]">\n)
223
+ 1.upto(12) { |month| expected << %(<option value="#{month}"#{' selected="selected"' if month == 8}>#{month_names[month-1]}</option>\n) }
224
+ expected << "</select>\n"
225
+
226
+ assert_equal expected, select_month(Time.mktime(2003, 8, 16), :use_month_names => month_names)
227
+ assert_equal expected, select_month(8, :use_month_names => month_names)
228
+ end
229
+
230
+ def test_select_month_with_hidden
231
+ assert_dom_equal "<input type=\"hidden\" id=\"date_month\" name=\"date[month]\" value=\"8\" />\n", select_month(8, :use_hidden => true)
232
+ end
233
+
234
+ def test_select_month_with_hidden_and_field_name
235
+ assert_dom_equal "<input type=\"hidden\" id=\"date_mois\" name=\"date[mois]\" value=\"8\" />\n", select_month(8, :use_hidden => true, :field_name => 'mois')
236
+ end
237
+
238
+ def test_select_year
239
+ expected = %(<select id="date_year" name="date[year]">\n)
240
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
241
+ expected << "</select>\n"
242
+
243
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005)
244
+ assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005)
245
+ end
246
+
247
+ def test_select_year_with_disabled
248
+ expected = %(<select id="date_year" name="date[year]" disabled="disabled">\n)
249
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
250
+ expected << "</select>\n"
251
+
252
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :disabled => true, :start_year => 2003, :end_year => 2005)
253
+ assert_equal expected, select_year(2003, :disabled => true, :start_year => 2003, :end_year => 2005)
254
+ end
255
+
256
+ def test_select_year_with_field_name_override
257
+ expected = %(<select id="date_annee" name="date[annee]">\n)
258
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
259
+ expected << "</select>\n"
260
+
261
+ assert_equal expected, select_year(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :field_name => 'annee')
262
+ assert_equal expected, select_year(2003, :start_year => 2003, :end_year => 2005, :field_name => 'annee')
263
+ end
264
+
265
+ def test_select_year_with_type_discarding
266
+ expected = %(<select id="date_year" name="date_year">\n)
267
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
268
+ expected << "</select>\n"
269
+
270
+ assert_equal expected, select_year(
271
+ Time.mktime(2003, 8, 16), :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
272
+ assert_equal expected, select_year(
273
+ 2003, :prefix => "date_year", :discard_type => true, :start_year => 2003, :end_year => 2005)
274
+ end
275
+
276
+ def test_select_year_descending
277
+ expected = %(<select id="date_year" name="date[year]">\n)
278
+ expected << %(<option value="2005" selected="selected">2005</option>\n<option value="2004">2004</option>\n<option value="2003">2003</option>\n)
279
+ expected << "</select>\n"
280
+
281
+ assert_equal expected, select_year(Time.mktime(2005, 8, 16), :start_year => 2005, :end_year => 2003)
282
+ assert_equal expected, select_year(2005, :start_year => 2005, :end_year => 2003)
283
+ end
284
+
285
+ def test_select_year_with_hidden
286
+ assert_dom_equal "<input type=\"hidden\" id=\"date_year\" name=\"date[year]\" value=\"2007\" />\n", select_year(2007, :use_hidden => true)
287
+ end
288
+
289
+ def test_select_year_with_hidden_and_field_name
290
+ assert_dom_equal "<input type=\"hidden\" id=\"date_anno\" name=\"date[anno]\" value=\"2007\" />\n", select_year(2007, :use_hidden => true, :field_name => 'anno')
291
+ end
292
+
293
+ def test_select_hour
294
+ expected = %(<select id="date_hour" name="date[hour]">\n)
295
+ 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)
296
+ expected << "</select>\n"
297
+
298
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
299
+ end
300
+
301
+ def test_select_hour_with_disabled
302
+ expected = %(<select id="date_hour" name="date[hour]" disabled="disabled">\n)
303
+ 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)
304
+ expected << "</select>\n"
305
+
306
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
307
+ end
308
+
309
+ def test_select_hour_with_field_name_override
310
+ expected = %(<select id="date_heure" name="date[heure]">\n)
311
+ 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)
312
+ expected << "</select>\n"
313
+
314
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'heure')
315
+ end
316
+
317
+ def test_select_hour_with_blank
318
+ expected = %(<select id="date_hour" name="date[hour]">\n)
319
+ 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)
320
+ expected << "</select>\n"
321
+
322
+ assert_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
323
+ end
324
+
325
+ def test_select_hour_nil_with_blank
326
+ expected = %(<select id="date_hour" name="date[hour]">\n)
327
+ 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)
328
+ expected << "</select>\n"
329
+
330
+ assert_equal expected, select_hour(nil, :include_blank => true)
331
+ end
332
+
333
+ def test_select_minute
334
+ expected = %(<select id="date_minute" name="date[minute]">\n)
335
+ 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)
336
+ expected << "</select>\n"
337
+
338
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
339
+ end
340
+
341
+ def test_select_minute_with_disabled
342
+ expected = %(<select id="date_minute" name="date[minute]" disabled="disabled">\n)
343
+ 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)
344
+ expected << "</select>\n"
345
+
346
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
347
+ end
348
+
349
+ def test_select_minute_with_field_name_override
350
+ expected = %(<select id="date_minuto" name="date[minuto]">\n)
351
+ 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)
352
+ expected << "</select>\n"
353
+
354
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'minuto')
355
+ end
356
+
357
+ def test_select_minute_with_blank
358
+ expected = %(<select id="date_minute" name="date[minute]">\n)
359
+ 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)
360
+ expected << "</select>\n"
361
+
362
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
363
+ end
364
+
365
+ def test_select_minute_with_blank_and_step
366
+ expected = %(<select id="date_minute" name="date[minute]">\n)
367
+ 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)
368
+ expected << "</select>\n"
369
+
370
+ assert_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), { :include_blank => true , :minute_step => 15 })
371
+ end
372
+
373
+ def test_select_minute_nil_with_blank
374
+ expected = %(<select id="date_minute" name="date[minute]">\n)
375
+ 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)
376
+ expected << "</select>\n"
377
+
378
+ assert_equal expected, select_minute(nil, :include_blank => true)
379
+ end
380
+
381
+ def test_select_minute_nil_with_blank_and_step
382
+ expected = %(<select id="date_minute" name="date[minute]">\n)
383
+ 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)
384
+ expected << "</select>\n"
385
+
386
+ assert_equal expected, select_minute(nil, { :include_blank => true , :minute_step => 15 })
387
+ end
388
+
389
+ def test_select_minute_with_hidden
390
+ assert_dom_equal "<input type=\"hidden\" id=\"date_minute\" name=\"date[minute]\" value=\"8\" />\n", select_minute(8, :use_hidden => true)
391
+ end
392
+
393
+ def test_select_minute_with_hidden_and_field_name
394
+ assert_dom_equal "<input type=\"hidden\" id=\"date_minuto\" name=\"date[minuto]\" value=\"8\" />\n", select_minute(8, :use_hidden => true, :field_name => 'minuto')
395
+ end
396
+
397
+ def test_select_second
398
+ expected = %(<select id="date_second" name="date[second]">\n)
399
+ 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)
400
+ expected << "</select>\n"
401
+
402
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
403
+ end
404
+
405
+ def test_select_second_with_disabled
406
+ expected = %(<select id="date_second" name="date[second]" disabled="disabled">\n)
407
+ 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)
408
+ expected << "</select>\n"
409
+
410
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :disabled => true)
411
+ end
412
+
413
+ def test_select_second_with_field_name_override
414
+ expected = %(<select id="date_segundo" name="date[segundo]">\n)
415
+ 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)
416
+ expected << "</select>\n"
417
+
418
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :field_name => 'segundo')
419
+ end
420
+
421
+ def test_select_second_with_blank
422
+ expected = %(<select id="date_second" name="date[second]">\n)
423
+ 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)
424
+ expected << "</select>\n"
425
+
426
+ assert_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :include_blank => true)
427
+ end
428
+
429
+ def test_select_second_nil_with_blank
430
+ expected = %(<select id="date_second" name="date[second]">\n)
431
+ 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)
432
+ expected << "</select>\n"
433
+
434
+ assert_equal expected, select_second(nil, :include_blank => true)
435
+ end
436
+
437
+ def test_select_date
438
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
439
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
440
+ expected << "</select>\n"
441
+
442
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
443
+ 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)
444
+ expected << "</select>\n"
445
+
446
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
447
+ 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)
448
+ expected << "</select>\n"
449
+
450
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
451
+ end
452
+
453
+ def test_select_date_with_order
454
+ expected = %(<select id="date_first_month" name="date[first][month]">\n)
455
+ 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)
456
+ expected << "</select>\n"
457
+
458
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
459
+ 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)
460
+ expected << "</select>\n"
461
+
462
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
463
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
464
+ expected << "</select>\n"
465
+
466
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:month, :day, :year])
467
+ end
468
+
469
+ def test_select_date_with_incomplete_order
470
+ expected = %(<select id="date_first_day" name="date[first][day]">\n)
471
+ 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)
472
+ expected << "</select>\n"
473
+
474
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
475
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
476
+ expected << "</select>\n"
477
+
478
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
479
+ 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)
480
+ expected << "</select>\n"
481
+
482
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
483
+ end
484
+
485
+ def test_select_date_with_disabled
486
+ expected = %(<select id="date_first_year" name="date[first][year]" disabled="disabled">\n)
487
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
488
+ expected << "</select>\n"
489
+
490
+ expected << %(<select id="date_first_month" name="date[first][month]" disabled="disabled">\n)
491
+ 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)
492
+ expected << "</select>\n"
493
+
494
+ expected << %(<select id="date_first_day" name="date[first][day]" disabled="disabled">\n)
495
+ 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)
496
+ expected << "</select>\n"
497
+
498
+ assert_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :disabled => true)
499
+ end
500
+
501
+ def test_select_date_with_no_start_year
502
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
503
+ (Date.today.year-5).upto(Date.today.year+1) do |y|
504
+ if y == Date.today.year
505
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
506
+ else
507
+ expected << %(<option value="#{y}">#{y}</option>\n)
508
+ end
509
+ end
510
+ expected << "</select>\n"
511
+
512
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
513
+ 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)
514
+ expected << "</select>\n"
515
+
516
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
517
+ 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)
518
+ expected << "</select>\n"
519
+
520
+ assert_equal expected, select_date(
521
+ Time.mktime(Date.today.year, 8, 16), :end_year => Date.today.year+1, :prefix => "date[first]"
522
+ )
523
+ end
524
+
525
+ def test_select_date_with_no_end_year
526
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
527
+ 2003.upto(2008) do |y|
528
+ if y == 2003
529
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
530
+ else
531
+ expected << %(<option value="#{y}">#{y}</option>\n)
532
+ end
533
+ end
534
+ expected << "</select>\n"
535
+
536
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
537
+ 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)
538
+ expected << "</select>\n"
539
+
540
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
541
+ 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)
542
+ expected << "</select>\n"
543
+
544
+ assert_equal expected, select_date(
545
+ Time.mktime(2003, 8, 16), :start_year => 2003, :prefix => "date[first]"
546
+ )
547
+ end
548
+
549
+ def test_select_date_with_no_start_or_end_year
550
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
551
+ (Date.today.year-5).upto(Date.today.year+5) do |y|
552
+ if y == Date.today.year
553
+ expected << %(<option value="#{y}" selected="selected">#{y}</option>\n)
554
+ else
555
+ expected << %(<option value="#{y}">#{y}</option>\n)
556
+ end
557
+ end
558
+ expected << "</select>\n"
559
+
560
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
561
+ 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)
562
+ expected << "</select>\n"
563
+
564
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
565
+ 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)
566
+ expected << "</select>\n"
567
+
568
+ assert_equal expected, select_date(
569
+ Time.mktime(Date.today.year, 8, 16), :prefix => "date[first]"
570
+ )
571
+ end
572
+
573
+ def test_select_date_with_zero_value
574
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
575
+ expected << %(<option value="2003">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
576
+ expected << "</select>\n"
577
+
578
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
579
+ 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)
580
+ expected << "</select>\n"
581
+
582
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
583
+ 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)
584
+ expected << "</select>\n"
585
+
586
+ assert_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
587
+ end
588
+
589
+ def test_select_date_with_zero_value_and_no_start_year
590
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
591
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
592
+ expected << "</select>\n"
593
+
594
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
595
+ 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)
596
+ expected << "</select>\n"
597
+
598
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
599
+ 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)
600
+ expected << "</select>\n"
601
+
602
+ assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
603
+ end
604
+
605
+ def test_select_date_with_zero_value_and_no_end_year
606
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
607
+ last_year = Time.now.year + 5
608
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
609
+ expected << "</select>\n"
610
+
611
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
612
+ 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)
613
+ expected << "</select>\n"
614
+
615
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
616
+ 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)
617
+ expected << "</select>\n"
618
+
619
+ assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
620
+ end
621
+
622
+ def test_select_date_with_zero_value_and_no_start_and_end_year
623
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
624
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
625
+ expected << "</select>\n"
626
+
627
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
628
+ 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)
629
+ expected << "</select>\n"
630
+
631
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
632
+ 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)
633
+ expected << "</select>\n"
634
+
635
+ assert_equal expected, select_date(0, :prefix => "date[first]")
636
+ end
637
+
638
+ def test_select_date_with_nil_value_and_no_start_and_end_year
639
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
640
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
641
+ expected << "</select>\n"
642
+
643
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
644
+ 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)
645
+ expected << "</select>\n"
646
+
647
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
648
+ 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)
649
+ expected << "</select>\n"
650
+
651
+ assert_equal expected, select_date(nil, :prefix => "date[first]")
652
+ end
653
+
654
+ def test_select_datetime
655
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
656
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
657
+ expected << "</select>\n"
658
+
659
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
660
+ 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)
661
+ expected << "</select>\n"
662
+
663
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
664
+ 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)
665
+ expected << "</select>\n"
666
+
667
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
668
+ 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)
669
+ expected << "</select>\n"
670
+
671
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
672
+ 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)
673
+ expected << "</select>\n"
674
+
675
+ assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]")
676
+ end
677
+
678
+ def test_select_datetime_with_separators
679
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
680
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
681
+ expected << "</select>\n"
682
+
683
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
684
+ 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)
685
+ expected << "</select>\n"
686
+
687
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
688
+ 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)
689
+ expected << "</select>\n"
690
+
691
+ expected << " &mdash; "
692
+
693
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
694
+ 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)
695
+ expected << "</select>\n"
696
+
697
+ expected << " : "
698
+
699
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
700
+ 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)
701
+ expected << "</select>\n"
702
+
703
+ assert_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :datetime_separator => ' &mdash; ', :time_separator => ' : ')
704
+ end
705
+
706
+ def test_select_datetime_with_nil_value_and_no_start_and_end_year
707
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
708
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
709
+ expected << "</select>\n"
710
+
711
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
712
+ 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)
713
+ expected << "</select>\n"
714
+
715
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
716
+ 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)
717
+ expected << "</select>\n"
718
+
719
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
720
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
721
+ expected << "</select>\n"
722
+
723
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
724
+ 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)
725
+ expected << "</select>\n"
726
+
727
+ assert_equal expected, select_datetime(nil, :prefix => "date[first]")
728
+ end
729
+
730
+ def test_select_time
731
+ expected = %(<select id="date_hour" name="date[hour]">\n)
732
+ 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)
733
+ expected << "</select>\n"
734
+
735
+ expected << %(<select id="date_minute" name="date[minute]">\n)
736
+ 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)
737
+ expected << "</select>\n"
738
+
739
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18))
740
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => false)
741
+ end
742
+
743
+ def test_select_time_with_separator
744
+ expected = %(<select id="date_hour" name="date[hour]">\n)
745
+ 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)
746
+ expected << "</select>\n"
747
+
748
+ expected << " : "
749
+
750
+ expected << %(<select id="date_minute" name="date[minute]">\n)
751
+ expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" 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)
752
+ expected << "</select>\n"
753
+
754
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ')
755
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :time_separator => ' : ', :include_seconds => false)
756
+ end
757
+
758
+ def test_select_time_with_seconds
759
+ expected = %(<select id="date_hour" name="date[hour]">\n)
760
+ 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)
761
+ expected << "</select>\n"
762
+
763
+ expected << %(<select id="date_minute" name="date[minute]">\n)
764
+ 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)
765
+ expected << "</select>\n"
766
+
767
+ expected << %(<select id="date_second" name="date[second]">\n)
768
+ 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)
769
+ expected << "</select>\n"
770
+
771
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true)
772
+ end
773
+
774
+ def test_select_time_with_seconds_and_separator
775
+ expected = %(<select id="date_hour" name="date[hour]">\n)
776
+ 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)
777
+ expected << "</select>\n"
778
+
779
+ expected << " : "
780
+
781
+ expected << %(<select id="date_minute" name="date[minute]">\n)
782
+ 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)
783
+ expected << "</select>\n"
784
+
785
+ expected << " : "
786
+
787
+ expected << %(<select id="date_second" name="date[second]">\n)
788
+ 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)
789
+ expected << "</select>\n"
790
+
791
+ assert_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds => true, :time_separator => ' : ')
792
+ end
793
+
794
+ def test_date_select
795
+ @post = Post.new
796
+ @post.written_on = Date.new(2004, 6, 15)
797
+
798
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
799
+ 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}
800
+ expected << "</select>\n"
801
+
802
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
803
+ 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}
804
+ expected << "</select>\n"
805
+
806
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
807
+ 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}
808
+
809
+ expected << "</select>\n"
810
+
811
+ assert_equal expected, date_select("post", "written_on")
812
+ end
813
+
814
+ def test_date_select_without_day
815
+ @post = Post.new
816
+ @post.written_on = Date.new(2004, 6, 15)
817
+
818
+ expected = "<input type=\"hidden\" id=\"post_written_on_3i\" name=\"post[written_on(3i)]\" value=\"1\" />\n"
819
+
820
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
821
+ 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}
822
+ expected << "</select>\n"
823
+
824
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
825
+ 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}
826
+ expected << "</select>\n"
827
+
828
+ assert_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
829
+ end
830
+
831
+ def test_date_select_within_fields_for
832
+ @post = Post.new
833
+ @post.written_on = Date.new(2004, 6, 15)
834
+
835
+ _erbout = ''
836
+
837
+ fields_for :post, @post do |f|
838
+ _erbout.concat f.date_select(:written_on)
839
+ end
840
+
841
+ 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"
842
+ 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"
843
+ 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"
844
+
845
+ assert_dom_equal(expected, _erbout)
846
+ end
847
+
848
+ def test_date_select_with_index
849
+ @post = Post.new
850
+ @post.written_on = Date.new(2004, 6, 15)
851
+ id = 456
852
+
853
+ expected = %{<select id="post_456_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
854
+ 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}
855
+ expected << "</select>\n"
856
+
857
+ expected << %{<select id="post_456_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
858
+ 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}
859
+ expected << "</select>\n"
860
+
861
+ expected << %{<select id="post_456_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
862
+ 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}
863
+
864
+ expected << "</select>\n"
865
+
866
+ assert_equal expected, date_select("post", "written_on", :index => id)
867
+ end
868
+
869
+ def test_date_select_with_auto_index
870
+ @post = Post.new
871
+ @post.written_on = Date.new(2004, 6, 15)
872
+ id = 123
873
+
874
+ expected = %{<select id="post_123_written_on_1i" name="post[#{id}][written_on(1i)]">\n}
875
+ 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}
876
+ expected << "</select>\n"
877
+
878
+ expected << %{<select id="post_123_written_on_2i" name="post[#{id}][written_on(2i)]">\n}
879
+ 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}
880
+ expected << "</select>\n"
881
+
882
+ expected << %{<select id="post_123_written_on_3i" name="post[#{id}][written_on(3i)]">\n}
883
+ 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}
884
+ expected << "</select>\n"
885
+
886
+ assert_equal expected, date_select("post[]", "written_on")
887
+ end
888
+
889
+ def test_date_select_with_different_order
890
+ @post = Post.new
891
+ @post.written_on = Date.new(2004, 6, 15)
892
+
893
+ expected = %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
894
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
895
+ expected << "</select>\n"
896
+
897
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
898
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
899
+ expected << "</select>\n"
900
+
901
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
902
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
903
+ expected << "</select>\n"
904
+
905
+ assert_equal expected, date_select("post", "written_on", :order => [:day, :month, :year])
906
+ end
907
+
908
+ def test_date_select_with_nil
909
+ @post = Post.new
910
+
911
+ start_year = Time.now.year-5
912
+ end_year = Time.now.year+5
913
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
914
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.year}>#{i}</option>\n) }
915
+ expected << "</select>\n"
916
+
917
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
918
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.month}>#{Date::MONTHNAMES[i]}</option>\n) }
919
+ expected << "</select>\n"
920
+
921
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
922
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
923
+ expected << "</select>\n"
924
+
925
+ assert_equal expected, date_select("post", "written_on")
926
+ end
927
+
928
+ def test_date_select_with_nil_and_blank
929
+ @post = Post.new
930
+
931
+ start_year = Time.now.year-5
932
+ end_year = Time.now.year+5
933
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
934
+ expected << "<option value=\"\"></option>\n"
935
+ start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
936
+ expected << "</select>\n"
937
+
938
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
939
+ expected << "<option value=\"\"></option>\n"
940
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
941
+ expected << "</select>\n"
942
+
943
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
944
+ expected << "<option value=\"\"></option>\n"
945
+ 1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
946
+ expected << "</select>\n"
947
+
948
+ assert_equal expected, date_select("post", "written_on", :include_blank => true)
949
+ end
950
+
951
+ def test_date_select_cant_override_discard_hour
952
+ @post = Post.new
953
+ @post.written_on = Date.new(2004, 6, 15)
954
+
955
+ expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
956
+ 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}
957
+ expected << "</select>\n"
958
+
959
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
960
+ 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}
961
+ expected << "</select>\n"
962
+
963
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
964
+ 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}
965
+ expected << "</select>\n"
966
+
967
+ assert_equal expected, date_select("post", "written_on", :discard_hour => false)
968
+ end
969
+
970
+ def test_time_select
971
+ @post = Post.new
972
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
973
+
974
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
975
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
976
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
977
+
978
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
979
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
980
+ expected << "</select>\n"
981
+ expected << " : "
982
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
983
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
984
+ expected << "</select>\n"
985
+
986
+ assert_equal expected, time_select("post", "written_on")
987
+ end
988
+
989
+ def test_time_select_with_seconds
990
+ @post = Post.new
991
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
992
+
993
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
994
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
995
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
996
+
997
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
998
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
999
+ expected << "</select>\n"
1000
+ expected << " : "
1001
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
1002
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1003
+ expected << "</select>\n"
1004
+ expected << " : "
1005
+ expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
1006
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
1007
+ expected << "</select>\n"
1008
+
1009
+ assert_equal expected, time_select("post", "written_on", :include_seconds => true)
1010
+ end
1011
+
1012
+ def test_datetime_select
1013
+ @post = Post.new
1014
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1015
+
1016
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1017
+ 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}
1018
+ expected << "</select>\n"
1019
+
1020
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1021
+ 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}
1022
+ expected << "</select>\n"
1023
+
1024
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1025
+ 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}
1026
+ expected << "</select>\n"
1027
+
1028
+ expected << " &mdash; "
1029
+
1030
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1031
+ 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}
1032
+ expected << "</select>\n"
1033
+ expected << " : "
1034
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1035
+ 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}
1036
+ expected << "</select>\n"
1037
+
1038
+ assert_equal expected, datetime_select("post", "updated_at")
1039
+ end
1040
+
1041
+ def test_datetime_select_within_fields_for
1042
+ @post = Post.new
1043
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1044
+
1045
+ _erbout = ''
1046
+
1047
+ fields_for :post, @post do |f|
1048
+ _erbout.concat f.datetime_select(:updated_at)
1049
+ end
1050
+
1051
+ expected = "<select id='post_updated_at_1i' name='post[updated_at(1i)]'>\n<option value='1999'>1999</option>\n<option value='2000'>2000</option>\n<option value='2001'>2001</option>\n<option value='2002'>2002</option>\n<option value='2003'>2003</option>\n<option selected='selected' value='2004'>2004</option>\n<option value='2005'>2005</option>\n<option value='2006'>2006</option>\n<option value='2007'>2007</option>\n<option value='2008'>2008</option>\n<option value='2009'>2009</option>\n</select>\n"
1052
+ expected << "<select id='post_updated_at_2i' name='post[updated_at(2i)]'>\n<option value='1'>January</option>\n<option value='2'>February</option>\n<option value='3'>March</option>\n<option value='4'>April</option>\n<option value='5'>May</option>\n<option selected='selected' value='6'>June</option>\n<option value='7'>July</option>\n<option value='8'>August</option>\n<option value='9'>September</option>\n<option value='10'>October</option>\n<option value='11'>November</option>\n<option value='12'>December</option>\n</select>\n"
1053
+ expected << "<select id='post_updated_at_3i' name='post[updated_at(3i)]'>\n<option value='1'>1</option>\n<option value='2'>2</option>\n<option value='3'>3</option>\n<option value='4'>4</option>\n<option value='5'>5</option>\n<option value='6'>6</option>\n<option value='7'>7</option>\n<option value='8'>8</option>\n<option value='9'>9</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option selected='selected' value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n</select>\n"
1054
+ expected << " &mdash; <select id='post_updated_at_4i' name='post[updated_at(4i)]'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option selected='selected' value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n</select>\n"
1055
+ expected << " : <select id='post_updated_at_5i' name='post[updated_at(5i)]'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n<option value='32'>32</option>\n<option value='33'>33</option>\n<option value='34'>34</option>\n<option selected='selected' value='35'>35</option>\n<option value='36'>36</option>\n<option value='37'>37</option>\n<option value='38'>38</option>\n<option value='39'>39</option>\n<option value='40'>40</option>\n<option value='41'>41</option>\n<option value='42'>42</option>\n<option value='43'>43</option>\n<option value='44'>44</option>\n<option value='45'>45</option>\n<option value='46'>46</option>\n<option value='47'>47</option>\n<option value='48'>48</option>\n<option value='49'>49</option>\n<option value='50'>50</option>\n<option value='51'>51</option>\n<option value='52'>52</option>\n<option value='53'>53</option>\n<option value='54'>54</option>\n<option value='55'>55</option>\n<option value='56'>56</option>\n<option value='57'>57</option>\n<option value='58'>58</option>\n<option value='59'>59</option>\n</select>\n"
1056
+
1057
+ assert_dom_equal(expected, _erbout)
1058
+ end
1059
+
1060
+ def test_date_select_with_zero_value_and_no_start_year
1061
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1062
+ (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1063
+ expected << "</select>\n"
1064
+
1065
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1066
+ 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)
1067
+ expected << "</select>\n"
1068
+
1069
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1070
+ expected <<
1071
+ %(<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)
1072
+ expected << "</select>\n"
1073
+
1074
+ assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
1075
+ end
1076
+
1077
+ def test_date_select_with_zero_value_and_no_end_year
1078
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1079
+ last_year = Time.now.year + 5
1080
+ 2003.upto(last_year) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1081
+ expected << "</select>\n"
1082
+
1083
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1084
+ 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)
1085
+ expected << "</select>\n"
1086
+
1087
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1088
+ expected <<
1089
+ %(<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)
1090
+ expected << "</select>\n"
1091
+
1092
+ assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
1093
+ end
1094
+
1095
+ def test_date_select_with_zero_value_and_no_start_and_end_year
1096
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1097
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1098
+ expected << "</select>\n"
1099
+
1100
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1101
+ 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)
1102
+ expected << "</select>\n"
1103
+
1104
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1105
+ expected <<
1106
+ %(<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)
1107
+ expected << "</select>\n"
1108
+
1109
+ assert_equal expected, select_date(0, :prefix => "date[first]")
1110
+ end
1111
+
1112
+ def test_date_select_with_nil_value_and_no_start_and_end_year
1113
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1114
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1115
+ expected << "</select>\n"
1116
+
1117
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1118
+ 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)
1119
+ expected << "</select>\n"
1120
+
1121
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1122
+ expected <<
1123
+ %(<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)
1124
+ expected << "</select>\n"
1125
+
1126
+ assert_equal expected, select_date(nil, :prefix => "date[first]")
1127
+ end
1128
+
1129
+ def test_datetime_select_with_nil_value_and_no_start_and_end_year
1130
+ expected = %(<select id="date_first_year" name="date[first][year]">\n)
1131
+ (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }
1132
+ expected << "</select>\n"
1133
+
1134
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1135
+ 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)
1136
+ expected << "</select>\n"
1137
+
1138
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1139
+ expected <<
1140
+ %(<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)
1141
+ expected << "</select>\n"
1142
+
1143
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1144
+ 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)
1145
+ expected << "</select>\n"
1146
+
1147
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1148
+ 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)
1149
+ expected << "</select>\n"
1150
+
1151
+ assert_equal expected, select_datetime(nil, :prefix => "date[first]")
1152
+ end
1153
+
1154
+
1155
+ def test_datetime_select_with_options_index
1156
+ @post = Post.new
1157
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1158
+ id = 456
1159
+
1160
+ expected = %{<select id="post_456_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
1161
+ 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}
1162
+ expected << "</select>\n"
1163
+
1164
+ expected << %{<select id="post_456_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
1165
+ 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}
1166
+ expected << "</select>\n"
1167
+
1168
+ expected << %{<select id="post_456_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
1169
+ 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}
1170
+ expected << "</select>\n"
1171
+
1172
+ expected << " &mdash; "
1173
+
1174
+ expected << %{<select id="post_456_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
1175
+ 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}
1176
+ expected << "</select>\n"
1177
+ expected << " : "
1178
+ expected << %{<select id="post_456_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
1179
+ 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}
1180
+ expected << "</select>\n"
1181
+
1182
+ assert_equal expected, datetime_select("post", "updated_at", :index => id)
1183
+ end
1184
+
1185
+ def test_datetime_select_with_auto_index
1186
+ @post = Post.new
1187
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
1188
+ id = @post.id
1189
+
1190
+ expected = %{<select id="post_123_updated_at_1i" name="post[#{id}][updated_at(1i)]">\n}
1191
+ 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}
1192
+ expected << "</select>\n"
1193
+
1194
+ expected << %{<select id="post_123_updated_at_2i" name="post[#{id}][updated_at(2i)]">\n}
1195
+ 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}
1196
+ expected << "</select>\n"
1197
+
1198
+ expected << %{<select id="post_123_updated_at_3i" name="post[#{id}][updated_at(3i)]">\n}
1199
+ 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}
1200
+ expected << "</select>\n"
1201
+
1202
+ expected << " &mdash; "
1203
+
1204
+ expected << %{<select id="post_123_updated_at_4i" name="post[#{id}][updated_at(4i)]">\n}
1205
+ 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}
1206
+ expected << "</select>\n"
1207
+ expected << " : "
1208
+ expected << %{<select id="post_123_updated_at_5i" name="post[#{id}][updated_at(5i)]">\n}
1209
+ 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}
1210
+ expected << "</select>\n"
1211
+
1212
+ assert_equal expected, datetime_select("post[]", "updated_at")
1213
+ end
1214
+
1215
+ def test_datetime_select_with_seconds
1216
+ @post = Post.new
1217
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1218
+
1219
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1220
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1221
+ expected << "</select>\n"
1222
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1223
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1224
+ expected << "</select>\n"
1225
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1226
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1227
+ expected << "</select>\n"
1228
+
1229
+ expected << " &mdash; "
1230
+
1231
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1232
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1233
+ expected << "</select>\n"
1234
+ expected << " : "
1235
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1236
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1237
+ expected << "</select>\n"
1238
+ expected << " : "
1239
+ expected << %{<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n}
1240
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 35}>#{leading_zero_on_single_digits(i)}</option>\n) }
1241
+ expected << "</select>\n"
1242
+
1243
+ assert_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
1244
+ end
1245
+
1246
+ def test_datetime_select_discard_year
1247
+ @post = Post.new
1248
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1249
+
1250
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1251
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1252
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1253
+ expected << "</select>\n"
1254
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1255
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1256
+ expected << "</select>\n"
1257
+
1258
+ expected << " &mdash; "
1259
+
1260
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1261
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1262
+ expected << "</select>\n"
1263
+ expected << " : "
1264
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1265
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1266
+ expected << "</select>\n"
1267
+
1268
+ assert_equal expected, datetime_select("post", "updated_at", :discard_year => true)
1269
+ end
1270
+
1271
+ def test_datetime_select_discard_month
1272
+ @post = Post.new
1273
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1274
+
1275
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1276
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1277
+ expected << "</select>\n"
1278
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
1279
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
1280
+
1281
+ expected << " &mdash; "
1282
+
1283
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1284
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1285
+ expected << "</select>\n"
1286
+ expected << " : "
1287
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1288
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1289
+ expected << "</select>\n"
1290
+
1291
+ assert_equal expected, datetime_select("post", "updated_at", :discard_month => true)
1292
+ end
1293
+
1294
+ def test_datetime_select_discard_year_and_month
1295
+ @post = Post.new
1296
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1297
+
1298
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1299
+ expected << %{<input type="hidden" id="post_updated_at_2i" name="post[updated_at(2i)]" value="6" />\n}
1300
+ expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
1301
+
1302
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1303
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1304
+ expected << "</select>\n"
1305
+ expected << " : "
1306
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1307
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1308
+ expected << "</select>\n"
1309
+
1310
+ assert_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
1311
+ end
1312
+
1313
+ def test_datetime_select_invalid_order
1314
+ @post = Post.new
1315
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1316
+
1317
+ expected = %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1318
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1319
+ expected << "</select>\n"
1320
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1321
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1322
+ expected << "</select>\n"
1323
+ expected << %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1324
+ 1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
1325
+ expected << "</select>\n"
1326
+
1327
+ expected << " &mdash; "
1328
+
1329
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1330
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1331
+ expected << "</select>\n"
1332
+ expected << " : "
1333
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1334
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1335
+ expected << "</select>\n"
1336
+
1337
+ assert_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
1338
+ end
1339
+
1340
+ def test_datetime_select_discard_with_order
1341
+ @post = Post.new
1342
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
1343
+
1344
+ expected = %{<input type="hidden" id="post_updated_at_1i" name="post[updated_at(1i)]" value="2004" />\n}
1345
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1346
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
1347
+ expected << "</select>\n"
1348
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1349
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
1350
+ expected << "</select>\n"
1351
+
1352
+ expected << " &mdash; "
1353
+
1354
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1355
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1356
+ expected << "</select>\n"
1357
+ expected << " : "
1358
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1359
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1360
+ expected << "</select>\n"
1361
+
1362
+ assert_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
1363
+ end
1364
+
1365
+ def test_datetime_select_with_default_value_as_time
1366
+ @post = Post.new
1367
+ @post.updated_at = nil
1368
+
1369
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1370
+ 2001.upto(2011) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2006}>#{i}</option>\n) }
1371
+ expected << "</select>\n"
1372
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1373
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 9}>#{Date::MONTHNAMES[i]}</option>\n) }
1374
+ expected << "</select>\n"
1375
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1376
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 19}>#{i}</option>\n) }
1377
+ expected << "</select>\n"
1378
+
1379
+ expected << " &mdash; "
1380
+
1381
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1382
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 15}>#{leading_zero_on_single_digits(i)}</option>\n) }
1383
+ expected << "</select>\n"
1384
+ expected << " : "
1385
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1386
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 16}>#{leading_zero_on_single_digits(i)}</option>\n) }
1387
+ expected << "</select>\n"
1388
+
1389
+ assert_equal expected, datetime_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35))
1390
+ end
1391
+
1392
+ def test_include_blank_overrides_default_option
1393
+ @post = Post.new
1394
+ @post.updated_at = nil
1395
+
1396
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1397
+ expected << %(<option value=""></option>\n)
1398
+ 2002.upto(2012) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1399
+ expected << "</select>\n"
1400
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1401
+ expected << %(<option value=""></option>\n)
1402
+ 1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
1403
+ expected << "</select>\n"
1404
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1405
+ expected << %(<option value=""></option>\n)
1406
+ 1.upto(31) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
1407
+ expected << "</select>\n"
1408
+
1409
+ assert_equal expected, date_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true)
1410
+ end
1411
+
1412
+ def test_datetime_select_with_default_value_as_hash
1413
+ @post = Post.new
1414
+ @post.updated_at = nil
1415
+
1416
+ expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
1417
+ (Time.now.year - 5).upto(Time.now.year + 5) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.year}>#{i}</option>\n) }
1418
+ expected << "</select>\n"
1419
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
1420
+ 1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 10}>#{Date::MONTHNAMES[i]}</option>\n) }
1421
+ expected << "</select>\n"
1422
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
1423
+ 1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == Time.now.day}>#{i}</option>\n) }
1424
+ expected << "</select>\n"
1425
+
1426
+ expected << " &mdash; "
1427
+
1428
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
1429
+ 0.upto(23) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 9}>#{leading_zero_on_single_digits(i)}</option>\n) }
1430
+ expected << "</select>\n"
1431
+ expected << " : "
1432
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
1433
+ 0.upto(59) { |i| expected << %(<option value="#{leading_zero_on_single_digits(i)}"#{' selected="selected"' if i == 42}>#{leading_zero_on_single_digits(i)}</option>\n) }
1434
+ expected << "</select>\n"
1435
+
1436
+ assert_equal expected, datetime_select("post", "updated_at", :default => { :month => 10, :minute => 42, :hour => 9 })
1437
+ end
1438
+ end